package com.common.util.mail;
import java.io.UnsupportedEncodingException;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* 邮件发送实现类
*
* @date 2014年4月26日 上午10:16:34
* @author 曹志飞
* @Description:
* @project mailUtil
*/
public class MailSender {
private MimeMessage mimeMsg; // MIME邮件对象
private Session session; // 邮件会话对象
private Properties props; // 系统属性
private Multipart mp; // Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成
private String username;// 发件人的用户名
private String password;// 发件人的密码
private String nickname;// 发件人的昵称
private static Logger log = LoggerFactory.getLogger(MailSender.class);
/**
* 有参构造器
*
* @param smtp
*/
public MailSender(String smtp) {
setSmtpHost(smtp);
createMimeMessage();
}
/**
* 设置邮件发送的SMTP主机
*
* @Date:2014年4月26日 上午10:20:34
* @author 曹志飞
* @param hostName
* SMTP 发送主机
* @Description:
* @return void
*/
public void setSmtpHost(String hostName) {
if (props == null)
props = System.getProperties();
props.put("mail.smtp.host", hostName);
log.debug("set system properties success :mail.smtp.host= " + hostName);
}
/**
* 创建邮件对象
*
* @Date:2014年4月26日 上午10:26:34
* @author 曹志飞
* @return
* @Description:
* @return boolean
*/
public void createMimeMessage() {
// 获得邮件会话对象
session = Session.getDefaultInstance(props, null);
// 创建MIME邮件对象
mimeMsg = new MimeMessage(session);
mp = new MimeMultipart();
log.debug(" create session and mimeMessage success");
}
/**
* 设置权限鉴定配置
*
* @Date:2014年4月26日 上午10:36:34
* @author 曹志飞
* @param need
* 是否需要权限
* @Description:
* @return void
*/
public void setNeedAuth(boolean need) {
if (props == null)
props = System.getProperties();
if (need) {
props.put("mail.smtp.auth", "true");
} else {
props.put("mail.smtp.auth", "false");
}
log.debug("set smtp auth success:mail.smtp.auth= " + need);
}
/**
* 设置发送邮件的主题
*
* @Date:2014年4月26日 上午10:26:34
* @author 曹志飞
* @param subject
* 邮件的主题
* @throws UnsupportedEncodingException
* @throws MessagingException
* @Description:
* @return void
*/
public void setSubject(String subject) throws UnsupportedEncodingException,
MessagingException {
mimeMsg.setSubject(MimeUtility.encodeText(subject, "utf-8", "B"));
log.debug("set mail subject success, subject= " + subject);
}
/**
*
* @Date:2014年4月26日 上午10:28:34
* @author 曹志飞
* @param mailBody
* 邮件的正文内容
* @throws MessagingException
* @Description:
* @return void
*/
public void setBody(String mailBody) throws MessagingException {
BodyPart bp = new MimeBodyPart();
bp.setContent("" + mailBody, "text/html;charset=utf-8");
mp.addBodyPart(bp);
log.debug("set mail body content success,mailBody= " + mailBody);
}
/**
* 添加邮件附件
*
* @Date:2014年4月26日 上午10:30:40
* @author 曹志飞
* @param filePath
* 文件绝对路径
* @throws MessagingException
* @Description:
* @return void
*/
public void addFileAffix(String filePath) throws MessagingException {
BodyPart bp = new MimeBodyPart();
FileDataSource fileds = new FileDataSource(filePath);
bp.setDataHandler(new DataHandler(fileds));
bp.setFileName(fileds.getName());
mp.addBodyPart(bp);
log.debug("mail add file success,filename= " + filePath);
}
/**
* 设置发件人邮箱地址
*
* @Date:2014年4月26日 上午10:35:54
* @author 曹志飞
* @param sender
* 发件人邮箱地址
* @throws UnsupportedEncodingException
* @throws AddressException
* @throws MessagingException
* @Description:
* @return void
*/
public void setSender(String sender) throws UnsupportedEncodingException,
AddressException, MessagingException {
nickname = MimeUtility.encodeText(nickname, "utf-8", "B");
mimeMsg.setFrom(new InternetAddress(nickname + " <" + sender + ">"));
log.debug(" set mail sender and nickname success , sender= " + sender
+ ",nickname=" + nickname);
}
/**
* 设置收件人邮箱地址
*
* @Date:2014年4月26日 上午10:41:06
* @author 曹志飞
* @param receiver
* 收件人邮箱地址
* @throws AddressException
* @throws MessagingException
* @Description:
* @return void
*/
public void setReceiver(String receiver) throws AddressException,
MessagingException {
mimeMsg.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(receiver));
log.debug("set mail receiver success,receiver = " + receiver);
}
/**
* 设置抄送人的邮箱地址
*
* @Date:2014年4月26日 上午10:42:14
* @author 曹志飞
* @param copyto
* 抄送人邮箱地址
* @throws AddressException
* @throws MessagingException
* @Description:
* @return void
*/
public void setCopyTo(String copyto) throws AddressException,
MessagingException {
mimeMsg.setRecipients(Message.RecipientType.CC,
InternetAddress.parse(copyto));
log.debug("set mail copyto receiver success,copyto = " + copyto);
}
/**
* 设置发件人用户名密码进行发送邮件操作
*
* @Date:2014年4月26日 上午10:44:01
* @author 曹志飞
* @throws MessagingException
* @Description:
* @return void
*/
public void sendout() throws MessagingException {
mimeMsg.setContent(mp);
mimeMsg.saveChanges();
Session mailSession = Session.getInstance(props, null);
Transport transport = mailSession.getTransport("smtp");
transport.connect((String) props.get("mail.smtp.host"), username,
password);
transport.sendMessage(mimeMsg,
mimeMsg.getRecipients(Message.RecipientType.TO));
transport.close();
log.debug(" send mail success");
}
/**
* 注入发件人用户名 ,密码 ,昵称
*
* @Date:2014年4月26日 上午10:50:12
* @author 曹志飞
* @param username
* 发件人邮箱登录用户名
* @param password
* 发件人邮箱密码
* @param nickname
* 发件人显示的昵称
* @Description:
* @return void
*/
public void setNamePass(String username, String password, String nickname) {
this.username = username;
this.password = password;
this.nickname = nickname;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Java实现通过模板发送邮件示例
共17个文件
java:5个
xml:3个
prefs:3个
需积分: 1 0 下载量 171 浏览量
2023-12-14
11:50:12
上传
评论
收藏 12KB RAR 举报
温馨提示
Java实现通过模板发送邮件示例
资源推荐
资源详情
资源评论
收起资源包目录
Java实现通过模板发送邮件示例.rar (17个子文件)
mailUtil-master
.classpath 1KB
.settings
org.eclipse.jdt.core.prefs 243B
org.eclipse.core.resources.prefs 57B
org.eclipse.m2e.core.prefs 90B
pom.xml 1KB
src
test
java
com
mail
test
MailUtilTest.java 2KB
main
resources
logback.xml 3KB
template
template_1.ftl 32B
mail
mail.properties 295B
java
com
common
util
mail
MailUtil.java 5KB
TemplateFactory.java 4KB
MailSender.java 7KB
ConfigLoader.java 2KB
logs
mailUtil
logback.xml 3KB
log4j.properties 1KB
.project 560B
.gitignore 8B
共 17 条
- 1
资源评论
专家-百锦再
- 粉丝: 8120
- 资源: 731
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Picasso_v3.1 2.ipa
- chromedriver-mac-arm64.zip
- 蓝zapro.apk
- chromedriver-linux64.zip
- UCAS研一深度学习实验-MNIST手写数字识别python源码+详细注释(高分项目)
- 基于Python和PyTorch框架完成的一个手写数字识别实验源码(带MINIST手写数字数据集)+详细注释(高分项目)
- 基于Matlab在MNIST数据集上利用CNN完成手写体数字识别任务,并实现单层CNN反向传播算法+源代码+文档说明(高分项目)
- NVIDIA驱动、CUDA和Pytorch及其依赖
- 基于SVM多特征融合的微表情识别python源码+项目说明+详细注释(高分课程设计)
- html动态爱心代码一(附源码)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功