转载于 https://www.cnblogs.com/hoojjack/p/8025284.html

一、一般配置

发送邮件需要用到  mail包 maven 依赖如下:

1 <!-- https://mvnrepository.com/artifact/javax.mail/mail -->
2         <dependency>
3             <groupId>javax.mail</groupId>
4             <artifactId>mail</artifactId>
5             <version>1.4</version>
6         </dependency>

SSL加密方式需要用到MailSSLSocketFactory类

<!-- https://mvnrepository.com/artifact/com.sun.mail/javax.mail --><dependency><groupId>com.sun.mail</groupId><artifactId>javax.mail</artifactId><version>1.4.4</version></dependency>

获取配置文件:

 1 //获取邮箱发送邮件的配置信息2     public Properties getEmailProperties(){3         Properties props = new Properties();4         String host = evn.getProperty("email.host");5         String protocol = evn.getProperty("email.protocol");6         String port = evn.getProperty("email.port");7         String from = evn.getProperty("email.from");8         String pwd = evn.getProperty("email.password");9         props.put("mail.smtp.host", host);//设置服务器地址
10         props.put("mail.store.protocol" , protocol);//设置协议
11         props.put("mail.smtp.port", port);//设置端口
12         props.put("from" , from);
13         props.put("pwd" , pwd);
14         props.put("mail.smtp.auth" , "true");
15         return props;
16     }

邮件发送代码类:

  1 /** 2  *3  * @file springBootExample.example.infrastructure4  * 5  */6 package com.tyky.educloud.platform.util;7 8 /** 9  * @ClassName: SendEmail 10  * @Description: TODO(这里用一句话描述这个类的作用) 113  *  14  */15 import java.util.Date;16 import java.util.Properties;17 18 import javax.mail.Authenticator;19 import javax.mail.Message;20 import javax.mail.MessagingException;21 import javax.mail.PasswordAuthentication;22 import javax.mail.Session;23 import javax.mail.Transport;24 import javax.mail.internet.AddressException;25 import javax.mail.internet.InternetAddress;26 import javax.mail.internet.MimeMessage;27 28 public class SendEmail {29 30     public static Properties props = new Properties();31 32     public static void setProps(Properties props) {33         SendEmail.props = props;34     }35 36     public static Properties getProps() {37         return props;38     }39 40     /**41      * 获取Session42      * 43      * @return44      */45     private static Session getSession(final String from, final String pwd) {46 47         Authenticator authenticator = new Authenticator() {48 49             @Override50             protected PasswordAuthentication getPasswordAuthentication() {51                 return new PasswordAuthentication(from, pwd);52             }53 54         };55         Session session = Session.getDefaultInstance(props, authenticator);56 57         return session;58     }59 60     public static void send(String content, String toEmail) throws AddressException, MessagingException {61         Properties properties = getProps();62         String from = properties.getProperty("from");63         String pwd = properties.getProperty("pwd");64         String subject = properties.getProperty("subject");65         66         if (null == from || null == pwd) {67             System.out.println("发送邮箱为空");68             return;69         }70         if (null == subject) {71             subject = "平台";72         }73         Session session = getSession(from, pwd);74         // Instantiate a message75         Message msg = new MimeMessage(session);76         // Set message attributes77         msg.setFrom(new InternetAddress(from));78         InternetAddress[] address = { new InternetAddress(toEmail) };79         msg.setRecipients(Message.RecipientType.TO, address);80         msg.setSubject(subject);81         msg.setSentDate(new Date());82         msg.setContent(content, "text/html;charset=utf-8");83         // Send the message84         Transport.send(msg);85     }86 87     public static String generateContent(String contentTitle, String url, String username, String email,88             String validateCode) {89 90         // String validataCode = MD5Util.encode2hex(email);91 92         /// 邮件的内容93         StringBuffer sb = new StringBuffer(contentTitle);94         sb.append("<a href=\"" + url + "?username=");95         sb.append(username);96         sb.append("&email=");97         sb.append(email);98         sb.append("&validateCode=");99         sb.append(validateCode);
100         sb.append("\">" + url + "?username=");
101         sb.append(username);
102         sb.append("&email=");
103         sb.append(email);
104         sb.append("&validateCode=");
105         sb.append(validateCode);
106         sb.append("</a>");
107         return sb.toString();
108     }
109
110 }

