我有一个简单的Web应用程序,不同的用户可以在其中登录。重要功能之一是用户可以访问文档,并将其内容的电子邮件发送给第三方等外部人员。以下是该电子邮件的想法:
这很容易解释,如果要在显示的字段框中像abc@example.com,efg@hotmail.com,...
一样发送给多个用户。所有这些,我使用Java Mail API使其起作用,并点击了send按钮,它直接发送给收件人。根本没有问题。
现在,我想通过将此电子邮件功能作为服务来进行修改。这意味着当我发送电子邮件时,填写的内容和信息将存储在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());
}
}
因为我不确定如何使它工作,所以可以按照我想要的方式进行吗?
答案 0 :(得分:1)
1)从用户界面点击“发送邮件”按钮后,您需要调用一种方法,用于将收件人,主题,内容等数据保存在数据库中
2)编写电子邮件发件人服务,该服务从数据库表中检索未送达/待处理邮件,并通过Java Mail API进行发送
3)借助ScheduledExecutorService计划的电子邮件发件人服务