阿里云服务器 发送邮箱 STMP 25端口 465端口问题 Javamail 25被禁用

我们传统使用的比较简单的是 STMP 25端口收发邮件

今天发现刚购买的阿里云服务器不能作为客户端通过STMP 25端口发送邮件

开始在网上有说发现是JDK1.8的原因,然后自己也把JDK1.8换到了JDK1.7 还是不行,所以这里排除了JDK的原因。

那么问题来了,是否25端口不能连接适用喃?

然后在终端输入命令行 ,可测试25端口是否可连接。

telnet smtp.163.com 25 

返回成功 说明你的服务器 是没有封掉25端口的。上面的图是我自己的电脑,当然能连通。

当换到服务器测试的时候 就会出现一只连接不成功

找了很久的问题,突然在阿里云客服社区发现一个帖子,当中有客服的解释,当然我不是第一个遇到这个问题的人。

那么客服的解释一下就说明的问题:好像是将25端口封掉了 时间是2016年9月底以后新购买的服务器。

那么问题找到了 那就需要将25端口换到465端口 采用SSL协议传输邮件。

好了贴代码时间到:

下面这段代码是采用SSL协议发送邮件,可向多人单人发送邮件

import java.io.File;
import java.io.UnsupportedEncodingException;
import java.security.Security;
import java.util.Date;
import java.util.Map;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;

/**
 * 邮件处理类
 *
 * @author jiafuwei
 *
 */
public class MailUtil {

    private static final String FROM_MAIL_SMTP = "smtp.exmail.qq.com";
    private static final String FROM_MAIL_NAME = "[email protected]";
    private static final String FROM_MAIL_PASS = "xxxxxxx";

