当前位置 : 主页 > 编程语言 > java >

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

来源:互联网 收集:自由互联 发布时间:2021-06-25
如何从JSP / servlet发送电子邮件?是否有必要下载一些罐子,或者你可以在没有任何罐子的情况下从JSP / servlet发送电子邮件吗? 我的Java代码会是什么样的? 我的HTML代码会是什么样的(如
如何从JSP / servlet发送电子邮件?是否有必要下载一些罐子,或者你可以在没有任何罐子的情况下从JSP / servlet发送电子邮件吗?

>我的Java代码会是什么样的?
>我的HTML代码会是什么样的(如果有的话)?
>是否需要多个班级,或者您只使用一个班级?

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

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

>创建一个普通的vanilla Java类,它使用JavaMail API发送邮件消息. JavaMail API附带了一个优秀的tutorial和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);
    }
}

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

>现在是JSP的一部分,你提到JSP的原因并不完全清楚,但由于JSP是supposed只代表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>

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

>现在,创建一个Servlet类,它侦听/ contact的url-pattern(与表单提交的相同)并实现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);
        }
    }
}

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

网友评论