邮件发送完整的代码:

  1 /** 2  * @ClassName: SendEmail 3  * @Description: TODO(这里用一句话描述这个类的作用) 6  *  7  */8 import java.util.Date;9 import java.util.Properties;10 11 import javax.mail.Authenticator;12 import javax.mail.Message;13 import javax.mail.MessagingException;14 import javax.mail.PasswordAuthentication;15 import javax.mail.Session;16 import javax.mail.Transport;17 import javax.mail.internet.AddressException;18 import javax.mail.internet.InternetAddress;19 import javax.mail.internet.MimeMessage;20 21 public class SendEmail {22 23     public static Properties props = new Properties();24 25     public static void setProps(Properties props) {26         SendEmail.props = props;27     }28 29     public static Properties getProps() {30         props.put("mail.smtp.host", "smtp.163.com");// 设置服务器地址31         props.put("mail.store.protocol", "smtp.163.com");// 设置协议32         props.put("mail.smtp.port", 25);// 设置端口33         props.put("from", "XXX");34         props.put("pwd", "XXX");35         props.put("mail.smtp.auth", "true");36     }37 38     /**39      * 获取Session40      * 41      * @return42      */43     private static Session getSession(final String from, final String pwd) {44 45         Authenticator authenticator = new Authenticator() {46 47             @Override48             protected PasswordAuthentication getPasswordAuthentication() {49                 return new PasswordAuthentication(from, pwd);50             }51 52         };53         Session session = Session.getDefaultInstance(props, authenticator);54 55         return session;56     }57 58     public static void send(String content, String toEmail) throws AddressException, MessagingException {59         Properties properties = getProps();60         String from = properties.getProperty("from");61         String pwd = properties.getProperty("pwd");62         String subject = properties.getProperty("subject");63         64         if (null == from || null == pwd) {65             System.out.println("发送邮箱为空");66             return;67         }68         if (null == subject) {69             subject = "平台";70         }71         Session session = getSession(from, pwd);72         // Instantiate a message73         Message msg = new MimeMessage(session);74         // Set message attributes75         msg.setFrom(new InternetAddress(from));76         InternetAddress[] address = { new InternetAddress(toEmail) };77         msg.setRecipients(Message.RecipientType.TO, address);78         msg.setSubject(subject);79         msg.setSentDate(new Date());80         msg.setContent(content, "text/html;charset=utf-8");81         // Send the message82         Transport.send(msg);83     }84 85     public static String generateContent(String contentTitle, String url, String username, String email,86             String validateCode) {87 88         // String validataCode = MD5Util.encode2hex(email);89 90         /// 邮件的内容91         StringBuffer sb = new StringBuffer(contentTitle);92         sb.append("<a href=\"" + url + "?username=");93         sb.append(username);94         sb.append("&email=");95         sb.append(email);96         sb.append("&validateCode=");97         sb.append(validateCode);98         sb.append("\">" + url + "?username=");99         sb.append(username);
100         sb.append("&email=");
101         sb.append(email);
102         sb.append("&validateCode=");
103         sb.append(validateCode);
104         sb.append("</a>");
105         return sb.toString();
106     }
107
108 }

以下是两种不同加密方式的代码,与上面默认25端口的方式差别较小,注意不同加密方式红色部分。

1. JavaMail – via TLS

 1 package com.mkyong.common;2 3 import java.util.Properties;4 5 import javax.mail.Message;6 import javax.mail.MessagingException;7 import javax.mail.PasswordAuthentication;8 import javax.mail.Session;9 import javax.mail.Transport;
10 import javax.mail.internet.InternetAddress;
11 import javax.mail.internet.MimeMessage;
12
13 public class SendMailTLS {
14
15     public static void main(String[] args) {
16
17         final String username = "username@gmail.com";
18         final String password = "password";
19
20         Properties props = new Properties();
21         props.put("mail.smtp.auth", "true");
22         props.put("mail.smtp.starttls.enable", "true");
23         props.put("mail.smtp.host", "smtp.gmail.com");
24         props.put("mail.smtp.port", "587");
25
26         Session session = Session.getInstance(props,
27           new javax.mail.Authenticator() {
28             protected PasswordAuthentication getPasswordAuthentication() {
29                 return new PasswordAuthentication(username, password);
30             }
31           });
32
33         try {
34             Message message = new MimeMessage(session);
35             message.setFrom(new InternetAddress("from-email@gmail.com"));
36             message.setRecipients(Message.RecipientType.TO,
37                 InternetAddress.parse("to-email@gmail.com"));
38             message.setSubject("Testing Subject");
39             message.setText("Dear Mail Crawler,"
40                 + "\n\n No spam to my email, please!");
41
42             Transport.send(message);
43             System.out.println("Done");
44
45         } catch (MessagingException e) {
46             throw new RuntimeException(e);
47         }
48     }
49 }

2. JavaMail – via SSL