    /**
     * 发送邮件(灵活度高,通用版)
     * @param from 发件人
     * @param to 收件人, 多个Email以英文逗号分隔
     * @param cc 抄送, 多个Email以英文逗号分隔
     * @param subject 主题
     * @param content 内容
     * @param fileList 附件列表
     * @return
     */
    public static boolean sendMail(String to, String cc, String subject, String content, String[] fileList){
         try {
             Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
             final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
             final Properties p = System.getProperties() ;
             p.setProperty("mail.smtp.host", FROM_MAIL_SMTP);
             p.setProperty("mail.smtp.auth", "true");
             p.setProperty("mail.smtp.user", FROM_MAIL_NAME);
             p.setProperty("mail.smtp.pass", FROM_MAIL_PASS);

             p.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
             p.setProperty("mail.smtp.socketFactory.fallback", "false");
             //邮箱发送服务器端口,这里设置为465端口
             p.setProperty("mail.smtp.port", "465");
             p.setProperty("mail.smtp.socketFactory.port", "465");

            // 根据邮件会话属性和密码验证器构造一个发送邮件的session
            Session session = Session.getInstance(p, new Authenticator(){
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(p.getProperty("mail.smtp.user"),p.getProperty("mail.smtp.pass"));
                }
            });
            session.setDebug(true);
            Message message = new MimeMessage(session);
            //消息发送的主题
            message.setSubject(subject);
            //接受消息的人
            message.setReplyTo(InternetAddress.parse(FROM_MAIL_NAME));
            //消息的发送者
            message.setFrom(new InternetAddress(p.getProperty("mail.smtp.user"),"河马评测"));
            // 创建邮件的接收者地址,并设置到邮件消息中
            String[] split = to.split(",");
            InternetAddress []tos = new InternetAddress[split.length];
            for (int i = 0; i < split.length; i++) {
                tos[i]=new InternetAddress(split[i]);
            }
            // 设置抄送人
            if (cc != null && cc.length() > 0) {
                message.setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc));
            }
            message.setRecipients(Message.RecipientType.TO, tos);
            // 消息发送的时间
            message.setSentDate(new Date());
            Multipart mainPart = new MimeMultipart();
            // 创建一个包含HTML内容的MimeBodyPart
            BodyPart html = new MimeBodyPart();
            // 设置HTML内容
            html.setContent(content, "text/html; charset=utf-8");
            mainPart.addBodyPart(html);
            // 将MiniMultipart对象设置为邮件内容
            message.setContent(mainPart);
            // 设置附件
            if (fileList != null && fileList.length > 0) {
                for (int i = 0; i < fileList.length; i++) {
                    html = new MimeBodyPart();
                    FileDataSource fds = new FileDataSource(fileList[i]);
                    html.setDataHandler(new DataHandler(fds));
                    html.setFileName(MimeUtility.encodeText(fds.getName(), "UTF-8", "B"));
                    mainPart.addBodyPart(html);
                }
            }
            message.setContent(mainPart);
            message.saveChanges();
            Transport.send(message);
         } catch (MessagingException e) {
             e.printStackTrace();
             return false;
         } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
            return false;
        }
        return true;
    }

    /**
     * 测试Mian方法
     *
     * @param args
     */
    public static void main(String[] args) {
        String content = "<html><head><style type=‘text/css‘>p{padding-left:50px;font-family:‘楷体‘;font-size:20px;}table{padding-left:50px;border:0;font-family:‘楷体‘;font-size:30px;}</style></head><body>您好:<br/><p>申请编号为"+"测试测试内容"+"的经销商对订单发起放弃签约,具体信息如下:</p><table border=‘1‘  cellpadding=‘10‘ cellspacing=‘0‘> <tr align=‘center‘><td width=‘200‘>经销商</td> <td width=‘300‘>"+"无需回复"+"</td> </tr> <tr align=‘center‘><td>申请编号</td><td>"+"测试测试内容"+"</td></tr> <tr align=‘center‘><td>取消时间</td><td>"+"无需回复"+"</td></tr> <tr align=‘center‘><td>加装GPS数量</td><td>"+"测试测试内容"+"</td></tr> <tr align=‘center‘><td>GPS IMEI号</td><td>"+"测试测试内容"+"</td></tr><tr align=‘center‘><td>店铺地址</td><td>"+"测试测试内容"+"</td></tr> <tr align=‘center‘><td>店铺联系人姓名</td><td>"+"测试测试内容"+"</td></tr> <tr align=‘center‘><td>店铺联系人电话</td><td>"+"测试测试内容"+"</td></tr> </table><p>请及时联系GPS相关人员,安排上门拆装,谢谢!</p>------------------------------------------------------------------------------</body></html>";
        content = "<html><head><style type=‘text/css‘>p{padding-left:50px;font-family:‘楷体‘;font-size:20px;}table{padding-left:50px;border:0;font-family:‘楷体‘;font-size:30px;}</style></head><body>Hey:<br/><p>我们发现您的用户评测报告已经出来了,赶紧来看看:</p><p>用户:吕坤     手机号:17697182873    评测进度:3/9 (评测越多,报告越丰富哦):</p><p>河马小提示:点击链接查看报告</p><p>个人信用报告:<a href=‘https://axhub.im/pro/dbf03b6626db7bde/‘ target=‘_blank‘>https://axhub.im/pro/dbf03b6626db7bde/</a></p><p>联系人信息:<a href=‘https://axhub.im/pro/dbf03b6626db7bde/‘ target=‘_blank‘>https://axhub.im/pro/dbf03b6626db7bde/</a></p></body></html>";
        System.out.println(content);
        String[] fileList = new String[1];
        fileList[0] = "d:/pac.txt";
        sendMail("[email protected]", "[email protected]", "测试测试", content,fileList);
    }
}

OK当我们使用465端口SSL协议的时候,顺利的在服务器上发出邮件了。

原文地址:https://www.cnblogs.com/xk920/p/12008717.html

时间: 2024-10-06 23:27:13

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

阿里云服务器不能发邮件,禁用25端口的解决办法

