问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎样用JavaMail实现邮件的自动回复和定时发送

发布网友 发布时间:2022-04-29 00:39

我来回答

1个回答

热心网友 时间:2022-06-26 15:04

1 import org.quartz.Job;
2 import org.quartz.JobExecutionContext;
3 import org.quartz.JobExecutionException;
4 import java.util.Calendar;
5 import java.text.SimpleDateFormat;
6 import java.util.Date;
7 import java.lang.InterruptedException;
8 import java.util.Random;
9 import java.util.Properties;
10 import javax.mail.*;
11 import javax.mail.internet.*;
12 public class MailJob implements Job
13 {
14 public void execute(JobExecutionContext context)
15 throws JobExecutionException {
16 //收件人,标题和文本内容
17 String to = "#######@126.com";//填写你要发给谁
18 String title = createTitle();
19 String text = createText();
20 //设置属性
21 Properties props = new Properties();
22 //QQ邮箱发件的服务器和端口
23 props.put("mail.smtp.host", "smtp.qq.com");
24 props.put("mail.smtp.socketFactory.port", "465");
25 props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
26 props.put("mail.smtp.auth", "true");
27 props.put("mail.smtp.port", "25");
28 Session session = Session.getDefaultInstance(props,
29 new javax.mail.Authenticator() {
30 protected PasswordAuthentication getPasswordAuthentication() {
31 //填写你的qq邮箱用户名和密码
32 return new PasswordAuthentication("*******@qq.com", "###***%%%");
33 }
34 });
35 MimeMessage message = new MimeMessage(session);
36 //这里用flag来标记是否发件成功(有时候会连不上服务器),
37 //如果没有,继续发送,直到发送成功为止。
38 int flag = 0;
39 {
40 try {
41       //设置发件人,收件人,主题和文本内容,并发送
42 message.setFrom(new InternetAddress("*******@qq.com"));//填写你自己的qq邮箱,和上面相同
43 message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
44 message.setSubject(title);
45 message.setText(text);
46 System.out.println("Preparing sending mail...");
47 System.out.println(text);
48 Transport.send(message);
49 flag = 1;
50 System.out.println("message sent successfully");
51 } catch(Exception e) {
52 flag = 0;
53 }
54 } while(flag == 0);
55 }
56 //下面的两个方法,用来随机组合标题和文本内容。文本内容由四部分随机组合。
57 //产生标题
58 public String createTitle() {
59 String[] titles = {"love", "I love you", "Miss you", "My baby"};
60 Random randT = new Random(System.currentTimeMillis());
61 String title = titles[randT.nextInt(titles.length)];
62 return title;
63 }
64 //产生文本内容,文本内容由四部分随机组合得到。
65 public String createText() {
66 //名字纯属虚构,如有雷同(肯定会有),纯属巧合。
67 String[] parts1 = {"晓静,你好。", "晓静,你还好吗?", "晓静,你那边天气怎么样?"};
68 String[] parts2 = {
69 "距离上次见面,我感觉已经好长时间了。",
70 "流去的时间磨不去我对你的爱。",
71 "我仍然记得你在天安门前的那一抹笑容。"
72 };
73 String[] parts3 = {"今天,我大胆地追求你。",
74 "我不怕大胆地对你说,我爱你。",
75 "此刻,月亮代表我的心。"
76 };
77 String[] parts4 = {
78 "未来,我的心依旧属于你。",
79 "好想在未来陪你一起慢慢变老,当然在我心中你不会老。"
80 };
81 Random randT = new Random(System.currentTimeMillis());
82 String text = parts1[randT.nextInt(parts1.length)]
83 + parts2[randT.nextInt(parts2.length)]
84 + parts3[randT.nextInt(parts3.length)]
85 + parts4[randT.nextInt(parts4.length)];
86 return text;
87 }
88
89 }
复制代码
触发器的代码:
复制代码
1 import org.quartz.CronScheleBuilder;
2 import org.quartz.JobBuilder;
3 import org.quartz.JobDetail;
4 import org.quartz.Scheler;
5 import org.quartz.Trigger;
6 import org.quartz.TriggerBuilder;
7 import org.quartz.impl.StdSchelerFactory;
8 import java.util.Random;
9 public class CronTriggerExample
10 {
11 public static void main( String[] args ) throws Exception
12 {
13 //创建工作对象
14 JobDetail job = JobBuilder.newJob(MailJob.class)
15 .withIdentity("mmyJobName", "group1").build();
16 //为了立即测试,可以使用下面的代码,每隔5秒钟执行一次
17 //int secDelta = 5;
18 //Trigger trigger = TriggerBuilder
19 // .newTrigger()
20 // .withIdentity("mmyTriggerName", "group1")
21 // .withSchele(
22 // CronScheleBuilder.cronSchele("0/" + secDelta + " * * * * ?"))
23 // .build();
24 //在每天早上的9点多(不超过3分钟)执行
25 Random rand = new Random(System.currentTimeMillis());
26 int secDelta = rand.nextInt(60 * 3);
27 //创建触发器对象
28 Trigger trigger = TriggerBuilder
29 .newTrigger()
30 .withIdentity("mmyTriggerName", "group1")
31 .withSchele(
32 CronScheleBuilder.cronSchele(secDelta + " 0 9 ? * SUN-SAT"))
33 .build();
34
35 Scheler scheler = new StdSchelerFactory().getScheler();
36 scheler.start();
37 //将触发器与工作关联起来
38 scheler.scheleJob(job, trigger);
39 }
40 }

