废话不多说,直接贴代码:

<!-- maven 依赖 -->
<dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4.7</version>
</dependency>

package com.example.zgz.demo;import java.io.File;
import java.util.List;/*** @author zhangguangze* @version v1.0* @project: zgz* @description: 这里描述类的用处* @copyright: © 2018* @company:* @date 2018/5/17 15:02*/
public class SendEmailVO {private String from;private String password;private String subject;private String content;private List<String> toArr;private List<String> ccArr;private List<File> attachArr;public String getFrom() {return from;}public void setFrom(String from) {this.from = from;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getSubject() {return subject;}public void setSubject(String subject) {this.subject = subject;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}public List<String> getToArr() {return toArr;}public void setToArr(List<String> toArr) {this.toArr = toArr;}public List<String> getCcArr() {return ccArr;}public void setCcArr(List<String> ccArr) {this.ccArr = ccArr;}public List<File> getAttachArr() {return attachArr;}public void setAttachArr(List<File> attachArr) {this.attachArr = attachArr;}
}

package com.example.zgz.demo;import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Transport;
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 java.io.File;
import java.util.Date;/*** @author zhangguangze* @version v1.0* @project: zgz* @description: 这里描述类的用处* @copyright: © 2018* @company:* @date 2018/5/17 13:56*/
public class EmailUtil {private static String host = "mail.qq.com";private static String port = "25";private static String userName = "xx@qq.com";private static String password = "xxxxx";/*** 发送邮件** @throws Exception*/private static void sendMail(SendEmailVO vo) throws Exception{Message mailMessage = getMessage(vo);MimeMultipart multipart = new MimeMultipart("mixed");//设置正文BodyPart messageBodyPart = new MimeBodyPart();String content = vo.getContent();messageBodyPart.setContent(content, "text/html; charset=utf-8");multipart.addBodyPart(messageBodyPart);//设置附件
        MimeBodyPart fileBodyPart;if(vo.getAttachArr()!=null && vo.getAttachArr().size()>0){for(File f :vo.getAttachArr()){fileBodyPart = new MimeBodyPart();DataSource fds = new FileDataSource(f);fileBodyPart.setDataHandler(new DataHandler(fds));fileBodyPart.setFileName(MimeUtility.encodeWord(f.getName()));multipart.addBodyPart(fileBodyPart);}}// 设置邮件消息的主要内容
        mailMessage.setContent(multipart);// 发送邮件
        Transport.send(mailMessage);}private static Message getMessage(SendEmailVO vo) throws Exception{Properties pro = System.getProperties();pro.put("mail.smtp.host", host);pro.put("mail.smtp.port", port);pro.put("mail.smtp.auth", "true");final PasswordAuthentication authentication = new PasswordAuthentication(vo.getFrom(),vo.getPassword());// 根据邮件会话属性和密码验证器构造一个发送邮件的sessionSession session = Session.getDefaultInstance(pro,new Authenticator(){@Overrideprotected PasswordAuthentication getPasswordAuthentication(){return authentication;}});// 根据session创建一个邮件消息Message mailMessage = new MimeMessage(session);// 设置邮件消息的发送者mailMessage.setFrom(new InternetAddress(vo.getFrom()));// 接收者List<String> toArr = vo.getToArr();ArrayList<InternetAddress> toAddArr = new ArrayList<>();for(String to : toArr){if(StringUtils.isNotBlank(to)){toAddArr.add(new InternetAddress(to));}}InternetAddress[] toAdds = toAddArr.toArray(new InternetAddress[toAddArr.size()]);mailMessage.setRecipients(Message.RecipientType.TO, toAdds);// 抄送List<String> ccArr = vo.getCcArr();if(ccArr != null && ccArr.size()>0){ArrayList<InternetAddress> ccAddArr = new ArrayList<>();for(String cc : ccArr){if(StringUtils.isNotBlank(cc)) {ccAddArr.add(new InternetAddress(cc));}}if(ccAddArr.size()>0){InternetAddress[] ccAdds = ccAddArr.toArray(new InternetAddress[ccAddArr.size()]);mailMessage.setRecipients(Message.RecipientType.CC, ccAdds);}}// 设置邮件消息的主题
        mailMessage.setSubject(vo.getSubject());// 设置邮件消息发送的时间mailMessage.setSentDate(new Date());return mailMessage;}/*** 发送内嵌图片和附件邮件** @throws Exceptionpublic void sendImageAndAttachmentMail() throws Exception{Properties pro = System.getProperties();pro.put("mail.smtp.host", host);pro.put("mail.smtp.port", port);pro.put("mail.smtp.auth", "true");// 根据邮件会话属性和密码验证器构造一个发送邮件的sessionSession sendMailSession = Session.getDefaultInstance(pro,new Authenticator(){@Overrideprotected PasswordAuthentication getPasswordAuthentication(){return new PasswordAuthentication(userName, password);}});// 根据session创建一个邮件消息Message mailMessage = new MimeMessage(sendMailSession);// 设置邮件消息的发送者mailMessage.setFrom(new InternetAddress(userName));// 创建邮件的接收者地址,并设置到邮件消息中mailMessage.setRecipient(Message.RecipientType.TO,new InternetAddress(to));// 设置邮件消息的主题mailMessage.setSubject("Test Email");// 设置邮件消息发送的时间mailMessage.setSentDate(new Date());// 正文MimeBodyPart text = new MimeBodyPart();text.setContent("我的头像:<img src='cid:headImg'>","text/html;charset=UTF-8");// 正文图片MimeBodyPart image = new MimeBodyPart();image.setDataHandler(new DataHandler(new FileDataSource("1_jianggujin.jpg")));image.setContentID("headImg");// 附件MimeBodyPart attach = new MimeBodyPart();DataHandler dh = new DataHandler(new FileDataSource("1_jianggujin.jpg"));attach.setDataHandler(dh);attach.setFileName(MimeUtility.encodeWord(dh.getName()));// 描述关系:正文和图片MimeMultipart mp1 = new MimeMultipart();mp1.addBodyPart(text);mp1.addBodyPart(image);mp1.setSubType("related");// 正文MimeBodyPart content = new MimeBodyPart();content.setContent(mp1);MimeMultipart multipart = new MimeMultipart("mixed");multipart.addBodyPart(content);multipart.addBodyPart(attach);mailMessage.setContent(multipart);// 发送邮件Transport.send(mailMessage);}*/public static void main(String[] args) throws Exception {SendEmailVO vo = new SendEmailVO();vo.setFrom(userName);vo.setPassword(password);vo.setSubject("Test");vo.setContent("<html><body><div style='font-weight:bold'>Dear All,<br>this is a test email.</div></body></html>");List<String> toArr = new ArrayList<>();toArr.add("xxxxx@qq.com");vo.setToArr(toArr);List<String> ccArr = new ArrayList<>();ccArr.add("sssss@qq.com");vo.setCcArr(ccArr);List<File> fileArr = new ArrayList<>();fileArr.add(new File("F:\\testpdf\\pdf\\test.txt"));vo.setAttachArr(fileArr);EmailUtil.sendMail(vo);}
}

转载于:https://www.cnblogs.com/zgz21/p/9067117.html

使用javamail 发送邮件相关推荐

