如何从jsp/servlet发送电子邮件?

mih*_*iya 8 java jsp servlets

如何从JSP/servlet发送电子邮件?是否有必要下载一些罐子,或者你可以在没有任何罐子的情况下从JSP/servlet发送电子邮件吗?

  • 我的Java代码会是什么样的?

  • 我的HTML代码会是什么样的(如果有的话)?

  • 是否需要多个类,或者您只使用一个类?

Bal*_*usC 23

邮件程序逻辑应该放在它自己的独立类中,您可以在任何地方重用它.JSP文件应仅包含表示逻辑和标记.Servlet类应该以适当的方式处理请求并调用邮件程序类.以下是您需要采取的步骤:

  1. 首先确定您要使用哪个SMTP服务器,以便能够发送电子邮件.你的ISP之一?Gmail之一?雅虎?网站托管服务商?一个自我维护的?无论如何,请确定此SMTP服务器的主机名,端口,用户名和密码.您将需要此信息.


  2. 创建一个普通的vanilla Java类,它使用JavaMail API发送邮件消息.JavaMail API附带了一个很好的教程FAQ.为类命名Mailer并给它一个send()方法(或任何你想要的).使用一些测试器类使用如下main()方法测试它:

    public class TestMail {
        public static void main(String... args) throws Exception {
            // Create mailer.
            String hostname = "smtp.example.com";
            int port = 2525;
            String username = "nobody";
            String password = "idonttellyou";
            Mailer mailer = new Mailer(hostname, port, username, password);
    
            // Send mail.
            String from = "john.doe@example.com";
            String to = "jane.doe@example.com";
            String subject = "Interesting news";
            String message = "I've got JavaMail to work!";
            mailer.send(from, to, subject, message);
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    您可以根据需要将其设置为简单或高级.没关系,只要你有一个类,你可以发送这样的邮件.


  3. 现在是JSP部分,你提到JSP的原因并不完全清楚,但是由于JSP 应该只代表HTML,我敢打赌你希望在JSP中有类似联系表单的东西.这是一个启动示例:

    <form action="contact" method="post">
        <p>Your email address: <input name="email"></p>
        <p>Mail subject: <input name="subject"></p>
        <p>Mail message: <textarea name="message"></textarea></p>
        <p><input type="submit"><span class="message">${message}</span></p>
    </form>
    
    Run Code Online (Sandbox Code Playgroud)

    是的,简单,只需标记/样式就可以了.


  4. 现在,创建一个Servlet类侦听上url-pattern/contact(相同的形式被提交给)和实施doPost()方法(相同的方法,使用的形式)如下:

    public class ContactServlet extends HttpServlet {
        private Mailer mailer;
        private String to;
    
        public void init() {
            // Create mailer. You could eventually obtain the settings as
            // web.xml init parameters or from some properties file.
            String hostname = "smtp.example.com";
            int port = 2525;
            String username = "nobody";
            String password = "forgetit";
            this.mailer = new Mailer(hostname, port, username, password);
            this.to = "you@example.com";
        }
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            String email = request.getParameter("email");
            String subject = request.getParameter("subject");
            String message = request.getParameter("message");
            // Do some validations and then send mail:
    
            try {
                mailer.send(email, to, subject, message);
                request.setAttribute("message", "Mail succesfully sent!");
                request.getRequestDispatcher("/WEB-INF/contact.jsp").forward(request, response);
            } catch (MailException e) {
                throw new ServletException("Mailer failed", e);
            }
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    而已.保持简单和干净.每件事都有其明确的责任.


pra*_*ani 4

您可以从 jsp 或 servlet 发送邮件,就像我们使用 java mail api 从类文件发送邮件一样。这是可以帮助您的链接:

http://www.java-samples.com/showtutorial.php?tutorialid=675