zoukankan      html  css  js  c++  java
  • javaMail (java代码发送邮件)

    第一在邮件账户设置开启以下两个

    需要发送短信获取  授权码。

    代码如下:

    package com.hjb.javaMail;
    
    import javax.mail.*;
    import javax.mail.internet.MimeMessage;
    import java.util.Date;
    import java.util.Properties;
    
    
    public class Mail {
    
        /**
         * 1、SMTP 服务器的端口 (不同的服务器可能会有不同端口号)
         * 2、会话对象,用于和邮件服务器交互
         * 3、邮件对象
         */
    
        public static final String smtpPort = "465";
    
        private Session session;
    
        private MimeMessage message;
    
        public Mail() { }
    
        /**
         * 初始化方法
         *
         * @param myEmailSMTPHost 发件人邮箱 SMTP 地址
         * @param agreement       使用的协议
         * @param auth            是否需要请求认证
         */
        public Mail(String myEmailSMTPHost, String agreement, String auth) throws NoSuchProviderException {
    
            // 配置参数
            Properties properties = new Properties();
    
            properties.setProperty("mail.transport.protocol", agreement);
    
            properties.setProperty("mail.smtp.host", myEmailSMTPHost);
    
            properties.setProperty("mail.smtp.auth", auth);
    
            properties.setProperty("mail.smtp.port", smtpPort);
    
            properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
    
            properties.setProperty("mail.smtp.socketFactory.fallback", "false");
    
            properties.setProperty("mail.smtp.socketFactory.port", smtpPort);
    
            // 获取一个邮件会话对象
            session = Session.getInstance(properties);
    
            // 是否需要开启 debug 模式,开启后会输出详细的 log 信息
            session.setDebug(true);
    
            // 创建一封邮件
            message = new MimeMessage(session);
        }
    
        /**
         * 设置邮件内容
         *
         * @param myEmailAccout  发件人邮箱
         * @param addresseeEmail 收件人邮箱
         * @param emailSubject   邮件主题
         * @param emailContent   邮件正文(PS:可以是 HTML 标签形式)
         * @return MimeMessage  邮件
         * @throws Exception
         */
        public MimeMessage setEmail(String myEmailAccout, String addresseeEmail, String emailSubject, String emailContent) throws MessagingException {
            message.setFrom(myEmailAccout);
    
            // 第一个参数 以 收件人、抄送、密送 的形式,具体意思请自行百度(手动捂脸)
            message.setRecipients(Message.RecipientType.TO, addresseeEmail);
    
            message.setSubject(emailSubject, "UTF-8");
    
            message.setContent(emailContent, "text/html;charset=UTF-8");
    
            // 邮件发送时间
            message.setSentDate(new Date());
    
            // 保存设置内容
            message.saveChanges();
    
            return message;
        }
    
        /**
         * 发送邮件
         *
         * @param myEmailAccout   发件人邮箱
         * @param myEmailPassword 发件人邮箱授权码(163 邮箱的叫做独立密码)
         * @throws MessagingException
         */
        public void sendOut(String myEmailAccout, String myEmailPassword) throws MessagingException {
            // 第一步:通过邮件会话对象(Session)获取邮件传输对象
            Transport transport = session.getTransport();
    
            // 第二步:进行连接
            transport.connect(myEmailAccout, myEmailPassword);
    
            // 第三步:发送邮件,第一个参数是:邮件对象(MimeMessage),第二个参数获取保存设置后的邮件内容
            transport.sendMessage(message, message.getAllRecipients());
    
            // 第三步:关闭连接。
            transport.close();
        }
    }
    View Code

    测试代码:

    package com.hjb.javaMail;
    
    import com.hjb.javaMail.Mail;
    
    import javax.mail.MessagingException;
    
    public class TestMail {
    
        public static void main(String[] args) throws MessagingException {
            String myEmailAccount = "发件人@qq.com";
    
            String myEmailPassword = "gciljwmywhyzbcdj"; //这个就是授权码
    
            // 每个邮箱的地址有所不同
            String myEmailSMTPHost = "smtp.qq.com";
    
            String addresseeEmail = "收件人@qq.com";
    
            String agreement = "smtp";
    
            String auth = "true";
    
            String emailSubject = "元宵节快乐";
    
            String emailContent = "<h3>fsdafdsfsdaf</h3>";
    
            Mail mail = new Mail(myEmailSMTPHost, agreement, auth);
            mail.setEmail(myEmailAccount, addresseeEmail, emailSubject, emailContent);
            mail.sendOut(myEmailAccount, myEmailPassword);
        }
    
    }
    View Code

    效果图

  • 相关阅读:
    spring boot整合使用mybatis
    spring boot整合使用jdbcTemplate
    spring boot全局捕获异常
    springboot 静态资源访问
    spring boot项目的启动方式
    第一个spring boot项目 springboot-helloworld
    ASP.Net MVC 登录授权验证
    C# mysql 事务处理
    无法删除数据库,因为该数据库当前正在使用"问题解决
    mysql 按照小时去除一段时间内的不同状态数据统计
  • 原文地址:https://www.cnblogs.com/gk126/p/10413283.html
Copyright © 2011-2022 走看看