  1. javamail发送邮件的简单实例[转]

    http://www.blogjava.net/wangfun/archive/2009/04/15/265748.html 今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦 ...

  2. JavaWeb学习总结(五十三)——Web应用中使用JavaMail发送邮件

    现在很多的网站都提供有用户注册功能, 通常我们注册成功之后就会收到一封来自注册网站的邮件.邮件里面的内容可能包含了我们的注册的用户名和密码以及一个激活账户的超链接等信息.今天我们也来实现一个这样的功能 ...

  3. JavaMail发送邮件的笔记及Demo

    最近碰到一个需求,就是注册用户时候需要向用户发送激活邮箱,于是照着网上搜来的demo自己试着运行了一下,发件时我用的是网易163邮箱,收件时用QQ邮箱,运行后报了一个错误: 网络上搜索解决方式,多次尝 ...

  4. javamail发送邮件的简单实例

    今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题.为了以后使用方便,自己写了段代码,打成jar包,以方便以后使用.呵呵 以下三段代码是我的全部代码,朋友们如果想用,直接 ...

  5. javamail发送邮件(转)

    今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题.为了以后使用方便,自己写了段代码,打成jar包,以方便以后使用.呵呵 以下三段代码是我的全部代码,朋友们如果想用,直接 ...

  6. javamail发送邮件,解决被垃圾邮件问题

