使用Spring发送Email

                                          使用QQ邮箱为例

 

一,开启邮箱SMTP服务(qq需要手动开启)

163默认开启

二,添加jar

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${springVersion}</version>
</dependency>
<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>
</dependency>

三,添加配置属性

mail.server=smtp.qq.com
mail.port=465
mail.userName=xxxxxxx@qq.com
mail.password=qq邮箱授权码(163邮箱可以是密码,也可以是授权码)
mail.defaultEncoding=UTF-8
mail.smtp.timeout=100000
mail.smtp.auth=true
mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
mail.smtp.socketFactory.port=465

java配置方式实例化bean

四,编写controller

五,调用接口测试(发送成功)

 


QQ邮箱为啥不使用25端口

QQ邮箱官方链接说明:https://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=371

如果使用POP协议,必须启用ssl,并且使用995端口

如果使用SMTP协议,必须启用ssl,并且使用465端口


阿里云ECS服务器无法使用25端口发送

阿里云为了防止垃圾邮件泛滥,关闭了25端口,并建议使用加密端口

由于加密端口使用的是ssl协议,ssl协议需要加密的ssl连接,所以需要通过 javax.net.ssl.SSLSocketFactory 获取加密的SSLSocket

 

另一种方法,如果存在特殊场景,您必须在云服务器上使用TCP 25端口进行对外连接,请在安全管控平台中提交25端口解封申请。


mail.server的几种配置

POP3服务器: pop.163.com         pop.qq.com

SMTP服务器: smtp.163.com      smtp.qq.com

IMAP服务器: imap.163.com        imap.qq.com


通过163邮箱发送到qq邮箱,邮件在垃圾箱中

          接受邮件的邮件服务器系统设置了垃圾邮件规则,接收方一般根据发信邮箱的地址、主题、内容等来判别是否是垃圾邮件 ,许多邮箱有垃圾邮件举报功能,但各自的垃圾规则又不完全一样,比如126里面可以收到正常的邮件,但是在QQ和hotmail里面收到的邮件都被视为垃圾邮件。
         有的邮件可以这样避开他的垃圾邮件规则msg.setFrom(new InternetAddress("邮箱名", "myname")),但并不是所有邮件都有效,因为各自的垃圾规则又不完全一样
         所以,程序没有根本解决之道,只能从各邮件接收端自行设置了(从垃圾箱中移除),或者使用本邮箱发送,即qq发送到qq.163发往163.

 

       或者把服务放在阿里云服务器上边,可以避免这个问题(原因暂不明白)


参考链接:https://www.cnblogs.com/panchanggui/p/9962651.html

               http://www.360doc.com/content/18/0124/10/7831345_724640547.shtml

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值