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("xxx@qq.com");
        //收件人
        message.setRecipient(Message.RecipientType.TO, new InternetAddress("xxx@qq.com"));
        //标题
        message.setSubject("简单邮件");
        //To: 增加收件人(可选)
        message.addRecipient(MimeMessage.RecipientType.TO, new InternetAddress("xxx@qq.com", "USER_DD", "UTF-8")); //InternetAddress 第二个参数是别名
        //Cc: 抄送(可选)
        message.setRecipient(MimeMessage.RecipientType.CC, new InternetAddress("xxx@qq.com", "USER_EE", "UTF-8"));
        //Bcc: 密送(可选)
        message.setRecipient(MimeMessage.RecipientType.BCC, new InternetAddress("xxx@qq.com", "USER_FF", "UTF-8"));
        InternetAddress[] addressArr = new InternetAddress[1];
        addressArr[0] = new InternetAddress("xxx@qq.com", "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", "xxx@qq.com", "password");
        //发送邮件
        transport.sendMessage(msg, msg.getAllRecipients());
        transport.close();
    }

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值