Java Mail发送Email总结(一)--发送简单文件邮件

最近学习了通过Java Mail库进行邮件发送,参考了不少资料,自己总结一下Java Mail的使用,大概从以下三个方面进行描述,本例子使用QQ邮箱作为邮件服务器:
1. 配置邮件会话(session)
2. 配置简单文本邮件消息(MimeMessage)
3. 发送邮件(Transport)

先介绍邮件属性:收件人(多个),抄送(多个),密送(多个),主体,正文,附件等。

这里写图片描述
直接上代码:

<!-- 引入java mail包 -->
<dependency>
      <groupId>com.sun.mail</groupId>
      <artifactId>javax.mail</artifactId>
      <version>1.6.0</version>
    </dependency>

1.配置邮件会话

  public static Session getMailSession(){
        Properties properties = new Properties();
        //服务器主机名
        properties.put("mail.host","smtp.qq.com");
        //协议名称
        properties.put("mail.transport.protocol","smtps");
        //发送服务器需要身份验证
        properties.put("mail.smtp.auth","true");
        //设置ssl加密(QQ邮箱必须设置)
        properties.put("mail.smtp.ssl.enable","true");
        //创建session
        Session session = Session.getDefaultInstance(properties);//获取共享session
        //开启DEBUG模式,监视发邮件状态
        session.setDebug(true);
        return session;
    }

2.配置简单文本邮件消息


 /**
     * 生成普通文本邮件
     * @param session
     * @return
     * @throws MessagingException
     */
    public static MimeMessage createSimpleMessage(Session session) throws Exception {
        //创建邮件
        MimeMessage message = new MimeMessage(session);
        //发件人
        message.setFrom("[email protected]");
        //收件人
        message.setRecipient(Message.RecipientType.TO, new InternetAddress("[email protected]"));
        //标题
        message.setSubject("简单邮件");
        //To: 增加收件人(可选)
        message.addRecipient(MimeMessage.RecipientType.TO, new InternetAddress("[email protected]", "USER_DD", "UTF-8")); //InternetAddress 第二个参数是别名
        //Cc: 抄送(可选)
        message.setRecipient(MimeMessage.RecipientType.CC, new InternetAddress("[email protected]", "USER_EE", "UTF-8"));
        //Bcc: 密送(可选)
        message.setRecipient(MimeMessage.RecipientType.BCC, new InternetAddress("[email protected]", "USER_FF", "UTF-8"));
        InternetAddress[] addressArr = new InternetAddress[1];
        addressArr[0] = new InternetAddress("[email protected]", "xxx", "UTF-8");
        //邮件回复接收人
        message.setReplyTo(addressArr);
        //封装MIME消息
        MimeBodyPart text = new MimeBodyPart();
        text.setContent("你好啊!", "text/html; charset=UTF-8");
        //组合MIME消息
        MimeMultipart multipart = new MimeMultipart();
        multipart.addBodyPart(text);
        //设置邮件内容
        message.setContent(multipart);
        message.saveChanges();
        return message;
    }

3.发送邮件(Transport)

public static void sendEmail(MimeMessage msg, Session session) throws Exception {
        //得到transport对象
        Transport transport = session.getTransport();
        //连接邮件服务器(qq邮箱需要使用授权码)password为qq邮箱授权码
        //(***此处邮箱必须和发件人一致***)
        transport.connect("smtp.qq.com", "[email protected]", "password");
        //发送邮件
        transport.sendMessage(msg, msg.getAllRecipients());
        transport.close();
    }

使用QQ邮箱发送邮件需要使用授权码作为密码,授权码获取方式如下:

  1. 进入QQ邮箱设置界面
    这里写图片描述
  2. 开启SMTP服务,生成授权码
    这里写图片描述

下一篇介绍发送图片和附件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章