zoukankan      html  css  js  c++  java
  • 关于使用Java Mail进行邮件发送,抛出Could not connect to SMTP host: xx@xxx.com, port: 25的异常可能

    关于使用Java Mail进行邮件发送,抛出Could not connect to SMTP host: xx@xxx.com, port: 25的异常可能

    在本人工作的过程中,遇到了形形色色的问题。当时琢磨了好久才琢磨出这样的总结,贴出来供大家参考参考。以下观点仅代表本人在工作过程中的观点,望大家能够共同讨论,查漏补缺。

    当我们使用Java Mail进行邮件发送的时候,有时候会抛出Could not connect to SMTP host: xx@xxx.com, port: 25的异常。

    一般的,处理该异常的做法都是去检查我们的配置是否出现了错误,即去检查是不是我们配置的邮件服务器的smtp地址写错了。 这时候要注意了,如果是密码或者是用户名错误,是不会抛出连接不上smtp地址的异常的,

    而是会报出javax.mail.AuthenticationFailedException,如果我们配置了debug,

    那么就会发现邮件服务器返回的消息是535 Error: authentication failed。 通常的,

    smtp地址错误或者是端口号配置错误,那么改回正确的地址以及端口就行了。这个没有什么好说的。 而现在需要讨论的是,如果是在保证全部配置都是正确的情况下,那么还出现这种情况,还抛出异常,那又是怎么回事呢?

    而这也是我所遇到的情况。找了很多的资料,想过很多种情况,最后将想法定在了是不是smtp的25端口会对linux服务器做出限制。 根据这样的想法,我在网上搜索了一下,并没有找到对应的解决方法。

    当然,经过多次的寻找,我在百度知道找到了一丝蛛丝马迹。其中该提问者提到的问题跟我所遇到的问题与我有点关联:

    该服务器下所有的链接外部25端口的操作都返回超时异常。 于是乎,考虑到这样的情况,我自身去尝试了telnet一下连接许多主流的邮箱的smtp地址,其中包括:

    1、smtp.sina.com.cn 25端口

    2、smtp.163.com 25端口

    3、smtp.exmail.qq.com 25端口

    4、smtp.126.com 25端口

    5、smtp.qiye.163.com 25端口

    而测试的结果与网上说的问题大致一样。全部smtp地址的25端口都显示超时。

    而我使用公司的另外两台服务器去访问,同样是25端口,都没有问题,都能连接成功。

    接着我立刻打电话给阿里云的客服(公司服务器用的是阿里云),问他们是否对25端口进行了限制。那边的客服的回答是为了避免垃圾邮件的泛滥,阿里云将25端口都全部封禁了。

    他的回复当时就让我释怀了。 但是因为我们公司有另外一个服务器也是同样用着25端口,

    却没有被封禁,我又接着问了是怎么回事。而客服说他也不清楚,只是说有可能是该服务器的25端口没有被检测到,因此没有被封禁。

    我也是醉了。 那么现在问题就已经释然了。 针对以上的推测和测试,那么问题就很有可能是: 服务器的提供商过滤了smtp的端口!!!

    因此,针对这种情况的发生,我将端口换成了465端口,也就是加入了SSL验证,测试,问题迎刃而解!

    最后总结: 如果当我们是用Java Mail进行邮件发送的时候,抛出了Could not connect to SMTP host: xx@xxx.com, port: 25的异常。排除配置错误的可能, 那么就很有可能是你的服务器的运营商将25端口封禁了! 这时候就需要你打电话给你的服务器运营商客服询问。 如果是,改成其他可用的smtp端口即可!如阿里云的465端口!

         /** 邮件服务器 */
    	public static String SMTP_HOST = "smtp.163.com";
    	/** 邮件服务器端口 */
    	public static String SMTP_PORT = "465";
         /** 字符集 */
    	public static String SMTP_CHARSET = "UTF-8";
    	/**邮件发送方式 */
    	public static String MAIL_TYPE = "smtp";
    	/** ssl */
    	public static boolean SMTP_SSL = true;
    

      

  • 相关阅读:
    BigDecimal加减乘除计算方式
    Element-UI 关于table中fixed使用和table样式混乱问题处理
    java集合框架中contains(),containsKey()和containsValue()的用法
    Vue中子组件watch监听props中父组件对象的变化的坑
    js中使用splice在一次循环删除数组中的多个元素
    Java中instanceof关键字的理解
    List.contains(Object object)方法,比较对象是否相同
    Vue 动态路由的实现以及 Springsecurity 按钮级别的权限控制
    sql中#与$的区别
    Vue自定义指令实现按钮级权限控制功能
  • 原文地址:https://www.cnblogs.com/w1995w/p/10563014.html
Copyright © 2011-2022 走看看