Han*_*sky 4 jsf jakarta-mail jakarta-ee
以前从未使用过 Java 邮件。
在我的 JSF Web 应用程序中,我有一个具有与实体对应(followUp)的属性private Date checkDate;的Animal实体。(一个动物有很多后续记录)。除此以外:
用户必须每 3 个月创建一个新记录 {followUp}并将其标记为已检查并提供其操作的日期,即“checkDate”。但由于用户太懒了,他只为少数动物这样做。因此,他实际上希望通过电子邮件提醒超过 3 个月未检查的动物。示例:我followUp在 2011 年 1 月 1 日为动物“A”创建了一条记录,然后大约在 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();
}
}
Run Code Online (Sandbox Code Playgroud)
为此,我应该创建一个 Servlet 过滤器、一个监听器、一个应用程序范围的支持 bean 吗?一个在followUp记录上循环并返回最后一条记录的 checkDate 并将其与今天日期进行比较的查询?
任何帮助都可以。问候。
根据您的问题历史,我知道您使用的是 Glassfish 3(带有 EJB 3.1 的 Java EE 6),所以我建议创建一个@SingletonEJB,其@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.
}
}
Run Code Online (Sandbox Code Playgroud)
就是这样。无需进一步配置。出于测试目的,您可以使用
@Schedule(hour="*", minute="*/1", second="0", persistent=false)
Run Code Online (Sandbox Code Playgroud)
让它每分钟运行一次。
| 归档时间: |
|
| 查看次数: |
4051 次 |
| 最近记录: |