工具系列(一):发送邮件

源码

引入maven依赖:

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.4</version>
</dependency>

编写代码:

public class SendMail {

    public static boolean createQQMail(String from, String to, String password,
                                     String subject, String text) {
        return createQQMail(from, to, password, subject, text, "smtp.qq.com", "true", "true", "smtp");
    }
    /**
     * 使用QQ发送邮件
     *
     * @param from 邮件发送者
     * @param to 邮件接受者
     * @param password 授权码(非邮箱密码)
     * @param subject 邮件主题
     * @param text 邮件内容
     * @param host QQ邮箱host
     * @param debug 开启debug调试
     * @param auth 开启身份验证
     * @param protocol 协议名称
     * @return
     */
    public static boolean createQQMail(String from, String to, String password,
                                    String subject, String text, String host,
                                     String debug, String auth, String protocol) {

        try {
            // ssl 加密
            MailSSLSocketFactory sf = new MailSSLSocketFactory();
            sf.setTrustAllHosts(true);

            Properties props = new Properties();

            // 开启debug调试
            props.setProperty("mail.debug", debug);
            // 发送服务器需要身份验证
            props.setProperty("mail.smtp.auth", auth);
            // 设置邮件服务器主机名
            props.setProperty("mail.host", host);
            // 发送邮件协议名称
            props.setProperty("mail.transport.protocol", protocol);
            props.put("mail.smtp.ssl.enable", "true");
            props.put("mail.smtp.ssl.socketFactory", sf);

            Session session = Session.getInstance(props);

            //邮件内容部分
            Message msg = new MimeMessage(session);
            msg.setSubject(subject);
            msg.setText(text);
            //邮件发送者
            msg.setFrom(new InternetAddress(from));

            //发送邮件
            Transport transport = session.getTransport();
            transport.connect(host, from, password);

            transport.sendMessage(msg, new Address[]{new InternetAddress(to)});
            transport.close();

            return true;
        } catch (GeneralSecurityException e) {
            e.printStackTrace();
            return false;
        } catch (MessagingException e) {
            e.printStackTrace();
            return false;
        }
    }
}

外部工作

开启发送者QQ邮箱的SMTP服务。

第一步

第二步

授权码

更改QQ密码、独立密码时会触发授权码过期,需要重新获取新的授权码登录。

授权码可以通过两种方式获取,一种是开启SMTP服务之后可以看到:
授权码一

另外一种是直接生成授权码:
授权码二

Last modification:March 1st, 2018 at 12:55 pm
If you think my article is useful to you, please feel free to appreciate

One comment

  1. 工资计算器

    学习了

Leave a Comment