本篇文章给大家谈谈javajob定时发送邮件,以及java发送邮件附件对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
1、java怎么定时发送邮件,比如5分钟后。要具体的代码。发件人和收件人这些都可定死。2、关于java定时发送邮件,类似于QQ邮箱中的定时发送功能3、java 指定某个时间发送邮件4、关于java定时任务,一次发了两封邮件5、怎样用JavaMail实现邮件的自动回复和定时发送6、如何实现每天定时发送邮件?
java怎么定时发送邮件,比如5分钟后。要具体的代码。发件人和收件人这些都可定死。
import java.util.*;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetBddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.naming.*;
import javax.naming.directory.*;
/**
* 使成为事实邮件的特快专递功能
* @author Winter Lau
*/
public class Mailer {
public static void main(String[] args) throws NamingException,
MessagingException {
// 列出所有邮件服务器:
Timer timer = new Timer();
timer.schedule(new myTask(), 30000);
}
static class myTask extends TimerTask{
public void run(){
// DNS服务器,看看本机的DNS配置
String dns = “dns://61.144.56.101”;
String email = “liudong@mo168.com”;
String domain = email.substring(email.indexOf(‘@’) + 1);
Hashtable env = new Hashtable();
env.put(Dontext.INITIBL_DONTEXT_FBDTORY,
“com.sun.jndi.dns.DnsDontextFactory”);
env.put(Dontext.PROVIDER_URL, dns);
DirDontext ctx = new InitialDirDontext(env);
Bttributes attr = ctx.getBttributes(domain, new String[] { “MX” });
NamingEnumeration servers = attr.getBll();
while (servers.hasMore()) {
Bttribute hosts = (Bttribute) servers.next();
for (int i = 0; i hosts.size(); i++) {
String host = (String) hosts.get(i);
host = host.substring(host.indexOf(‘ ‘) + 1);
System.out.print(“Send mail to ” + host + ” …”);
sendMail(host, email);
System.out.println(“OK”);
}
}
}
}
/**
* 发送邮件
*
* @param smtpHost
* @param email
* @throws MessagingException
*/
protected static void sendMail(String smtpHost, String email)
throws MessagingException {
Properties mailProperties = System.getProperties();
mailProperties.put(“mail.smtp.host”, smtpHost);
mailProperties.put(“mail.smtp.port”, “25”);
mailProperties.put(“mail.smtp.auth”, “false”);
Session mailSession = Session.getInstance(mailProperties, null);
MimeMessage mailMessage = new MimeMessage(mailSession);
MimeBodyPart messageBodyPart = new MimeBodyPart();
Multipart multipart = new MimeMultipart(“related”);
messageBodyPart.setText(“这搭是邮件内部实质意义”);
multipart.addBodyPart(messageBodyPart);
mailMessage.setDontent(multipart);
mailMessage.setSentDate(new Date());
mailMessage.setFrom(new InternetBddress(“javayou@gmail.com”));
mailMessage.addRecipient(Message.RecipientType.TO, new InternetBddress(
email));
mailMessage.setSubject(“hi,邮件发送测试”);
Transport.send(mailMessage);
}
@Override
public void run() {
// TODO Auto-generated method stub
}
}
关于java定时发送邮件,类似于QQ邮箱中的定时发送功能
建议方法:
如果你的java会死亡/失去控制, 请用系统的任务调度来发送邮件;
如果你的java由jboss等之类的托管, 用jboss内部的任务调度来发送邮件.
方法1:
Windws 平台, 在task中添加一个 任务, 命令行执行java 代码即可, 这样可靠性由操作系统保证;
Linux等平台, 直接 crontab 处理即可.
java 指定某个时间发送邮件
既然有了定时,其他的就好办啦,像你这个需求,肯定得做很多配置,比如表单该如何自动填写,填写什么样的内容进去,至于发送时间就可以在quartz里面配置好。总之,你想让程序帮你自动完成的功能,你必须事先把需要做的事清楚的告诉程序代码,否则你让它怎么下手呢!
关于java定时任务,一次发了两封邮件
如果是同时发了2封邮件,自己敲个断点出来,看一下变量的赋值以及函数是不是调了2次
怎样用JavaMail实现邮件的自动回复和定时发送
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.CronScheduleBuilder;
2 import org.quartz.JobBuilder;
3 import org.quartz.JobDetail;
4 import org.quartz.Scheduler;
5 import org.quartz.Trigger;
6 import org.quartz.TriggerBuilder;
7 import org.quartz.impl.StdSchedulerFactory;
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(“dummyJobName”, “group1”).build();
16 //为了立即测试,可以使用下面的代码,每隔5秒钟执行一次
17 //int secDelta = 5;
18 //Trigger trigger = TriggerBuilder
19 // .newTrigger()
20 // .withIdentity(“dummyTriggerName”, “group1”)
21 // .withSchedule(
22 // CronScheduleBuilder.cronSchedule(“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(“dummyTriggerName”, “group1”)
31 .withSchedule(
32 CronScheduleBuilder.cronSchedule(secDelta + ” 0 9 ? * SUN-SAT”))
33 .build();
34
35 Scheduler scheduler = new StdSchedulerFactory().getScheduler();
36 scheduler.start();
37 //将触发器与工作关联起来
38 scheduler.scheduleJob(job, trigger);
39 }
40 }
发邮件依赖的包:activation.jar,mail.jar
将发邮件依赖的包和quartz下载得到的lib路径下的jar包全部放在mylib路径下,mylib路径与java文件位于同一个目录。编译和运行时,可以使用命令:
set classpath=mylib/*;.;
javac CronTriggerExample.java
java CronTriggerExample
如何实现每天定时发送邮件?
有时候我们或许会遇到想在某一个时刻给别人发送一封邮件,就像是在生日的时候,但是我们又怕到时候忘记了,这时就应该使用发送定时邮件的功能,定时邮件的具体使用请看下面。
当然首先应该做的就是登陆你的邮箱,这都是最基本的操作了。首先新建一封邮件,填写好你要发送的主题、内容、收件人等信息,然后点击工具栏的“选项按键”。在弹出的对话框中在“传递不早于”前面打上勾,然后在后面的下拉菜单中选择要发送这封邮件日期和时间。最后点击发送按键,这个时候这封信就在你的发件箱中呆着了。接下来将Outlook自动收发信件的功能打开:点击“工具/选项/邮件设置/发送/接受”,将“安排自动发送/接受的时间间隔为”前面打上勾,然后输入一个你希望的间隔时间。这样到了邮件设置的时间后就会自动发送这封提示邮件了。再说一下具体流程:
1登陆邮箱之后按照你的正常步骤来写一封邮件,点击【写信】之后进入你的编辑页面。
2在收件人中输入你所要发送的收件人的邮箱,然后正文部分输入你想要和他说的话,将页3面拉倒最下方你会发现有一个【定时发送】按钮,然后你点击这一个按钮。
4然后就会出现一个让你选择发送时间的小对话框,在里面你选择你要发送的时间,点击【发送】即可。
5如果你发现你的邮件有错误或者是有添加的部分,那么你也不要着急,这封邮件还没有发送出去,你可以到草稿箱里面找到它。
6然后你点击你的邮件进入查看,在里面你可以修改发送时间,也可以将邮件删除在重新编辑一封邮件来发送。
就这样,一封定时邮件就产生了,是不是很简单呢?
关于javajob定时发送邮件和java发送邮件附件的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。