美文网首页Java学习笔记Java工具类
[Java工具] 邮件发送工具

[Java工具] 邮件发送工具

作者: 后端技术学习分享 | 来源:发表于2018-08-08 14:22 被阅读5次

    注册邮箱

    去163邮箱(或其他邮箱)注册一个邮箱,并开启SMTP授权码。

    程序

    需要注意的是,由于阿里云服务器不让使用默认的25端口,所以会出现Windows下测试发送邮件成功,Linux服务器下发送邮件却出错的问题(broke pipe、timeout、can not connect等)。解决办法是使用带SSL的465端口。

    package com.kuyuntech.util;
    
    import java.security.Security;
    import java.util.Date;
    import java.util.Properties;
    import javax.mail.Authenticator;
    import javax.mail.Message;
    import javax.mail.PasswordAuthentication;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    /**
     * 邮件发送工具类
     */
    public class EmailUtils {
        /**
         * 发送邮件的方法
         * @param toUser    :收件人
         * @param title     :标题
         * @param content   :内容
         */
        public static void sendMail(String toUser,String title,String content) throws Exception {
    
            // 你自己的邮箱和授权码
            final String username = "xxxxx@163.com";//自己的邮箱
            final String password = "xxxxxxxxxx";//授权码,需要登录163邮箱,在设置里设置授权码。授权码用于替代密码
    
            Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
            final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
            Properties props = System.getProperties();
            props.setProperty("mail.smtp.host", "smtp.163.com");
            props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
            props.setProperty("mail.smtp.socketFactory.fallback", "false");
            props.setProperty("mail.smtp.port", "465");// 不能使用25端口,因为阿里云服务器禁止使用25端口,所以必须使用ssl的465端口
            props.setProperty("mail.smtp.socketFactory.port", "465");
            props.put("mail.smtp.auth", "true");
    
            Session session = Session.getDefaultInstance(props, new Authenticator(){
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(username, password);
                }});
    
            // -- Create a new message --
            Message msg = new MimeMessage(session);
    
            // -- Set the FROM and TO fields --
            msg.setFrom(new InternetAddress(username));
            msg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(toUser,false));
            msg.setSubject(title);
            msg.setText(content);
            msg.setSentDate(new Date());
            Transport.send(msg);
        }
    
    
        public static void main(String[] args) throws Exception {
            sendMail("1802226517@qq.com","标题","Hello!");
        }
    }
    
    

    相关文章

      网友评论

        本文标题:[Java工具] 邮件发送工具

        本文链接:https://www.haomeiwen.com/subject/sktxbftx.html