发邮件依赖的包:activation.jar,mail.jar
将发邮件依赖的包和quartz下载得到的lib路径下的jar包全部放在mylib路径下,mylib路径与java文件位于同一个目录。编译和运行时,可以使用命令:
set classpath=mylib/*;.;
javac CronTriggerExample.java
java CronTriggerExample
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
Request对象语法 9,django中request对象 塞尔达传说时之笛火之神殿Boss房间怎么去 ...的圆形地方怎么上去?打完BOSS后才发现没去过,但我 榆中兴隆山旅游路线 ...兴隆山校区到哪个公交车站最近?应该怎么乘公交车?打车的话得多少钱... 从般若寺到兴隆山法院怎么坐公交车,最快需要多久 那些属于国有经济,哪些属于集体经济 ...丢手机,生病,丢工作,怎么转运啊,谁能告诉我,我快疯了 阴历十月又叫什么月 javamail怎样发送邮件 竞争CEO的演讲稿怎么写? javamail 多线程发送邮件发生错发邮件的问题 微信零钱不翼而飞,且零钱明细也看不到记录? javamail群发邮件 急急急,关于javamail发送邮件的问题!请看补充: 为什么我微信零钱里的钱突然少了?零钱明细查不到,帐单查不到 javamail群发邮件问题 爱奇艺vip免费试用2016.9.1 爱奇艺vip账号密码 苏州人才政策 苏州人才引进公司要符合什么标准 苏州吴中区有哪些高中啊 苏州人才引进政策 求苏州市姑苏区教育局的地址和电话号码。急急急! 苏州市人才引进政策 苏州市人才服务中心每周上班时间(干将路的) 苏州园区星汇学校是区重点吗 高邮苏州大学实验学校是小学吗 苏州西交大附中和西交利物浦附中哪个好? 双显卡切换、独立显卡、核心显卡、APU显卡哪一个更好?区别是什么? javamail来发邮件怎么设置优先级 哪里可以找到国外ceo致辞演讲稿(英文的) 当班长的演讲稿 关于成长比成功更重要的演讲稿 昨晚梦见自己口吐白沫快要死了,是什么意思 活佛济公圣僧见皇上在第几部第几集 活佛济公中哪一集写道济治玉帝的病 派派捆绑的支付宝因为换了手机号码,该怎么解除之前的号码呢? 银行卡密码和身份证号被骗了,我换了密码后这张卡还能用吗 手机号码换了,派派提不了现金怎么办? 派派怎么改手机号 派派红包已经认定了手机号,那么怎么解绑手机号 如图:怎么删除,或者 派派是用微信注册的要怎么改成手机号码? 手机和手机号码换了,新手机怎样登以前的派派? 派派提怎么解除微信绑定? 同位角相等两直线平行是公理吗 派派里的金币怎么换钱 ★“公设”与“公理”区别何在?★ 手机和手机号码换了,新手机怎样登以前的派派 派派怎么取消提现绑定的微信绑定