关于阿里云轻量级服务器封25和465端口无法发送邮件问题的解决方案

最近在进行Maven项目实践, 将项目部署到阿里云阿里云轻量级服务器上时,发现在自己电脑上测试可用的发送邮件工具类无法使用.
上网查阅资料, 得知是阿里云封掉了发送邮件的25和465端口.

于是在网上找到了以下工具类, 稍加改造, 代码如下:

import java.util.Properties;
import javax.mail.internet.MimeMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;

public class MailUtils587 {
    private static JavaMailSenderImpl javaMailSender;
    private static String userName = "[email protected]";
    static {
        javaMailSender = new JavaMailSenderImpl();
        javaMailSender.setHost("smtp.qq.com");// 链接服务器
        javaMailSender.setUsername(userName);// 账号
        javaMailSender.setPassword("xxxxxxxxxxxxx");// 密码
        javaMailSender.setDefaultEncoding("UTF-8");
        Properties properties = new Properties();

	// 设置通过ssl协议使用587端口发送、使用默认端口(25)时下面三行不需要
        properties.setProperty("mail.smtp.auth", "true");// 开启认证
        properties.setProperty("mail.smtp.socketFactory.port", "587");// 设置ssl端口
        properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        javaMailSender.setJavaMailProperties(properties);
    }

    public static void sendEmail(final String title, final String content, final String toMail) {

        new Thread(new Runnable() {// 开启线程异步发送 防止发送请求时间过长
            @Override
            public void run() {
                try {
                    if (!toMail.equals("")) {
                        String[] toAddress = toMail.split(",");
                        MimeMessage message = javaMailSender.createMimeMessage();
                        MimeMessageHelper helper = new MimeMessageHelper(message, true, "utf-8");
                        helper.setFrom(userName);
                        helper.setTo(toAddress);
                        helper.setSubject(title);
                        helper.setText(content, true); // 内容
                        javaMailSender.send(message); // 发送邮件
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }

    //测试发送
    public static void main(String[] args) {
        sendEmail("title", "content", "[email protected]");
    }
}

亲测某讯邮箱可用~

注意:

  • 密码不是登陆密码, 而是用于登录第三方客户端邮箱的授权码, 该授权码可以在QQ邮箱-设置-账户中通过二维码获取;
  • 需要先在pom中导入spring-context-support
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-context-supportartifactId>
            <version>5.0.2.RELEASEversion>
        dependency>

你可能感兴趣的:(Java基础,邮件,Java,Maven,25端口)