阿里云服务器 通过JavaMail发送邮箱STMP问题( 25端口被禁用 使用SSL协议465端口 )
1 问题描述
我们传统使用的比较简单的是 STMP 25端口收发邮件
今天发现刚购买的阿里云服务器不能作为客户端通过STMP 25端口发送邮件
开始在网上有说发现是JDK1.8的原因,然后自己也把JDK1.8换到了JDK1.7 还是不行,所以这里排除了JDK的原因。
那么问题来了,是否25端口不能连接适用喃?
然后在终端输入命令行 ,可测试25端口是否可连接。
telnet smtp.163.com 25

返回成功 说明你的服务器 是没有封掉25端口的。上面的图是我自己的电脑,当然能连通。
当换到服务器测试的时候 就会出现一只连接不成功

找了很久的问题,突然在阿里云客服社区发现一个帖子,当中有客服的解释,当然我不是第一个遇到这个问题的人。
那么客服的解释一下就说明的问题:好像是将25端口封掉了 时间是2016年9月底以后新购买的服务器。

2 问题解决
那么问题找到了 那就需要将25端口换到465端口 采用SSL协议传输邮件。
好了贴代码时间到:
下面这段代码是采用SSL协议发送邮件,可向多人单人发送邮件
public static boolean sslSend(MessageInfo msg1, EmailAccount emailAccount)
throws AddressException, MessagingException, IOException{
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
// Get a Properties object
Properties props = new Properties();
props.setProperty("mail.smtp.host", emailAccount.getPlace());
props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
props.setProperty("mail.smtp.socketFactory.fallback", "false");
props.setProperty("mail.smtp.port", "465");
props.setProperty("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.auth", "true"); final String username = emailAccount.getUsername();
final String password = emailAccount.getPassword();
Session session = Session.getDefaultInstance(props, new Authenticator(){
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}});
Message msg = new MimeMessage(session); // 设置发件人和收件人
msg.setFrom(new InternetAddress(emailAccount.getUsername()));
List<String> tos = msg1.getTo();
Address to[] = new InternetAddress[tos.size()];
for(int i=0;i<tos.size();i++){
to[i] = new InternetAddress(tos.get(i));
}
// 多个收件人地址
msg.setRecipients(Message.RecipientType.TO, to);
msg.setSubject(msg1.getSubject()); // 标题
msg.setText(msg1.getMsg());// 内容
msg.setSentDate(new Date());
Transport.send(msg);
System.out.println("EmailUtil ssl协议邮件发送打印" +msg.toString());
return true;
}
EmailAccout 字段
// 邮箱用户
private String username; // 邮箱密码
private String password; // 邮箱服务器
private String place;
MessageInfo 字段
@NameCN("发件人地址")
private String from;
@NameCN("收件人地址")
private List<String> to;
@NameCN("发送时间")
private Date sendDate;
@NameCN("邮件主题")
private String subject;
@NameCN("消息正文")
private String msg;
将需要的信息,写入这两个Bean,传入最上面的方法即可 使用。
下面是25端口 非SSl协议传输代码块
public void doSend(MessageInfo msg, EmailAccount emailAccount) {
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setFrom(msg.getFrom());// 设置发送者地址
List<String> tos = msg.getTo();
String to[] = new String[tos.size()];
tos.toArray(to);
simpleMailMessage.setTo(to);// 设置接受者地址,可多个
simpleMailMessage.setSubject(msg.getSubject());
simpleMailMessage.setSentDate(msg.getSendDate());
simpleMailMessage.setText(msg.getMsg());
simpleMailMessage.setFrom(emailAccount.getUsername());
System.out.println("EmailUtil 邮件发送打印 1111" + simpleMailMessage.toString());
JavaMailSenderImpl s = new JavaMailSenderImpl();
s.setHost(emailAccount.getPlace());
// s.setPort(25);
s.setUsername(emailAccount.getUsername());
s.setPassword(emailAccount.getPassword());
s.send(simpleMailMessage);
}
这是参考的引入
import java.io.IOException;
import java.security.Security;
import java.util.Date;
import java.util.List;
import java.util.Properties; import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage; import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper; import 项目包名.MessageInfo;
import 项目包名.EmailAccount;
javamail是spring里的javamail jar包。
OK当我们使用465端口SSL协议的时候,顺利的在服务器上发出邮件了。
阿里云服务器 通过JavaMail发送邮箱STMP问题( 25端口被禁用 使用SSL协议465端口 )的更多相关文章
- 阿里云服务器 通过JavaMail发送邮箱STMP问题 25端口被禁用 使用SSL协议465端口
1 问题描述 我们传统使用的比较简单的是 STMP 25端口收发邮件 今天发现刚购买的阿里云服务器不能作为客户端通过STMP 25端口发送邮件 开始在网上有说发现是JDK1.8的原因,然后自己也把JD ...
- 阿里云服务器 发送邮箱 STMP 25端口 465端口问题 Javamail 25被禁用
我们传统使用的比较简单的是 STMP 25端口收发邮件 今天发现刚购买的阿里云服务器不能作为客户端通过STMP 25端口发送邮件 开始在网上有说发现是JDK1.8的原因,然后自己也把JDK1.8换到了 ...
- 阿里云服务器发送邮件:Connection could not be established with host smtp.qq.com [Connection timed out #110]
阿里云服务器发送邮件:Connection could not be established with host smtp.qq.com [Connection timed out #110] 一.总 ...
- 阿里云服务器对外开放tomcat端口访问
今天第一次在阿里云服务器ecs上安装完成tomcat,然后启动tomcat之后.在本地输入ip:端口,发现不能访问. 出现这个的原因可能是你购买的服务器是 专有网络 类型的 如果是专有网络类型的服务器 ...
- 阿里云服务器 centos7 中继邮箱+转发服务 详细配置
阿里云centos7 邮箱转发服务配置 一.文档编写目的: 网络拓扑图: 阿里云服务器屏蔽掉25端口后,内网服务器如何通过跳板机发送邮件到外网邮箱. 如果是可联网的阿里云机器,可以直接配置mailx使 ...
- 阿里云服务器上通过Docker部署redmine
背景:在日常工作的过程中会遇到各种各样的问题,每个问题来了之后需要花时间解决.这里就面临两个问题. 1:问题责任不明确,有时候会遇到数据库或者物理服务器的问题,这时候就需要把相应问题指派给相应的人,传 ...
- c#阿里云服务器发送邮件
public static void SendMailUse() { string host = "smtp.lotusest.com";// 邮件服务器smtp.163.com表 ...
- Django项目部署到阿里云服务器无法发送邮件,发送邮件超时问题解决
前言 今天, 博主将写了好久的一个Django小项目尝试在阿里云部署上线,由于项目中需要发送邮件,博主调用了163邮箱接口,在本地测试邮件功能正常,可是上线后,邮件功能一直超时崩溃.在百度一番查资料后 ...
- 云服务器ECS优惠券 阿里云 ecs 5折优惠码 阿里云5折优惠码 阿里云5折推荐码 阿里云优惠码 阿里云的5折优惠券 阿里云服务器购买优惠码 服务器购买优惠码
阿里云代金券 | 阿里云优惠券云服务器ECS,就是阿里云服务器,大家一定要清楚.云服务器ECS优惠券官方领取优惠页面:https://promotion.aliyun.com/ntms/act/amb ...
随机推荐
- Http学习之使用HttpURLConnection发送post和get请求(2)
接上节Http学习之使用HttpURLConnection发送post和get请求 本节深入学习post请求. 上 节说道,post请求的OutputStream实际上不是网络流,而是写入内存,在ge ...
- rownum基本用法
对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,且rownum不能以任何表的名称作为前缀. ...
- LINUX 硬盘分区及文件系统
一,top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. 1. 第一行是任务队列信息 2. 第二.三行为进程和CPU的信息 3. 第 ...
- Jmeter Boss系统login
之前说,想学习并且掌握自动化测试,但是,折腾过来折腾过去,逐渐意识到了,app自动化测试分为UI层面还有接口测试.(其实,功能测试就是UI+接口测试的集合,当然,只是我自己这么认为,hhhhhhh) ...
- Vue单页式应用(Hash模式下)实现微信分享
前端微信分享的基本步骤: 一.绑定域名: 先登录微信公众平台进入"公众号设置"的"功能设置"里填写"JS接口安全域名".这个不多说,微信开发 ...
- {网络编程}和{多线程}应用:基于UDP协议【实现多发送方发送数据到同一个接收者】--练习
要求: 使用多线程实现多发送方发送数据到同一个接收者 代码: 发送端:可以在多台电脑上启动发送端,同时向接收端发送数据 注意:匹配地址和端口号 package com.qf.demo; import ...
- java 中变量存储位置的区别
1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制. 2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字 ...
- Bash中的特殊变量和位置参量
位置参量:向脚本或函数传递的参数,可以被set命令设置.重置和清空. 1.$$ 当前Shell的PID 2.$- 当前Shell的选项,如果是交互式shell,应该包含字符i,例如$ echo $-h ...
- 在firefox的flashgot中配置各种下载器
一.在firefox中安装flashgot下载管理器 flashgot是firefox的一个扩展,在联网的情况下,可以在firefox中的附加组件中搜索flashgot,然后安装. 二.在flashg ...
- python 标准库 -- re
re 正则表达式 语法 import re m = re.search('[0-9]','abc4def67') # 匹配字符及匹配范围 print m.group(0) # 返回匹配结果 re.se ...