gpt4 book ai didi

jsf - Java邮件如何根据条件自动发送电子邮件

转载 作者:行者123 更新时间:2023-12-02 15:34:54 25 4
gpt4 key购买 nike

以前从未使用过 Java 邮件。

在我的 JSF Web 应用程序中,我有一个实体 (followUp),其属性 private Date checkDate; 对应于 Animal 实体。 (一个动物有很多后续记录)。否则:

用户必须每 3 个月在 {followUp} 中创建一条新记录,并将其标记为已检查,并提供其操作日期“checkDate”。但由于用户太懒了,他只对少数动物这样做。因此,他实际上希望通过电子邮件提醒超过 3 个月未检查的动物。示例:我于 2011 年 1 月 1 日为动物“A”创建了一条 followUp 记录,然后大约在 2011 年 1 月 4 日,用户收到一封电子邮件,提醒他去检查动物 B 的后续情况。

Web 应用程序正在本地企业网络上运行。

我所知道的就是这个片段:

import javax.mail.*;
import javax.mail.internet.*;

import java.util.Properties;

class SimpleMail {
public static void main(String[] args) throws Exception{
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.host", "mymail.server.org");
props.setProperty("mail.user", "emailuser");
props.setProperty("mail.password", "");

Session mailSession = Session.getDefaultInstance(props, null);
Transport transport = mailSession.getTransport();

MimeMessage message = new MimeMessage(mailSession);
message.setSubject("Testing javamail plain");
message.setContent("This is a test", "text/plain");
message.addRecipient(Message.RecipientType.TO,
new InternetAddress("elvis@presley.org"));

transport.connect();
transport.sendMessage(message,
message.getRecipients(Message.RecipientType.TO));
transport.close();
}
}

我应该为此目的创建一个 Servlet 过滤器、一个监听器、一个应用程序范围的支持 bean 吗?查询在 followUp 记录上循环并返回最后一条记录的 checkDate 并将其与今天的日期进行比较?

任何帮助都可以。问候。

最佳答案

根据您的问题历史记录,我知道您正在使用 Glassfish 3(带有 EJB 3.1 的 Java EE 6),因此我建议创建一个 @Singleton EJB 与 @Schedule方法以指定的时间间隔在后台执行,例如每天午夜 (00:00:00)。

@Singleton
public class MailReminder {

@Schedule(hour="0", minute="0", second="0", persistent=false)
public void run() {
// Do your check and mail job here.
}

}

就是这样。无需进一步配置。出于测试目的,您可以使用

    @Schedule(hour="*", minute="*/1", second="0", persistent=false)

让它每分钟运行一次。

另请参阅:

关于jsf - Java邮件如何根据条件自动发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6493959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com