Java使用QQ邮箱给其他邮箱发邮件

个人微信小程序可以扫码体验

  • 引入了2个jar包

    1 <!-- mail --> 2 <dependency> 3 <groupId>javax.mail</groupId> 4 <artifactId>javax.mail-api</artifactId> 5 <version>1.5.5</version> 6 </dependency> 7 <dependency> 8 <groupId>com.sun.mail</groupId> 9 <artifactId>javax.mail</artifactId> 10 <version>1.5.4</version> 11 </dependency>
  • 获取QQ邮箱的授权码

 

开启。验证一下。就会出现授权码。

  • QQSendMailService

    package com.bdxc.plat.service.weixin;

    import java.util.Properties;

    import javax.mail.Address; import javax.mail.Message; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage;

    import com.sun.mail.util.MailSSLSocketFactory; /**

    • 发送邮件的工具类QQ

    • @author 宗潇帅

    • @Title SendEmailService

    • @时间 2017-1-5下午2:14:13 / public class QQSendEmailService { /*

      • 目前发送到163 qq个人邮箱可以,企业邮箱有问题

      • @param subject 邮件主题

      • @param text 邮件内容纯文本

      • @param mails 邮件地址多个用逗号隔开

      • @throws Exception */ public static void send_email(String subject,String text,String mails) throws Exception{ //用于读取配置文件 Properties props=new Properties(); //开启Debug调试 props.setProperty("mail.debug", "true"); //发送服务器需要身份验证 props.setProperty("mail.smtp.auth", "true"); //发送邮件服务器的主机名 props.setProperty("mail.smtp.host", "smtp.qq.com"); //端口号 props.setProperty("mail.smtp.port", "465"); //发送邮件协议 props.setProperty("mail.transport.protocol", "smtp"); //开启ssl加密(并不是所有的邮箱服务器都需要,但是qq邮箱服务器是必须的) MailSSLSocketFactory msf= new MailSSLSocketFactory(); msf.setTrustAllHosts(true); props.put("mail.smtp.ssl.enable", "true"); props.put("mail.smtp.ssl.socketFactory",msf); //获取Session会话实例(javamail Session与HttpSession的区别是Javamail的Session只是配置信息的集合) Session session=Session.getInstance(props,new javax.mail.Authenticator(){ protected PasswordAuthentication getPasswordAuthentication(){ //用户名密码验证(取得的授权吗) return new PasswordAuthentication ("123456@qq.com","自己的授权码"); } });

        //抽象类MimeMessage为实现类 消息载体封装了邮件的所有消息 Message message=new MimeMessage(session); //设置邮件主题 message.setSubject(subject); //封装需要发送电子邮件的信息 message.setText(text); //设置发件人地址 message.setFrom(new InternetAddress("123456@qq.com")); //此类的功能是发送邮件 又会话获得实例 Transport transport=session.getTransport(); //开启连接 transport.connect(); //设置收件人地址邮件信息 String mailAddress[] = mails.split(","); for (int i = 0; i < mailAddress.length; i++) { transport.sendMessage(message,new Address[]{new InternetAddress(mailAddress[i])}); //邮件发送后关闭信息 transport.close(); }

      }

    }

  •  发送的测试内容截图

OK。就是这样的简单。返回错误的时候注意看端口号有写没。

props.setProperty("mail.smtp.port", "465");

带图片发送邮件的代码