    javamail发送邮件,解决被垃圾邮件问题 参考文章: (1)javamail发送邮件,解决被垃圾邮件问题 (2)https://www.cnblogs.com/mzqworld/articles/ ...

  7. JavaMail 发送邮件的实例

    JavaMail是提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题.为了以后使用方便 ...

  8. 通过javaMail发送邮件,可选添加多个收件人,密送,抄送,多个附件,超实用

    自己通过学习多人的代码,并整理了一个简单,调用方便的通过javaMail发送邮件.只需填写发件邮箱地址,密码:收件人地址,附件,选择是否保存,设置自己发送邮件时的昵称就ok了.代码自动匹配设置smtp ...

  9. JavaMail发送邮件Demo

    JavaMail发送邮件Demo Maven依赖 <dependency><groupId>org.springframework.boot</groupId>&l ...

  10. 通过javaMail发送邮件,可选添加多个收件人,密送,抄送,多个附件

    通过javaMail发送邮件,可选添加多个收件人,密送,抄送,多个附件 https://blog.csdn.net/qq_35434831/article/details/79666035 版权声明: ...

最新文章

  1. (SpringMVC)数据处理及跳转
  2. RabbitMQ入门教程——.NET客户端使用
  3. CCNA学习笔记12---黄毛丫头篇(访问控制列表)
  4. C语言创建map,遍历map
  5. [ACM] hdu 1232 畅通工程(并查集)
  6. c#调用c++(Opencv)dll的实例
  7. AI队列长度检测:使用YOLO进行图像中的对象检测
  8. 深度学习导论 - 读李宏毅《1天搞懂深度学习》
  9. [转]制作一个64M的U盘启动盘(mini linux + winpe +dos toolbox)
  10. 电脑自带软件使图片底色变为透明(抠图白底)
  11. 短视频合集怎么做,教你快速合并的技巧
  12. Cluster - 基本概念
  13. 最新江苏水利水电安全员模拟真题及答案解析
  14. 在这个大数据时代,如何保护好自己的隐私?
  15. php mysqli操作数据库
  16. 微信小程序抓包教程:Burpsuite版 附所需工具
  17. 关于Gitlab修改用户名和邮箱
  18. 大作业系列之体育课 | 从NBA中看篮球精神
  19. 城市绿色货运配送体系评价
  20. 题目:以下选项中关于DOM和SAX的说法错误的是()

热门文章

  1. 2014中国软件开发者调查
  2. Ext Grid Json分页(asp.net)
  3. ssl双向认证_详解TLS/SSL运行机制
  4. python程序语法元素_python的语法元素(一)
  5. PyQt5入门——QListWidget实现图片缩略图列表
  6. 训练yolo V4模型调优的十个建议
  7. Tesla P4测试
  8. 【蚁剑的安装与使用+例题实战】【CTF】webshell
  9. 一张图看懂开源许可协议,开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别【转载】
  10. 小程序基础 - wafer2 - PHP - 后台和前台 - 利用对象数组来传递表单数组的正确方法 - 下载部分(服务器到微信)