邮件发送端口是否加密问题

发送邮件时候,出现一个问题:使用 25 端口的时候正常,但是使用 465端口的时候却总是不行。

1.问题

Exception in thread "main" java.lang.RuntimeException: org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.qq.com:465
    at com.rjj.tool.EmailTool.sendEmail(EmailTool.java:41)
    at com.rjj.tool.EmailTool.main(EmailTool.java:54)
Caused by: org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.qq.com:465
    at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1242)
    at org.apache.commons.mail.Email.send(Email.java:1267)
    at com.rjj.tool.EmailTool.sendEmail(EmailTool.java:39)
    ... 1 more
Caused by: javax.mail.MessagingException: Could not connect to SMTP host: smtp.qq.com, port: 465, response: -1
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1379)
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:412)
    at javax.mail.Service.connect(Service.java:310)
    at javax.mail.Service.connect(Service.java:169)
    at javax.mail.Service.connect(Service.java:118)
    at javax.mail.Transport.send0(Transport.java:188)
    at javax.mail.Transport.send(Transport.java:118)
    at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1232)
    ... 3 more

2.项目引入的jar都是有的

端口也是全部开放的。

3.代码是这样子的

 public static String sendEmail(String emailServer, Integer port, String fromEmail, String password, String toEmail,
            String title, String content) {

        SimpleEmail email = new SimpleEmail();
        // email.setSSL(true);
        if (StrKit.notBlank(emailServer)) {
            email.setHostName(emailServer);
        } else {
            // 默认使用本地 postfix 发送,这样就可以将postfix 的 mynetworks 配置为 127.0.0.1 或
            // 127.0.0.0/8 了
            email.setHostName("127.0.0.1");
        }

        // 如果密码为空,则不进行认证
        if (StrKit.notBlank(password)) {
            email.setAuthentication(fromEmail, password);
        }

        // 端口号不为空,使用配置的端口
        if (port != null) {
            //email.setSslSmtpPort(port.toString());
            email.setSmtpPort(port);
        }

        email.setCharset("utf-8");
        try {
            email.addTo(toEmail);
            email.setFrom(fromEmail);
            email.setSubject(title);
            email.setMsg(content);
            return email.send();
        } catch (EmailException e) {
            throw new RuntimeException(e);
        }
    }

找出问题所在是端口的问题,发邮件时候25端口不用加密也是可以使用,发邮件的的,但是465端口使用的时候需要加密的。

解决:代码中已经标识了,这里在发邮件的时候需要把邮件设置
SSL加密,就可以了,这里有两种方式:1.端口加密:email.setSslSmtpPort(port.toString());2.直接开启ssl加密: email.setSSL(true);

这样就可以正常发送邮件了。

一点一滴记录遇到的问题与解决方式。。。

原文地址:https://www.cnblogs.com/renjianjun/p/9291140.html

时间: 2024-08-30 15:35:01

邮件发送端口是否加密问题的相关文章

PHP mailer邮件发送

首先下载类库 phpmailer因为加载的是smtp.163.php 故发件人的邮箱要用163邮箱 其它邮箱需要其它类库引入,我的附件.xls是你要添加的附件,可以是任意类型. <?php echo "<meta CharSet='utf-8'>"; require_once('class.phpmailer.php'); $mail = new PHPMailer(); //实例化 $mail->IsSMTP(); // 启用SMTP $mail->Ho

thinkphp 邮件发送

最近项目上要求,要做个邮件发送的功能,因为用到的框架是ThinkPHP,于是就自己整理一下. 引入class.phpmailer.php,大家可以去这个链接去下载: http://pan.baidu.com/s/1eRb40iY 界面demo,大家可以自行丰富: 在Home文件夹中建立文件Lib,导入下载的文件夹. 在controller层中引入class.phpmailer.php 引入文件并实例化: require_once(dirname(__FILE__).'/../Lib/mail/c

关于zabbix发送报警邮件25端口不通问题的解决方案