1import java.util.Properties; 2 3import javax.activation.DataHandler; 4import javax.activation.FileDataSource; 5import javax.mail.Address; 6import javax.mail.Message; 7import javax.mail.PasswordAuthentication; 8import javax.mail.Session; 9import javax.mail.Transport; 10import javax.mail.internet.InternetAddress; 11import javax.mail.internet.MimeBodyPart; 12import javax.mail.internet.MimeMessage; 13import javax.mail.internet.MimeMultipart; 14 15 16import com.sun.mail.util.MailSSLSocketFactory; 17public class QQSendEmailUtil { 18 //private static final String FROM_EMAIL="发送邮件的邮箱地址"; 19 //可以参考 https://my.oschina.net/xshuai/blog/819153 20 //private static final String EMAIL_AUTHCODE="发送邮件的邮箱地址的授权码"; 21 22 public static void main(String[] args) throws Exception{ 23 send_email_media("测试带图片的内容","邮件内容有图片哦","F:\\testimg\\xs.jpg","ai@ai.com"); 24 } 25 /** 26 * 目前发送到163 qq个人邮箱可以,企业邮箱有问题 27 * @param subject 邮件主题 28 * @param text 邮件文本内容 29 * @param filePath 邮件图片本地路径 30 * @param mails 邮件地址多个用逗号隔开 31 * @throws Exception 32 */ 33 public static void send_email_media(String subject,String text,String filePath,String mails) throws Exception{ 34 //用于读取配置文件 35 Properties props=new Properties(); 36 //开启Debug调试 37 props.setProperty("mail.debug", "true"); 38 //发送服务器需要身份验证 39 props.setProperty("mail.smtp.auth", "true"); 40 //发送邮件服务器的主机名 41 props.setProperty("mail.smtp.host", "smtp.qq.com"); 42 //端口号 43 props.setProperty("mail.smtp.port", "465"); 44 //发送邮件协议 45 props.setProperty("mail.transport.protocol", "smtp"); 46 //开启ssl加密(并不是所有的邮箱服务器都需要,但是qq邮箱服务器是必须的) 47 MailSSLSocketFactory msf= new MailSSLSocketFactory(); 48 msf.setTrustAllHosts(true); 49 props.put("mail.smtp.ssl.enable", "true"); 50 props.put("mail.smtp.ssl.socketFactory",msf); 51 //获取Session会话实例(javamail Session与HttpSession的区别是Javamail的Session只是配置信息的集合) 52 Session session=Session.getInstance(props,new javax.mail.Authenticator(){ 53 protected PasswordAuthentication getPasswordAuthentication(){ 54 //用户名密码验证(取得的授权吗) 55 return new PasswordAuthentication (FROM_EMAIL,EMAIL_AUTHCODE); 56 } 57 }); 58 59 //抽象类MimeMessage为实现类 消息载体封装了邮件的所有消息 60 Message message=new MimeMessage(session); 61 //设置邮件主题 62 message.setSubject(subject); 63 64 //创建图片 节点 65 MimeBodyPart image = new MimeBodyPart(); 66 //读取本地文件 67 DataHandler dh = new DataHandler(new FileDataSource(filePath)); 68 //将图片数据添加到 节点 69 image.setDataHandler(dh); 70 //为 节点设置一个唯一编号 在文本节点 将引用该ID 71 String timestamp = String.valueOf(System.currentTimeMillis()); 72 image.setContentID(timestamp); 73 74 //创建文本 节点 75 MimeBodyPart textNode = new MimeBodyPart(); 76 textNode.setContent(text+"<br/><a href='https://www.ydxiaoshuai.cn'><img src='cid:"+timestamp+"'/></a>", "text/html;charset=UTF-8"); 77 78 //设置 文本 图片 节点的关系 混合成一个节点 79 MimeMultipart mm_text_image = new MimeMultipart(); 80 mm_text_image.addBodyPart(textNode); 81 mm_text_image.addBodyPart(image); 82 mm_text_image.setSubType("related"); 83 84 //封装需要发送电子邮件的信息 85 message.setContent(mm_text_image); 86 //设置发件人地址 87 message.setFrom(new InternetAddress(FROM_EMAIL)); 88 //此类的功能是发送邮件 又会话获得实例 89 Transport transport=session.getTransport(); 90 //开启连接 91 transport.connect(); 92 //设置收件人地址邮件信息 93 String mailAddress[] = mails.split(","); 94 for (int i = 0; i < mailAddress.length; i++) { 95 transport.sendMessage(message,new Address[]{new InternetAddress(mailAddress[i])}); 96 //邮件发送后关闭信息 97 transport.close(); 98 } 99 } 100}

邮件收到的内容

点赞
收藏

评论区

加载中...

相关推荐

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

svg图片转字符

1.进入 https://icomoon.io官网。2.点击按钮!(https://static.oschina.net/uploads/space/2017/1228/151443_BUtm_3040505.png)3.点击添加svg图片!(https://static.oschina.net/uploads/space/2017

CRM部署架构图

!(https://static.oschina.net/uploads/space/2017/0905/105311_jmrM_2745752.jpeg)!(https://static.oschina.net/uploads/space/2017/0905/105326_6WfL_2745752.png)系统部署在AWSVP

SpringMVC+Hibernate +MySql+ EasyUI实现CRUD(一)

!(http://static.oschina.net/uploads/space/2015/0114/114556_gCrL_1444646.png)!(https://static.oschina.net/uploads/space/2017/0420/171705_LtQe_1444646.jpg)个人小程序,可以微信扫一扫看看。

Nginx+Tomcat+Redis负载均衡Session共享实现超级简单(CentOS6.9系统 Java版本)

!(https://static.oschina.net/uploads/space/2017/0607/113909_b0x3_1444646.png)!(https://static.oschina.net/uploads/space/2017/0607/114011_VZA2_1444646.jpg)个人小程序,可以微信扫一扫看看。谢谢支

Highcharts AJAX JSON JQuery 实现动态数据交互显示图表 柱形图

!(http://static.oschina.net/uploads/space/2015/0114/113658_PHf4_1444646.png)!(https://static.oschina.net/uploads/space/2017/0420/171449_piOt_1444646.jpg)个人小程序,可以微信扫一扫看看。谢谢支持