java发送邮件的工具类,Java发送邮件工具类

package com.blyl.util;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.ResponseBody;

import javax.activation.DataHandler;

import javax.activation.FileDataSource;

import javax.mail.Address;

import javax.mail.Message;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.*;

import javax.servlet.http.HttpServletRequest;

import java.util.Date;

import java.util.Properties;

/**

* @author zzx

* @Description: ${todo}

* @date 2018/11/12 11:56

*/

public class sendMailUtil {

/**

*

* @param filePath 发送excel文件的路径

* @param eamilUrl 接受邮件邮箱地址

* @param sendSubject 邮件标题

* @return

*/

public static String sendMessage(String filePath, String[] eamilUrl, String sendSubject){

//发送邮件邮箱信息

String myEmailSMTPHost = "smtp.163.com";

String myEmailAccount = "18205997065@163.com";

String myEmailPassword = "zzx123";

String senderName = "发送人昵称"; //发送人昵称

// String[] eamilUrl = new String[] {"1963942081@qq.com"};//接受邮件邮箱

// String sendSubject = "邮件标题"; //邮件标题

String sendContent = "邮件内容"; //邮件内容

// String imgPath = request.getSession().getServletContext().getRealPath("/") + "mail\\img\\1.jpg";// 发送图片

// String filePath = request.getSession().getServletContext().getRealPath("/") + "mail\\file\\123.docx"; //发送附件

// String filePath = request.getSession().getServletContext().getRealPath("/") + "mail\\file\\2018-11-09\\73f02f55-0109-4518-b108-ee01c1df93af.xlsx"; //发送附件

Properties props = new Properties();

props.setProperty("mail.transport.protocol", "smtp"); // 使用的协议(JavaMail规范要求)

props.setProperty("mail.smtp.host", myEmailSMTPHost); // 发件人的邮箱的 SMTP 服务器地址

props.setProperty("mail.smtp.auth", "true"); // 需要请求认证

Session session = Session.getDefaultInstance(props);// 根据配置创建会话对象, 用于和邮件服务器交互

session.setDebug(true);

try {

//发送复杂邮件

MimeMessage message = createComplicatedMessage(session, myEmailAccount, senderName, eamilUrl, sendSubject, sendContent,null, filePath, sendSubject);

Transport transport = session.getTransport(); //获取邮件传输对象

transport.connect(myEmailAccount, myEmailPassword);

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

transport.close();

return "success";

} catch (Exception e) {

e.printStackTrace();

return "fail";

}

}

/**

* @Author: zzx

* @Description: 创建邮件,图片路径可以为空

* @Date: 2018/11/8 14:33

* @Param: sendMail:发送人的邮箱,senderName:发送人的昵称,receiveMail:接收邮件的邮箱,subject:邮件标题,msgContent:邮件内容,imgPath:图片路径,filePath:附件路径,sendSubject:附件名字

* @Return

*/

public static MimeMessage createComplicatedMessage(Session session,String sendMail, String senderName, String[] receiveMail,String subject,String msgContent, String imgPath, String filePath, String sendSubject) throws Exception{

MimeMessage message = new MimeMessage(session);

message.setFrom(new InternetAddress(sendMail,senderName,"UTF-8"));

Address[] addr = new Address[receiveMail.length];

for(int i=0;i

addr[i] = new InternetAddress(receiveMail[i], "", "UTF-8");

}

message.addRecipients(Message.RecipientType.TO, addr);

message.setSubject(subject);

/*

* 邮件内容的创建:图片和附件

*/

//创建文本节点

MimeBodyPart text = new MimeBodyPart();

//将文本和图片节点结合

MimeMultipart text_image = new MimeMultipart();

if(imgPath != null) {

//创建图片节点

MimeBodyPart image = new MimeBodyPart();

DataHandler dh = new DataHandler(new FileDataSource(imgPath)); //读取本地文件

image.setDataHandler(dh); //将数据添加到节点

image.setContentID("image_id");// 为“节点”设置一个唯一编号(在文本“节点”将引用该ID)

//将图片包含到文本内容中

text.setContent(msgContent + "", "text/html;charset=UTF-8");

text_image.addBodyPart(text);

text_image.addBodyPart(image);

text_image.setSubType("related"); //关联关系 有内嵌资源要定义related

} else {

text.setContent(msgContent, "text/html;charset=UTF-8");

text_image.addBodyPart(text);

}

//将混合节点封装成普通节点BodyPart,邮件最终由多个BodyPart组成

MimeBodyPart text_image_body = new MimeBodyPart();

text_image_body.setContent(text_image);

//添加附件节点

MimeBodyPart document = new MimeBodyPart();

DataHandler dhdoc = new DataHandler(new FileDataSource(filePath)); //读取本地文档

document.setDataHandler(dhdoc); //将附件数据添加到节点

// document.setFileName(MimeUtility.decodeText(dhdoc.getName())); //设置附件文件名

document.setFileName(sendSubject + ".xlsx"); //设置附件文件名

//设置文本和图片,附件的关系(混合大节点)

MimeMultipart mm = new MimeMultipart();

mm.addBodyPart(text_image_body);

mm.addBodyPart(document);

mm.setSubType("mixed"); //有附件资源要定义mixed

//最终节点添加到邮件中

message.setContent(mm);

message.setSentDate(new Date());

message.saveChanges();

return message;

}

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值