• java中使用javaMail工具类发送邮件


    1.引入依赖

    <!--javaMail-->
    <dependency>
        <groupId>javax.mail</groupId>
        <artifactId>javax.mail-api</artifactId>
        <version>1.5.6</version>
    </dependency>
    <dependency>
        <groupId>com.sun.mail</groupId>
        <artifactId>javax.mail</artifactId>
        <version>1.5.3</version>
    </dependency>

    2.具体代码

    /**
     * 发邮件工具类
     */
    public final class MailUtils {
        private static final String USER = "xxxxxxx@qq.com"; // 发件人称号,同邮箱地址
        private static final String PASSWORD = "xxxxxxx "; // 如果是qq邮箱可以使用客户端授权码,或者登录密码
    
        /**
         *
         * @param to 收件人邮箱
         * @param text 邮件正文
         * @param title 标题
         */
        /* 发送验证信息的邮件 */
        public static boolean sendMail(String to, String text, String title){
            try {
                final Properties props = new Properties();
                props.put("mail.smtp.auth", "true");
                props.put("mail.smtp.host", "smtp.qq.com");
    
                // 发件人的账号
                props.put("mail.user", USER);
                //发件人的密码
                props.put("mail.password", PASSWORD);
    
                // 构建授权信息,用于进行SMTP进行身份验证
                Authenticator authenticator = new Authenticator() {
                    @Override
                    protected PasswordAuthentication getPasswordAuthentication() {
                        // 用户名、密码
                        String userName = props.getProperty("mail.user");
                        String password = props.getProperty("mail.password");
                        return new PasswordAuthentication(userName, password);
                    }
                };
                // 使用环境属性和授权信息,创建邮件会话
                Session mailSession = Session.getInstance(props, authenticator);
                // 创建邮件消息
                MimeMessage message = new MimeMessage(mailSession);
                // 设置发件人
                String username = props.getProperty("mail.user");
                InternetAddress form = new InternetAddress(username);
                message.setFrom(form);
    
                // 设置收件人
                InternetAddress toAddress = new InternetAddress(to);
                message.setRecipient(Message.RecipientType.TO, toAddress);
    
                // 设置邮件标题
                message.setSubject(title);
    
                // 设置邮件的内容体
                message.setContent(text, "text/html;charset=UTF-8");
                // 发送邮件
                Transport.send(message);
                return true;
            }catch (Exception e){
                e.printStackTrace();
            }
            return false;
        }
    
        public static void main(String[] args) throws Exception { // 做测试用
            MailUtils.sendMail("xxxxxx@163.com","这是一封测试邮件","测试邮件");
        }
    }

    3.获取邮箱授权码

    3.1 163邮箱授权码

    打开设置

    开启客户端授权码,并设置授权码

     

     3.2 qq邮箱授权码

    点击设置——〉账户——〉开启服务——〉获取授权码

     4.测试结果

  • 相关阅读:
    [视频监控]用状态机图展示Layout切换关系
    初次打开mysql5.6后
    eclipse 项目乱码
    java servlet 中遇到的编码问题
    解决HttpServletResponse输出的中文乱码问题
    The first day of my Blog
    最大子段和
    LOI 54 成立一周年纪(zuo)念(si)
    水题 逆序对 NOIP 2013 火柴排队
    搜索 由浅入深 之一 水题
  • 原文地址:https://www.cnblogs.com/Code-Handling/p/12123359.html
Copyright © 2020-2023  润新知