java发送邮件的工具类_java实现邮件发送的工具类

packagecom.syy.community._gaowenbin.util;importjava.util.ArrayList;importjava.util.List;importjava.util.Map;importjava.util.Properties;importjavax.activation.DataHandler;importjavax.activation.FileDataSource;importjavax.mail.Authenticator;importjavax.mail.Message;importjavax.mail.MessagingException;importjavax.mail.PasswordAuthentication;importjavax.mail.Session;importjavax.mail.Transport;importjavax.mail.internet.InternetAddress;importjavax.mail.internet.MimeBodyPart;importjavax.mail.internet.MimeMessage;importjavax.mail.internet.MimeMultipart;/***

* 邮件发送的工具类

*@authorHUAWEI

**/

public classMailUtil {/*** 创建简单的文本邮件

*@paramsession

*@parammailfrom 邮件发送方地址 eg.xx@qq.com

*@parammailTo 邮件接收方地址,eg.xx@qq.com

*@parammailTittle 邮件标题

*@parammailText 邮件文本主体

*@return*@throwsException*/

public staticMimeMessage createSimpleMail(Session session, String mailfrom, String mailTo, String mailTittle,

String mailText)throwsException {//创建邮件对象

MimeMessage message = newMimeMessage(session);//指明邮件的发件人

message.setFrom(newInternetAddress(mailfrom));//指明邮件的收件人,现在发件人和收件人是一样的,那就是自己给自己发

message.setRecipient(Message.RecipientType.TO, newInternetAddress(mailTo));//邮件的标题

message.setSubject(mailTittle);//邮件的文本内容

message.setContent(mailText, "text/html;charset=UTF-8");//返回创建好的邮件对象

returnmessage;

}/*** 创建图文邮件

*@paramsession

*@parammailMap 邮件的所有内容的包装

*@paramhasfujian 若为true,mailMap中必须包含相应的信息

*@return*@throwsMessagingException*/

public static MimeMessage imageMail(Session session,Map mailMap,boolean hasfujian) throwsMessagingException {//消息的固定信息

MimeMessage mimeMessage = newMimeMessage(session);//邮件发送人

mimeMessage.setFrom(new InternetAddress(mailMap.get("from").toString()));//邮件接收人,可以同时发送给很多人

mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(mailMap.get("to").toString()));

mimeMessage.setSubject(mailMap.get("title").toString()); //邮件主题//图片

MimeBodyPart body1 = newMimeBodyPart();

body1.setDataHandler(new DataHandler(new FileDataSource(mailMap.get("datasrc").toString())));

body1.setContentID(mailMap.get("contentid").toString()); //图片设置ID//文本

MimeBodyPart body2 = newMimeBodyPart();

body2.setContent(mailMap.get("content"),"text/html;charset=utf-8");if(hasfujian){

List> listmap = (List>) mailMap.get("fujian");

List fjlist = new ArrayList();for(Mapitem:listmap){//附件

MimeBodyPart body = newMimeBodyPart();

body.setDataHandler(new DataHandler(new FileDataSource(item.get("filesrc").toString())));

body.setFileName(item.get("filename")); //附件设置名字

fjlist.add(body);//拼装邮件正文内容

MimeMultipart multipart1 = newMimeMultipart();

multipart1.addBodyPart(body1);

multipart1.addBodyPart(body2);

multipart1.setSubType("related"); //文本和图片内嵌成功!//new MimeBodyPart().setContent(multipart1);//将拼装好的正文内容设置为主体

MimeBodyPart contentText = newMimeBodyPart();

contentText.setContent(multipart1);//拼接附件

MimeMultipart allFile =newMimeMultipart();for(MimeBodyPart mbp:fjlist){

allFile.addBodyPart(mbp);//附件

}

allFile.addBodyPart(contentText);//正文

allFile.setSubType("mixed"); //正文和附件都存在邮件中,所有类型设置为mixed;//放到Message消息中

mimeMessage.setContent(allFile);

mimeMessage.saveChanges();//保存修改

}

}else{//拼装邮件正文内容

MimeMultipart multipart1 = newMimeMultipart();

multipart1.addBodyPart(body1);

multipart1.addBodyPart(body2);

multipart1.setSubType("related"); //1.txt.文本和图片内嵌成功!//new MimeBodyPart().setContent(multipart1);//将拼装好的正文内容设置为主体

MimeBodyPart contentText = newMimeBodyPart();

contentText.setContent(multipart1);//拼接附件

MimeMultipart allFile =newMimeMultipart();

allFile.addBodyPart(contentText);//正文

allFile.setSubType("mixed"); //正文和附件都存在邮件中,所有类型设置为mixed;//放到Message消息中

mimeMessage.setContent(allFile);

mimeMessage.saveChanges();//保存修改

}returnmimeMessage;

}/*** 发送邮件方法封装

*@paramcontentMap 邮件配置的map

*@paramimgmial 是否为带图邮件

*@paramhasfujian 是否有附件

*@throwsException*/

public static void sendMail(final Map contentMap,boolean imgmial,boolean hasfujian) throwsException{

Properties prop= newProperties();//设置QQ邮件服务器

prop.setProperty("mail.host", contentMap.get("host").toString());//邮件发送协议

prop.setProperty("mail.transport.protocol", "smtp");//需要验证用户名密码

prop.setProperty("mail.smtp.auth", "true");//关于QQ邮箱,还要设置SSL加密,加上以下代码即可//MailSSLSocketFactory sf = new MailSSLSocketFactory();//sf.setTrustAllHosts(true);

prop.put("mail.smtp.ssl.enable", "true");//prop.put("mail.smtp.ssl.socketFactory", sf);//使用JavaMail发送邮件的5个步骤//1.txt、创建定义整个应用程序所需的环境信息的Session对象

Session session = Session.getDefaultInstance(prop, newAuthenticator() {publicPasswordAuthentication getPasswordAuthentication() {//发件人邮件用户名、授权码

return new PasswordAuthentication(contentMap.get("from").toString(),

contentMap.get("password").toString());

}

});//可以通过session开启Dubug模式,查看所有的过程

session.setDebug(true);//2.获取连接对象,通过session对象获得Transport,需要捕获或者抛出异常;

Transport tp =session.getTransport();//3.连接服务器,需要抛出异常;

tp.connect(contentMap.get("host").toString(),contentMap.get("from").toString(),contentMap.get("password").toString());

MimeMessage mimeMessage= null;//4.连接上之后我们需要发送邮件;

if(imgmial){

mimeMessage=imageMail(session,contentMap,hasfujian);

}else{

mimeMessage= createSimpleMail(session, contentMap.get("from").toString(), contentMap.get("to").toString(), contentMap.get("title").toString(), contentMap.get("content").toString());

}//5.发送邮件

tp.sendMessage(mimeMessage,mimeMessage.getAllRecipients());//6.关闭连接

tp.close();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值