【腾讯云】记录一次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的解决办法[通俗易懂]

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 归来的技术栈——无状态的服务端

    归来的技术栈——无状态的服务端

    2022年3月7日
    44
  • <noscript>元素[通俗易懂]

    <noscript>元素[通俗易懂]早期浏览器都面临一个特殊的问题,即当浏览器不支持JavaScript时如何让页面平稳地退化。对这 个问题的最终解决方案就是创造一个<noscript>元素,用以在不支持JavaScript的浏览器中显示替代 的内容。这个元素可以包含能够出现在文档<body>中的任何HTML元素——<script>元素除外。包含 在<noscript&gt…

    2025年6月10日
    0
  • VMWare安装Win10虚拟机详细教程

    VMWare安装Win10虚拟机详细教程1. 安装Win10之前,先检查VMware虚拟网卡是否正常打开控制面板,找到网络和Internet点击更改设备器配置,查看VMware虚拟网卡是否存在和已启用2. 还原默认设置(网卡正常跳过此步骤)点击VMware中的—编辑—虚拟网络编辑器点击左下角的—还原默认设置3. 虚拟网卡正常后,开始创建虚拟机4. 选择—自定义(高级)©5. 根据自己安装的VMware选择合适的—硬件兼容性6. 选择自己所需要的Windows系统镜像进行安装7.

    2022年6月26日
    122
  • charles乱码怎么解决_抓包精灵乱码

    charles乱码怎么解决_抓包精灵乱码前言当使用Charles抓包时,发现数据都是乱码,这时需要安装证书解决办法1.点击charles窗口,点击左上角Help->SSLProxying→InstallCharles

    2022年7月31日
    3
  • 学生信息管理系统登录入口_学生信息管理系统Java sql

    学生信息管理系统登录入口_学生信息管理系统Java sqlphp大作页,使用php+mysql技术,实现了基本的分页,信息查询,修改,增加,删除操作有以下几个基本页面登录页面首页修改学生基本信息修改学生学籍信息修改学生成绩信息增加学生信息源码在我的github上,欢迎大家访问https://gitee.com/zxhjames/zxh/tree/master/StudentInformationManageSystem…………………

    2022年10月2日
    0
  • 用AliDDNS脚本实现动态域名

    用AliDDNS脚本实现动态域名Aliyunddns脚本实现动态域名安装1.yum安装必须的软件[root@VM_0_16_centos~]#yuminstall-ywgetcurlcronie2.下载脚本至/usr/sbin/文件夹[root@VM_0_16_centos~]#wget-O/usr/sbin/aliddns.shhttps://bitbucket.org/ilemonrain/aliddns/downloads/AliDDNSv3-Build20181113-PreviewBuil

    2022年5月2日
    171

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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