前阵子刚刚买了个阿里云服务器,在做发送邮件功能时,发现本来在本地测试没问题的功能,在服务器上连接超时. 后来发现是阿里云将25端口禁用了("坑!当然也有其道理"),大概2016年9月后买的服务器都被禁用.25禁用了,我们就不用它.以163邮箱为例: 网易163免费邮箱相关服务器信息: 我这里用的就是SSL协议端口465,代码如下 <?phpheader("content-type:text/html;charset=utf-8");include("

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

通常我们在本地使用Java发送邮件,通常是没有问题的,但是部署到服务器的话,就可能遇到问题.当然了,这与运营商也有关系.比如我之前在咖啡主机上购买虚拟机,然后将个人网站部署上去,通常是没有问题的,没有那么多限制. 但是在阿里云上限制就比较多,比如如果端口的入口方向不开的话,可能导致你在服务器上安装的某款软件,例如常用的Tomcat,会无法使用. 一来端口没有开放,二来白名单设置问题. 今天说说阿里云服务器25端口禁用之如何解决它并成功发送邮件,首先贴完整代码,如下所示: package com.

使用阿里云服务器写shell脚本发送qq邮件的三个形式

[准备工作] IPtables的使用如下命令:(执行以下以下命令把25和465端口打开) iptables -A INPUT -p tcp --dport 25 -j ACCEPT iptables -A OUTPUT -p tcp --sport 25 -j ACCEPT iptables -A INPUT -p tcp --dport 465 -j ACCEPT iptables -A OUTPUT -p tcp --sport 465 -j ACCEPT 要先开启 经过以上的三步我们就可以

阿里云 服务器 邮件发送

使用SMTP(简单邮件传输协议)发送邮件一般都是使用默认的25端口,而阿里云服务器为了安全将25端口封禁了,会出现在本机测试发送邮件功能正常,但是部署到服务器上却发送失败的情况. 解决办法是向阿里云申请解封25端口,或者更换端口,建议使用587端口(有的说465可用但经过测试不可用) using System.Configuration; using System.Collections.Specialized; using System.IO; using System.Net.Mail; p

阿里云服务器 端口开放问题 浏览器钟输入ip 访问服务器

在这里先用一堆粗口强烈吐槽阿里云服务器控制台,屎一样的界面,简直非人类的操作.想找一个功能简直无从下手. 场景: 今天刚在阿里云买了个服务器,打算愉快的用五分钟将数据库,apache,安装完毕,然后去玩游戏: 安装完数据库,发现远程链接不到,吓的我赶紧关掉防火墙,但是防火墙根本没开阿,原来阿里云自带需要在控制台配置开放3306端口才可以,其他云服务器根本没有这种吊毛操作.大家想正常访问网站还需要跟我以下一步一步的操作才行.由于阿里云的控制台经常变化(变来变去都是屎),所以可能有一天又不适用了.

阿里云服务器无法访问80端口的解决办法

1: 阿里云服务器无法访问80端口的解决办法 当我们搭建服务器时候,无论80,3306,21,等端口本地服务器上搭建环境就已经开通,但是服务器中防火墙中主要就是拦截端口的,在windows药在高级防火墙中添加站入端口一个个配置,在阿里云中还要在控制台中开通的

阿里云服务器win2003下iis整合tomcat共享80端口

阿里云服务器win2003下iis整合tomcat共享80端口 很多机器都用tomcat跟IIS部署不同网站.最近买了阿里云的服务器.于是也想玩一下.网上百度了很多方法.但是都有缺陷说的不是很清楚.通过日志查看以及谷歌.尝试了很多方法终于配置OK.         第一.整合环境:Windows Service 2003.JDK1.60.IIS6.0 和tomcat7.0         第二.使用技术:IIS6.0和TOMCAT6.0的默认端口不用改变,使用原有的80和8081(因为本人数据库

解决阿里云服务器3306端口无法访问的问题(windows server 2008r2)

3306端口一般是指mysql数据的默认端口.郁闷了几天的问题,远程无法连接服务器上的mysql服务.今天终于得到彻底解决. 首先,你要确保在服务器上安装好Mysql,并能本地启动.修改密码(如不知道怎么修改密码或者安装过程中遇到各种问题,可以访问我的另一篇博客:http://www.cnblogs.com/hyyq/p/6219083.html)后,通过诸如Navicat的可视化界面管理工具连接数据库,打开mysql这个数据库中的user表,将user是root的这一行数据的host由loca

阿里云服务器无法访问80端口或8888等端口解决办法

阿里云有安全策略组机制.以80端口为例讲解! 阿里云服务器无法访问80端口的解决办法 朋友购买了一台阿里云服务器,配置了半天就是无法从外网访问到配置的网站,IP直接访问也不行.让我帮忙看看. 我首先检查了一下防火墙,看端口没并有被禁用.仔细检查服务器,端口也没有冲突.localhost访问是正常的,这说明只是端口被禁止访问了.后来登录阿里云管理控制台,终于找到了原因. 步骤如下: 1.登录阿里云的管理控制台.找到那台云服务器: 2.在操作的部分点击“更多”,里面藏着一个“安全组配置”: 3.进入