侧边栏壁纸
博主头像
小小酥心

旧书不厌百回读,熟读精思子自知💪

  • 累计撰写 22 篇文章
  • 累计创建 8 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

使用javax.mail发送邮件

小小酥心
2022-09-22 / 0 评论 / 0 点赞 / 2,092 阅读 / 626 字
温馨提示:
本文最后更新于 2022-09-22,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
public final class MailUtils {
    /** 发件人称号,同邮箱地址 */
    private static final String USER = "*********@163.com";
    /** 如果是qq邮箱可以使户端授权码,或者登录密码 */
    private static final String PASSWORD = "ACWIFIYRISJPZIPM";
    /** 附件添加的组件 */
    private static Multipart mp;

    /**
     * 发送验证信息的邮件
     * @param to 收件人邮箱
     * @param cc 抄送人邮箱
     * @param text 邮件正文
     * @param title 标题
     */
    public static boolean sendMail(String to, String cc, String text, String title){
        try {
            final Properties props = new Properties();
            // 需要验证用户名密码
            props.put("mail.smtp.auth", "true");
            // 邮件发送协议
            props.put("mail.transport.protocol", "smtp");
            // 邮件服务器
            props.put("mail.smtp.host", "smtp.163.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);
            // 开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
            // mailSession.setDebug(true);

            // 创建邮件消息
            MimeMessage message = new MimeMessage(mailSession);

            // 设置发件人
            String username = props.getProperty("mail.user");
            Address form = new InternetAddress(username);
            message.setFrom(form);

            // 设置收件人
            Address toAddress = new InternetAddress(to);
            message.setRecipient(Message.RecipientType.TO, toAddress);

            // 设置抄送人
            if (cc != null) {
                Address ccAddress = new InternetAddress(cc);
                message.setRecipient(Message.RecipientType.TO, ccAddress);
            }

            // 设置邮件标题
            message.setSubject(title);

            // 内容组件
            mp = new MimeMultipart();
            // 设置邮件的内容体
            BodyPart bp = new MimeBodyPart();
            bp.setContent("<meta http-equiv=Content-Type content=text/html; charset=UTF-8>" + text, "text/html;charset=UTF-8");
            mp.addBodyPart(bp);
            // 添加附件
            addFileAffix("C:\\Users\\dell\\Desktop\\新建文本文档.txt)
            
            message.setContent(mp);
            message.saveChanges();

            // 发送邮件
            Transport.send(message);
            return true;
        }catch (Exception e){
            e.printStackTrace();
        }
        return false;
    }

    /**
     * 增加发送附件
     *
     * @param filename 邮件附件的地址,只能是本机地址而不能是网络地址,否则抛出异常
     */
    public static boolean addFileAffix(String filename) {
        try {
            BodyPart bp = new MimeBodyPart();
            FileDataSource file = new FileDataSource(filename);
            bp.setDataHandler(new DataHandler(file));
            // 解决附件名称乱码
            bp.setFileName(MimeUtility.encodeText(file.getName(), "utf-8", null));
            // 添加附件
            mp.addBodyPart(bp);
        } catch (Exception e) {
            System.err.println("增加邮件附件:" + filename + "发生错误!" + e);
            return false;
        }
        return true;
    }

    public static void main(String[] args) throws Exception { // 做测试用
        MailUtils.sendMail("********@qq.com", null,"你好,这是一封测试邮件,无需回复。","测试邮件");
        System.out.println("发送成功");
    }
}

0

评论区