写这篇文章的目的不是别的,今年在阿里云的centos7上安装了zabbix3以上版本,我可以直接说明不是zabbix最新版本,安装路上根据之前总结文档一顿操作,ok,一切正常,zabbix服务器正常启动,界面也正常,直至报警调试自带mail报警,发现并没有收到邮件. 于是手动测试邮件发送,发现失败了,....失败了.然后各种百度找资料,一瞬间发现很多文档,最多的就说阿里云禁用了邮件服务器的25端口,而mail默认走25.            既然发现问题,那就是解决问题,于是各种尝试改配置文件

解决阿里云邮件发送不能使用25端口问题

本地测试发邮件功能很流畅,部署到阿里云上以后发现总是NOT FIND,这就很奇怪.开始以为是url写错了导致的,检查N多遍发现完全一毛一样的.后来各种百度,发现是因为阿里云禁用了25端口导致的.查看各种资料,解决的办法五花八门.试了几种解决方案,都解决了问题.现在整理如下:(不用去尝试申请解禁25端口的,可以很认真负责的告诉你,完全没有卵用) 首先,是阿里大大给的官方的解决方案,用SMTP发送邮件:代码如下 # -*- coding:utf-8 -*- import urllib, urllib

JavaMail 邮件发送之使用qq邮箱

所需jar包:comment-email.jar     mail.jaractivation.jar 一. 配置QQ邮箱的IMAP 进入qq电子邮件点击 设置->账户里开启 SMTP 服务(开启IMAP/SMTP服务)   注意:在启用QQ邮箱的14天之后才能开启此服务 开启之后会得到授权码,此授权码要记住或者保存到文本文件当中发送邮件的时候需要作为验证密码使用. 二.使用JavaMail发送一封简单邮件 的示例代码: public static void main(String[] args

邮件发送功能开发

作为一名.Net开发,"邮件发送"功能的开发和使用是必须要掌握的,因为这个功能作为"消息推送"的一种手段经常出现在各种.Net系统中,所以本文将对.Net平台下的"邮件发送",做一个细致的分析! 一.who需要邮件功能 1.服务提供方:需提供邮件收发客户端或Web服务.如:QQ邮箱.GMail邮箱.126.163等知名邮件服务提供商.注:如果你使用的第三方不知名邮件服务商提供的邮件收发服务,通过其发出的邮件,可能会被其他知名邮件服务提供商的STM

C#邮件发送(最坑爹的邮箱-QQ邮箱)---转发(SmallFlyElephant)

C#邮件发送(最坑爹的邮箱-QQ邮箱) 最近工作挺清闲的,有空的时候陪妹子出去玩玩,自己看看小说,看看电影,日子过的挺欢乐的,这个星期幡然悔悟,代码才是我的最爱,做点小东西,就写个邮件发送程序.说的邮件发送相信工作过基本上都会用到过,用户注册完之后发个验证邮件过去验证一下,改密码的时候邮箱验证一下,用户对网站体验如何发个邮件调查一下,网站最近最热的内容发个邮件推送一下,好吧,有点啰嗦.正文开始吧: SMTP定义 简单邮件传输协议 (Simple Mail Transfer Protocol, S

[转载]C#实现邮件发送的功能

发送邮件所用的核心知识点 微软封装好的MailMessage类:主要处理发送邮件的内容(如:收发人地址.标题.主体.图片等等) 微软封装好的SmtpClient类:主要处理用smtp方式发送此邮件的配置信息(如:邮件服务器.发送端口号.验证方式等等) SmtpClient主要进行了三层的封装:Socket --> TcpClient --> SmtpClient 具体代码请看如下所示: 1 using System; 2 using System.Collections.Generic; 3

C#邮件发送(最坑爹的邮箱-QQ邮箱)

最近工作挺清闲的,有空的时候陪妹子出去玩玩,自己看看小说,看看电影,日子过的挺欢乐的,这个星期幡然悔悟,代码才是我的最爱,做点小东西,就写个邮件发送程序.说的邮件发送相信工作过基本上都会用到过,用户注册完之后发个验证邮件过去验证一下,改密码的时候邮箱验证一下,用户对网站体验如何发个邮件调查一下,网站最近最热的内容发个邮件推送一下,好吧,有点啰嗦.正文开始吧: SMTP定义 简单邮件传输协议 (Simple Mail Transfer Protocol, SMTP) 是事实上的在Internet传