java

package com.qcn.framework;

import com.sun.mail.util.MailSSLSocketFactory;

import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.security.GeneralSecurityException;
import java.util.Properties;

public class EmailUtils {
    public static void main(String[] args) {
        //常用发送邮件demo1【部署到服务器会报错:Could not connect to SMTP host: smtp.163.com, port: 25】
//        Properties props = new Properties();
//        props.setProperty("mail.smtp.auth", "true");
//        props.setProperty("mail.transport.protocol", "smtp");
//        props.put("mail.smtp.host", "smtp.163.com");// smtp服务器地址
//        Session session = Session.getInstance(props);
//        session.setDebug(true);
//        Message msg = new MimeMessage(session);
//        try {
//            msg.setSubject("邮件标题");
//            msg.setText("邮件内容");
//            msg.setFrom(new InternetAddress("发件人"));
//            msg.setRecipient(Message.RecipientType.TO,
//                    new InternetAddress("收件人"));
//            msg.saveChanges();
//            Transport transport = session.getTransport();
//            transport.connect("发件人", "SDFA授权码FFHBF");
//            transport.sendMessage(msg, msg.getAllRecipients());
//            System.out.println("邮件发送成功!");
//            transport.close();
//        } catch (MessagingException e) {
//            System.out.println("邮件发送成功失败:"+e.getMessage());
//        }
        //正确的demo【解决部署到服务器后报错】
        try {
            MailSSLSocketFactory sf = new MailSSLSocketFactory();
            sf.setTrustAllHosts(true);
            Properties props = new Properties();
            props.setProperty("mail.transport.protocol", "SMTP");
            props.setProperty("mail.host", "smtp.163.com");
            props.setProperty("mail.smtp.auth", "true");// 指定验证为true是否需要身份验证
            props.setProperty("mail.smtp.ssl.enable", "true");
            props.put("mail.smtp.ssl.socketFactory", sf);
            Authenticator auth = new Authenticator() {
                public PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication("发件人邮箱名(不要@163.com)", "SDFA授权码FFHBF");
                }
            };
            Session session = Session.getInstance(props, auth);
            session.setDebug(true);
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress("chihouzhineng@163.com"));
            message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress("收件人"));
            message.setSubject("邮件标题");
            message.setContent("邮件内容", "text/html;charset=utf-8");
            Transport.send(message);
        } catch (GeneralSecurityException e) {
            System.out.println("异常1:" + e.getMessage());
        } catch (MessagingException e) {
            System.out.println("异常2:" + e.getMessage());
        }
    }
}

如果部署后还报错,就查看端口配置

登录阿里云开放163邮箱端口
163邮箱对应端口:官方
在这里插入图片描述

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