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

网友投稿 282 2023-06-02


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

在做具体的系统管理时,往往会有每隔一段时间发给用户一些邮件的业务,现在参考的网上的大部分代码,写下了我自己的代码。

在ApplicationContext.xml的内容如下:

xmlns="http://springframework.org/schema/beans"

xmlns:aop="http://springframework.org/schema/aop"

xmlns:tx="http://springframework.org/schema/tx"

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xmlns:p="http://springframework.org/schema/p"

xsi:schemaLocation="http://springframework.org/schema/beans

http://springframework.org/schema/beans/spring-beans-3.1.xsd

http://springframework.org/schema/aop

http://springframework.org/schema/aop/spring-aop-3.1.xsd

http://springframework.org/schema/tx

http://springframework.org/schema/tx/spring-tx-3.1.xsd ">

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

sendEmail

false

0 0 10 1 * ?

xmlns="http://springframework.org/schema/beans"

xmlns:aop="http://springframework.org/schema/aop"

xmlns:tx="http://springframework.org/schema/tx"

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xmlns:p="http://springframework.org/schema/p"

xsi:schemaLocation="http://springframework.org/schema/beans

http://springframework.org/schema/beans/spring-beans-3.1.xsd

http://springframework.org/schema/aop

http://springframework.org/schema/aop/spring-aop-3.1.xsd

http://springframework.org/schema/tx

http://springframework.org/schema/tx/spring-tx-3.1.xsd ">

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

sendEmail

false

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

sendEmail

false

0 0 10 1 * ?

至于方法如下:

package com.zhuyun.net;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.FileWriter;

import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.io.OutputStream;

import java.io.OutputStreamWriter;

import java.io.Writer;

import java.sql.SQLException;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Calendar;

import java.util.Date;

import java.util.List;

import java.util.Properties;

import javax.activation.DataHandler;

import javax.activation.DataSource;

import javax.activation.FileDataSource;

import javax.mail.BodyPart;

import javax.mail.Message;

import javax.mail.Multipart;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeBodyPart;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeMultipart;

public class AttachmentEmailUtil {

private String host = ""; // smtp服务器

private String from = ""; // 发件人地址

private String to = ""; // 收件人地址

private String affix = ""; // 附件地址

private String affixName = ""; // 附件名称

private String user = ""; // 用户名

private String pwd = ""; // 密码

private String subject = ""; // 邮件标题

public void setAddress(String from, String to, String subject) {

this.from = from;

this.to = to;

thhttp://is.subject = subject;

}

public void sehttp://tAffix(String affix, String affixName) {

this.affix = affix;

this.affixName = affixName;

}

public void send(String host, String user, String pwd) {

this.host = host;

this.user = user;

this.pwd = pwd;

Properties props = new Properties();

// 设置发送邮件的邮件服务器的属性(这里使用网易的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 = new MimeMessage(session);

try {

// 加载发件人地址

message.setFrom(new InternetAddress(from));

// 加载收件人地址

message.addRecipient(Message.RecipientType.TO, new InternetAddress(

to));

// 加载标题

message.setSubject(subject);

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

Multipart multipart = new MimeMultipart();

// 设置邮件的文本内容

BodyPart contentPart = new MimeBodyPart();

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

multipart.addBodyPart(contentPart);

// 添加附件

BodyPart messageBodyPart = new MimeBodyPart();

DataSource source = new FileDataSource(affix);

// 添加附件的内容

messageBodyPart.setDataHandler(new DataHandler(source));

// 添加附件的标题

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

sun.misc.BASE64Encoder enc = new sun.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();

}

}

public void sendEmail() {

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

if (!file.exists()) {

try {

file.createNewFile();

} catch (IOEhttp://xception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

String pushInfoContent = "成功了";

FileWriter writer = null;

try {

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

writer = new FileWriter(file, true);

writer.write(pushInfoContent + "\r\n");

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

if (writer != null) {

writer.close();

}

} catch (IOException e) {

e.printStackTrace();

}

}

AttachmentEmailUtil cn = new AttachmentEmailUtil();

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

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

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

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

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

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

if (file.exists()) {

file.delete();

}

}

}

大概就是这样子了。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:List调用toString()方法后,去除两头的中括号实例
下一篇:微信小程序 页面跳转及数据传递详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~