繁体   English   中英

java-如何使用服务发送电子邮件?

[英]java- How to use services for sending email?

我有一个简单的 Web 应用程序,不同的用户可以在其中登录。 重要的功能之一是用户可以访问文档并将其内容的电子邮件发送给第三方等外部人员。 以下是电子邮件的外观提供了一个想法:

在此处输入图片说明

这是非常不言自明的,如果我想要abc@example.com,efg@hotmail.com,...在显示的字段框中,我可以发送给多个用户abc@example.com,efg@hotmail.com,...所有这些,我使用 Java Mail API 使其工作点击发送按钮后,它直接发送给收件人。完全没有问题。

现在,我想通过将此电子邮件功能作为服务来修改它。这意味着当我发送电子邮件时,填写的内容和信息将存储在 MYSQL 的表中,服务(在后台运行)将选择从桌子上起来并发送。

这是我的功能:

public void sendEmail(String recipient, String subject, String content,
                      String host, String port, final String senderaddress, 
                      final String password) {
    try {
        System.out.println("Please Wait, sending email...");

        /*Setup mail server */
        Properties props = new Properties();
        props.put("mail.smtp.host", host); //SMTP Host
        props.put("mail.smtp.port", port); //TLS Port
        props.put("mail.smtp.auth", "true"); //enable authentication
        props.put("mail.smtp.starttls.enable", "true"); //enable STARTTLS
        //create Authenticator object to pass in Session.getInstance argument
        Authenticator auth = new Authenticator() {
            //override the getPasswordAuthentication method
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(senderaddress, password);
            }
        };
        Session session = Session.getInstance(props, auth);
        session.setDebug(true);

        // Define message
        MimeMessage message = new MimeMessage(session);
        // Set From: header field of the header.
        message.setFrom(new InternetAddress(senderaddress));
        message.addRecipients(Message.RecipientType.TO,
                              InternetAddress.parse(recipient));
        // Set Subject: header field
        message.setSubject(subject);

        // Now set the actual message
        message.setText(content);
        try {
            Transport.send(message);
        } catch (AddressException addressException) {
            addressException.printStackTrace();
        }
    } catch (Exception e) {
        System.out.println(e.getMessage());
    }
}

这是否可以按照我想要的方式完成,因为我不确定如何使其工作?

1 ) 从用户界面点击发送邮件按钮后,您需要调用一个方法来保存数据库中的收件人、主题、内容等数据

2)编写一个电子邮件发件人服务,它从数据库表中检索未交付/待处理的邮件,并通过 Java 邮件 API 发送它

3) 在 ScheduledExecutorService 的帮助下安排电子邮件发件人服务

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM