Spring+quartz实现定时发送邮件功能实例

作者:袖梨 2022-06-25

在ApplicationContext.xml的内容如下:

代码如下 复制代码

xmlns="http://www.spri*ngfram*ew*ork.org/schema/beans"

xmlns:aop="http://www.s*pr*in*gframework.org/schema/aop"

xmlns:tx="http://www.spr*in*gf*ramework.org/schema/tx"

xmlns:xsi="http://www.**w*3.org/2001/XMLSchema-instance"

xmlns:p="http://www.*s*pr*ingframework.org/schema/p"

xsi:schemaLocation="http://www.spri*ngfram*ew*ork.org/schema/beans

http://www.spri*ngfram*ew*ork.org/schema/beans/spring-beans-3.1.xsd

http://www.s*pr*in*gframework.org/schema/aop

http://www.s*pr*in*gframework.org/schema/aop/spring-aop-3.1.xsd

http://www.spr*in*gf*ramework.org/schema/tx

http://www.spr*in*gf*ramework.org/schema/tx/spring-tx-3.1.xsd ">

class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">

sendEmail

false

0 0 10 1 * ?

至于方法如下:

代码如下 复制代码

packagecom.zhuyun.net;

importjava.io.BufferedWriter;

importjava.io.File;

importjava.io.FileNotFoundException;

importjava.io.FileOutputStream;

importjava.io.FileWriter;

importjava.io.IOException;

importjava.io.ObjectInputStream;

importjava.io.ObjectOutputStream;

importjava.io.OutputStream;

importjava.io.OutputStreamWriter;

importjava.io.Writer;

importjava.sql.SQLException;

importjava.text.SimpleDateFormat;

importjava.util.ArrayList;

importjava.util.Calendar;

importjava.util.Date;

importjava.util.List;

importjava.util.Properties;

importjavax.activation.DataHandler;

importjavax.activation.DataSource;

importjavax.activation.FileDataSource;

importjavax.mail.BodyPart;

importjavax.mail.Message;

importjavax.mail.Multipart;

importjavax.mail.Session;

importjavax.mail.Transport;

importjavax.mail.internet.InternetAddress;

importjavax.mail.internet.MimeBodyPart;

importjavax.mail.internet.MimeMessage;

importjavax.mail.internet.MimeMultipart;

publicclassAttachmentEmailUtil {

privateString host ="";// smtp服务器

privateString from ="";// 发件人地址

privateString to ="";// 收件人地址

privateString affix ="";// 附件地址

privateString affixName ="";// 附件名称

privateString user ="";// 用户名

privateString pwd ="";// 密码

privateString subject ="";// 邮件标题

publicvoidsetAddress(String from, String to, String subject) {

this.from = from;

this.to = to;

this.subject = subject;

}

publicvoidsetAffix(String affix, String affixName) {

this.affix = affix;

this.affixName = affixName;

}

publicvoidsend(String host, String user, String pwd) {

this.host = host;

this.user = user;

this.pwd = pwd;

Properties props =newProperties();

// 设置发送邮件的邮件服务器的属性(这里使用网易的smtp服务器)

props.put("mail.smtp.host", host);

// 需要经过授权,也就是有户名和密码的校验,这样才能通过验证

props.put("mail.smtp.auth","true");

props.put("mail.smtp.port",465);

props.put("mail.smtp.ssl.enable",true);

// 用刚刚设置好的props对象构建一个session

Session session = Session.getDefaultInstance(props);

// 有了这句便可以在发送邮件的过程中在console处显示过程信息,供调试使

// 用(你可以在控制台(console)上看到发送邮件的过程)

session.setDebug(true);

// 用session为参数定义消息对象

MimeMessage message =newMimeMessage(session);

try{

// 加载发件人地址

message.setFrom(newInternetAddress(from));

// 加载收件人地址

message.addRecipient(Message.RecipientType.TO,newInternetAddress(

to));

// 加载标题

message.setSubject(subject);

// 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件

Multipart multipart =newMimeMultipart();

// 设置邮件的文本内容

BodyPart contentPart =newMimeBodyPart();

contentPart.setText("第二种方法・・・");

multipart.addBodyPart(contentPart);

// 添加附件

BodyPart messageBodyPart =newMimeBodyPart();

DataSource source =newFileDataSource(affix);

// 添加附件的内容

messageBodyPart.setDataHandler(newDataHandler(source));

// 添加附件的标题

// 这里很重要,通过下面的Base64编码的转换可以保证你的中文附件标题名在发送时不会变成乱码

sun.misc.BASE64Encoder enc =newsun.misc.BASE64Encoder();

messageBodyPart.setFileName("=?GBK?B?"

+ enc.encode(affixName.getBytes()) +"?=");

multipart.addBodyPart(messageBodyPart);

// 将multipart对象放到message中

message.setContent(multipart);

// 保存邮件

message.saveChanges();

// 发送邮件

Transport transport = session.getTransport("smtp");

// 连接服务器的邮箱

transport.connect(host, user, pwd);

// 把邮件发送出去

transport.sendMessage(message, message.getAllRecipients());

transport.close();

}catch(Exception e) {

e.printStackTrace();

}

}

publicvoidsendEmail() {

File file =newFile("/root/EmailFile/content.csv");

if(!file.exists()) {

try{

file.createNewFile();

}catch(IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

String pushInfoContent ="成功了";

FileWriter writer =null;

try{

// 打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件

writer =newFileWriter(file,true);

writer.write(pushInfoContent +"rn");

}catch(IOException e) {

e.printStackTrace();

}finally{

try{

if(writer !=null) {

writer.close();

}

}catch(IOException e) {

e.printStackTrace();

}

}

AttachmentEmailUtil cn =newAttachmentEmailUtil();

// 设置发件人地址、收件人地址和邮件标题

cn.setAddress("发件人地址","收件人地址","一个带附件的JavaMail邮件(标题)");

// 设置要发送附件的位置和标题

cn.setAffix("附件的位置","附件的文件名");

// 设置smtp服务器以及邮箱的帐号和密码

cn.send("smtp.qq.com","帐号","密码");

if(file.exists()) {

file.delete();

}

}

}

大概就是这样子了。

相关文章

精彩推荐