package com.mkyong.common;import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;public class SendMailSSL {public static void main(String[] args) {Properties props = new Properties();props.put("mail.smtp.host", "smtp.gmail.com");props.put("mail.smtp.socketFactory.port", "465");props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");props.put("mail.smtp.auth", "true");props.put("mail.smtp.port", "465");Session session = Session.getDefaultInstance(props,new javax.mail.Authenticator() {protected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication("username","password");}});try {Message message = new MimeMessage(session);message.setFrom(new InternetAddress("from@no-spam.com"));message.setRecipients(Message.RecipientType.TO,InternetAddress.parse("to@no-spam.com"));message.setSubject("Testing Subject");message.setText("Dear Mail Crawler," +"\n\n No spam to my email, please!");Transport.send(message);System.out.println("Done");} catch (MessagingException e) {throw new RuntimeException(e);}}
}

注意:如果以上ssl不行可以尝试将ssl红色部分用以下代码替换:

1      MailSSLSocketFactory sf = null;
2      try {
3            sf = new MailSSLSocketFactory();
4            sf.setTrustAllHosts(true);
5      } catch (GeneralSecurityException e1) {
6            e1.printStackTrace();
7      }
8      props.put("mail.smtp.ssl.enable", "true");
9      props.put("mail.smtp.ssl.socketFactory", sf);

java Mail使用SSl,端口465加密发送邮件配置相关推荐

  1. 基于java mail实现简单的QQ邮箱发送邮件

    刚学习到java邮件相关的知识,先写下这篇博客,方便以后翻阅学习. -----------------------------第一步 开启SMTP服务 在 QQ 邮箱里的 设置->账户里开启 S ...

  2. java mail使用qq邮箱发邮件的配置方法

    最近自己折腾了下Java中利用mai发送QQ邮件 1.QQ邮箱设置 1.1 进去QQ邮箱-->设置-->账号-->进行设置如下图 2.foxmail设置(由于我要利用它收邮件) 2. ...

  3. java mail 已发送_JavaMail获取已发送邮件

    public static voidmain(String args[]) { Properties props= new Properties(); //参数配置 props.setProperty ...

  4. java mail 学习笔记

    JAVA MAIL 学习 笔记 电子邮件协议的简介 SMTP 简单邮件传输 SMTP是Simple Mail Transfer Protocol的简称,即简单邮件传输协议.该协议定义了邮件客户端软件和 ...

  5. 阿里云,百度云等云服务器不支持本机25端口解封,使用465加密端口发送邮件

    最近在阿里云中实现发送邮件,解封25端口时,审核未通过,审核备注如下: 不支持本机25端口解封,建议您尝试使用外部邮件服务商的465加密端口,或者查询所访问发信服务是否提供其它SMTP端口.如果使用的 ...

  6. .NET 针对465加密端口 加密协议SSL(Implicit SSL)进行的邮件发送

    项目中遇到一个邮件发送功能,使用常用的的SmtpClient进行发送,在本地进行了126的邮箱进行测试通过,客户发来对应的邮箱信息后告知是使用的是465加密端口,SSL加密协议,再把相关信息进行配置替 ...

  7. java qq邮箱服务器端口_spring mail借助qq邮箱服务器发送邮件

    spring mail封装了javaMail的邮件服务,让邮件服务使用起来更简单,下面以qq邮箱服务器为例,用spring mail服务来发送邮件 配置qq邮箱,"设置"--&qu ...

  8. Java mail使用QQ邮箱发送邮件配置方案

    Java mail使用QQ邮箱发送邮件配置方案 java mail配置了QQ邮箱作为服务器发送邮件,结果导致出现503异常: Authentication failed; nested excepti ...

  9. 阿里云服务器 通过JavaMail发送邮箱STMP问题( 25端口被禁用 使用SSL协议465端口)

    我们传统使用的比较简单的是 STMP 25端口收发邮件 今天发现刚购买的阿里云服务器不能作为客户端通过STMP 25端口发送邮件 开始在网上有说发现是JDK1.8的原因,然后自己也把JDK1.8换到了 ...

最新文章

  1. [置顶] 面向业务开发应用
  2. HDU4920 Matrix multiplication 矩阵
  3. C++ const 学习
  4. 估价范围还没有生产式的物料帐薄
  5. zcmu1862(模拟)
  6. 寻找丢失的数字(二)
  7. 在一台服务器上配置多个Tomcat的方法
  8. 别再说你不会ElasticSearch,都给你整理好了
  9. 阿里云存储OSS中设置上传文件content type
  10. [数据结构-严蔚敏版]P46栈的顺序存储表示
  11. 2018/7/18-纪中某C组题【jzoj3508,jzoj3509,jzoj3510,jzoj3512】
  12. linux on win原理,linux on win10 上手体验
  13. Thinking in AJAX(二) —— 基于AJAX的WEB设计
  14. BlackBerry 应用程序开发者指南 第二卷:高级--第13章 应用程序间共享运行时对象...
  15. 《谁说大象不能跳舞》值得一读
  16. 建议收藏,最全ChatGPT 中文调教指南:提供各个领域的角色提示词(prompts)及使用技巧,当然也有不正经指南
  17. ACM-ICPC 2018 焦作赛区网络预赛 L Poor God Water(BM算法)
  18. baby_web (攻防世界)
  19. C# 无法加载DLL (异常来自 HRESULT:0x8007007F)
  20. 苹果驱动安装不了,一定要进来看

热门文章

  1. 如何高效进行无人机动力测试-电池效率
  2. XUPT 新生赛题目总结
  3. 去掉CAJViewer广告的方法
  4. 史蒂夫·乔布斯(简介)
  5. matlab 冒号范围,MATLAB中冒号的用法
  6. AlBaath Collegiate Programming Contest (2015) 总结
  7. 图形图像基础 之 png介绍
  8. linux 打开三维stl文件,三维stl文件查看工具下载
  9. (十九)jmeter3.0插件管理---学习笔记
  10. ie11加载项启用不了 java,IE11或IE10中的管理加载项按钮是灰色的不能用怎么办