【腾讯云】记录一次Could not connect to SMTP host: smtp.163.com, port: 25的解决办法[通俗易懂]

【腾讯云】记录一次Could not connect to SMTP host: smtp.163.com, port: 25的解决办法[通俗易懂]问题描述最近准备将一个项目发布到腾讯云,在本地所有的功能都能够实现的很好,但是一到腾讯云上面就出现了一个问题:错误报告内容:CouldnotconnecttoSMTPhost:smtp.163.com,port:25翻译起来就是:不能连接到smtp.163.com,因为25号端口的原因。问题解决这是因为腾讯云(阿里云)基于安全考虑,会禁用25端口。………

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

问题描述

最近准备将一个项目发布到腾讯云,在本地所有的功能都能够实现的很好,但是一到腾讯云上面就出现了一个问题:

错误报告内容:Could not connect to SMTP host: smtp.163.com, port: 25

翻译起来就是:不能连接到smtp.163.com,因为25号端口的原因。 

【腾讯云】记录一次Could not connect to SMTP host: smtp.163.com, port: 25的解决办法[通俗易懂]

问题解决

这是因为腾讯云(阿里云)基于安全考虑,会禁用25端口。

下面是腾讯云的后台:

【腾讯云】记录一次Could not connect to SMTP host: smtp.163.com, port: 25的解决办法[通俗易懂]

解决的办法有:

  1. 解封25号端口(不推荐);
  2. 使用其他端口(465号端口,推荐)。

下面是163邮箱的截图:

【腾讯云】记录一次Could not connect to SMTP host: smtp.163.com, port: 25的解决办法[通俗易懂]

也就是说,可以修改为:

public static void main(String[] args) throws Exception {
        Properties prop = new Properties();
        //协议
        prop.setProperty("mail.transport.protocol", "smtp");
        //服务器
        prop.setProperty("mail.smtp.host", "smtp.exmail.qq.com");
        //端口
        prop.setProperty("mail.smtp.port", "465");
        //使用smtp身份验证
        prop.setProperty("mail.smtp.auth", "true");

        //获取Session对象
        Session s = Session.getDefaultInstance(prop,new Authenticator() {
            //此访求返回用户和密码的对象
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                PasswordAuthentication pa = new PasswordAuthentication("***", "********");
                return pa;
            }
        });
        //设置session的调试模式,发布时取消
        s.setDebug(true);
        MimeMessage mimeMessage = new MimeMessage(s);
        try {
            mimeMessage.setFrom(new InternetAddress("***@163.com"));
            mimeMessage.addRecipient(Message.RecipientType.TO, new InternetAddress("********@**.com"));
            //设置主题
            mimeMessage.setSubject("账户密码重置");
            mimeMessage.setSentDate(new Date());
            //设置内容
            mimeMessage.setText("您使用了密码重置功能");
            mimeMessage.saveChanges();
            //发送
            Transport.send(mimeMessage);
        } catch (MessagingException e) {
            e.printStackTrace();
        }
        
    }

更优的解决方案

在上面的腾讯云的后台上,写明了还有一个解决方案(推荐):腾讯企业邮箱

也就是说:我们可以使用域名作为邮箱的后缀!

比如:我的域名是lvchademiao.com,这样可以使用message.lvchademiao.com作为邮箱来进行发送邮件!

这是一个不错的操作,而且这个功能是免费的!

附上地址:腾讯企业邮箱

接下来就是一堆注册等步骤。注册完之后,申请到了一个邮箱message.lvchademiao.com。

接下来,又一个问题出来了:

【腾讯云】记录一次Could not connect to SMTP host: smtp.163.com, port: 25的解决办法[通俗易懂]

错误报告内容:535 Error: ÇëʹÓÃÊÚȨÂëµÇ¼(一堆乱码)

【腾讯云】记录一次Could not connect to SMTP host: smtp.163.com, port: 25的解决办法[通俗易懂]

网上的解决办法都是说没有使用授权码!

大哥,用邮箱的SMTP功能我能不知道使用授权码嘛!!

最终关键点在于:发件人账号是个人免费邮箱时username可以不加@及其后面的,但是如果发件人账号是企业邮箱时,发件人账号必须加@及其后面的。

即个人免费邮箱可以如下:ms.setAuth(“111111111”, “password1”);

但是企业邮箱必须是这样:ms.setAuth(“111111111@xxx.com”,”password1″);

也就是说:

public static void main(String[] args) throws Exception {
        Properties prop = new Properties();
        //协议
        prop.setProperty("mail.transport.protocol", "smtp");
        //服务器
        prop.setProperty("mail.smtp.host", "smtp.exmail.qq.com");
        //端口
        prop.setProperty("mail.smtp.port", "465");
        //使用smtp身份验证
        prop.setProperty("mail.smtp.auth", "true");

        //使用SSL,企业邮箱必需!
        //开启安全协议,如果出错显示类不存在,就更新mail的jar包
        MailSSLSocketFactory sf = null;
        try {
            sf = new MailSSLSocketFactory();
            sf.setTrustAllHosts(true);
        } catch (GeneralSecurityException e1) {
            e1.printStackTrace();
        }
        prop.put("mail.smtp.ssl.enable", "true");
        prop.put("mail.smtp.ssl.socketFactory", sf);

        //获取Session对象
        Session s = Session.getDefaultInstance(prop,new Authenticator() {
            //此访求返回用户和密码的对象
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                PasswordAuthentication pa = new PasswordAuthentication("message@lvchademiao.com", "********");
                return pa;
            }
        });
        //设置session的调试模式,发布时取消
        s.setDebug(true);
        MimeMessage mimeMessage = new MimeMessage(s);
        try {
            mimeMessage.setFrom(new InternetAddress("message@lvchademiao.com"));
            mimeMessage.addRecipient(Message.RecipientType.TO, new InternetAddress("********@**.com"));
            //设置主题
            mimeMessage.setSubject("账户密码重置");
            mimeMessage.setSentDate(new Date());
            //设置内容
            mimeMessage.setText("您使用了密码重置功能");
            mimeMessage.saveChanges();
            //发送
            Transport.send(mimeMessage);
        } catch (MessagingException e) {
            e.printStackTrace();
        }
        
    }

【腾讯云】记录一次Could not connect to SMTP host: smtp.163.com, port: 25的解决办法[通俗易懂]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/186131.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 固态硬盘坏了怎么恢复数据恢复不了_笔记本固态硬盘坏了数据能恢复吗

    固态硬盘坏了怎么恢复数据恢复不了_笔记本固态硬盘坏了数据能恢复吗今天的这篇经验和大家聊一聊关于固态硬盘坏了怎么恢复数据恢复的问题,希望能够帮助到有需要的朋友。方法/步骤 现在的电脑不用ssd简直对不起那么好的cpu,比较机械硬盘的速度才是目前整个电脑的性能瓶颈,而使用了ssd后,很多人都在说固态硬盘是不能恢复数据的,这是怎么回事呢?大家都知道传统的机械硬盘即便是数据删了,回收站清空了,只要不被大量的数据再次覆盖就可以恢复出原来的数据的,那么我什么这一点在ssd上不能用了呢?实测下来大多数默认的ssd数据丢失了都是10次有9次都恢复不了,为什么SSD的成…

  • Shell循环读取文件

    Shell循环读取文件注:部分概念介绍来源于网络方法1:while循环中执行效率最高,最常用的方法。functionwhile_read_LINE(){whilereadLINEdoecho$LINEdone<$FILENAME}注释:这种方式在结束的时候需要执行文件,就好像是执行完的时候再把文件读进去一样。方法2:重定向法;管道法:cat$FILENAME|whilereadLINEfunctionWhile_read_LINE(){cat$FILENAME|..

  • java redis锁_Java中Redis锁的实现[通俗易懂]

    java redis锁_Java中Redis锁的实现[通俗易懂]由于具体业务场景的需求,需要保证数据在分布式环境下的正确更新,所以研究了一下Java中分布式锁的实现。Java分布式锁的实现方式主要有以下三种:数据库实现的乐观锁Redis实现的分布式锁Zookeeper实现的分布式锁其中,较常用的是前两种方式,但是数据库实现方式需要较多的数据库操作,所以最终选择的是用Redis实现分布式锁。最初考虑分布式锁的数据安全性的时候,只考虑到两点。第一,Redis锁需要…

  • SSL证书安装指引

    SSL证书安装指引https://cloud.tencent.com/document/product/400/4143下载得到的www.domain.com.zip文件,解压获得3个文件夹,分别是Apache、

  • 数据仓库(四)之ETL开发

    数据仓库(四)之ETL开发 概述 ETL是数据仓库的后台,主要包含抽取、清洗、规范化、提交四个步骤,传统数据仓库一般分为四层模型。               分层的作用                                      STG层  在维度建模阶段已经确定了源系统,而且对源系统进行了…

  • AIC(最小信息化准则)

    AIC(最小信息化准则)AIC信息准则(即Akaikeinformationcriterion),是用来衡量统计模型拟合优良性的一个标准,是是由日本统计学家赤池弘次创立和发展的,因此也称为赤池信息量准则,它建立在熵的概念基础上,可以权衡所估计模型的复杂度和模型拟合数据的优良性。在一般情况下,AIC可以表示为:AIC=2k-2ln(L)其中:k是参数的数量,L是似然函数。假设条件是模型的误差服从独立正态分布。让n为观察…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号