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协议的时候,顺利的在服务器上发出邮件了。

阿里云服务器 发送邮箱 STMP 25端口 465端口问题 Javamail 25被禁用的更多相关文章

  1. 阿里云服务器连接邮箱SMTP服务器time out的解决

    给官方提了个工单,回复如下: 去年9月底开始,出于上级对垃圾邮件管控的要求,新购VPC服务器限制了25端口,我们建议您使用邮件服务商的加密465端口. 或者您查询下所希望访问的发信服务是否提供了像阿里 ...

  2. 阿里云服务器公网Ip外网无法访问

    拥有了自己的服务器后,发现需要各种配置,之前应用公司的服务器的时候,一般通过内网访问,或者外网访问时,很多配置其他人员都已经配置好了,但是现在在自己的服务器上发布自己的网站的时候,才发现事情并没有自己 ...

  3. 阿里云服务器CentOS7.5安装RabbitMQ

    RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件).RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的. 为什么 ...

  4. 远程访问阿里云服务器jupyter

    官网链接 一.pip安装jupyter安装Anaconda的话,会自动按照jupyter,就不需要再使用pip安装了 pip3 install jupyter 二.生成jupyter notebook ...

  5. 阿里云服务器搭建vulhub靶场

    阿里云服务器搭建vulhub靶场 环境 服务器:阿里云服务器 系统:centos7 应用:vulhub 步骤 vulhub需要依赖docker搭建,首先安装docker. 使用以下方法之一: # cu ...

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

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

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

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

  8. 阿里云服务器25端口禁用之如何使用Java发邮件(解决25端口禁用问题)

    通常我们在本地使用Java发送邮件,通常是没有问题的,但是部署到服务器的话,就可能遇到问题.当然了,这与运营商也有关系.比如我之前在咖啡主机上购买虚拟机,然后将个人网站部署上去,通常是没有问题的,没有 ...

  9. 阿里云服务器 centos7 中继邮箱+转发服务 详细配置

    阿里云centos7 邮箱转发服务配置 一.文档编写目的: 网络拓扑图: 阿里云服务器屏蔽掉25端口后,内网服务器如何通过跳板机发送邮件到外网邮箱. 如果是可联网的阿里云机器,可以直接配置mailx使 ...

随机推荐

  1. Linux_System2

    1.从服务器下载http*.tar.gz源码包,安装到/usr/local/apache目录下,要求安装时指定能够动态加载模块,能够支持地址回写功能,能够使用ssl加密功能../configure — ...

  2. 解压文件--linux

    linux下不同的文件格式用不同的命令解压. 对于tar.gz文件,用以下命令. .tar.gz 和 .tgz解压:tar zxvf FileName.tar.gz压缩:tar zcvf FileNa ...

  3. YII 1.0 验证码

    public function actions(){ return array ( ‘captcha’=> array( ‘class’=> ‘CCatpchaAction’, ‘heig ...

  4. Java经典案例之-“成绩等级划分”

    /** * 描述:在对话框中输入学习成绩,利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示, * 60分以下的用C表示. * 分析:可以利用三目运算符 ...

  5. bootstrap的alert提示框的关闭后再显示问题

    bootstrap中有alert组件,如果点击关闭按钮后该组件会被删除而不是被隐藏,想再显示怎么办呢? bootstrap-alert.js源码片段: function removeElement() ...

  6. C# Unity游戏开发——Excel中的数据是如何到游戏中的 (二)

    本帖是延续的:C# Unity游戏开发——Excel中的数据是如何到游戏中的 (一) 上个帖子主要是讲了如何读取Excel,本帖主要是讲述读取的Excel数据是如何序列化成二进制的,考虑到现在在手游中 ...

  7. 用c3m自动生成的化学机理文件导入mfix里需要注意的一些问题

    1. 首先是类似这种写法: Species_g(1) = "CH4" Species_Alias_g(1) = "CH4" 可能会报错,写在一行可能就好了,如: ...

  8. JavaScript 轻松创建级联函数

    级联函数是什么? 在一行代码上,调用一个接一个的方法.这种技术在 JQuery 或者其他 JavaScript 库中是非常常见的. 代码如下: $('#myDiv').fadeOut().html(' ...

  9. 30万奖金!还带你奔赴加拿大相约KDD!?阿里聚安全算法挑战赛带你飞起!

    KDD(Knowledge Discovery and Data Mining,知识发现与数据挖掘)会议,作为数据挖掘届的顶会,一直是算法爱好者心中的圣地麦加. 想去?有点难. ​ 给你奖金和差旅赞助 ...

  10. ASP.NET Zero--14.一个例子(7)商品分类管理-分类搜索及分页

    分类搜索实现 1.添加搜索框 打开Index视图,添加一个搜索框,代码如下: ... <div class="portlet light"> <div class ...