Java 发送邮件(二)

  |   0 评论   |   0 浏览

Java 发送带附件的邮件

上一篇已经讲了如何用 Java 发送一个简单的邮件,然而有时我们发送邮件需要发送文件,我们来看看如何用java 发送带附件的邮件。

废话不多说,直接上代码:

需要的依赖:

  <dependency>
      <groupId>com.sun.mail</groupId>
      <artifactId>javax.mail</artifactId>
      <version>1.6.2</version>
 </dependency>
 <dependency>
      <groupId>javax.activation</groupId>
      <artifactId>activation</artifactId>
      <version>1.1.1</version>
 </dependency>

代码:

public class MailTest {

    public static final String SMTP_SERVER = "smtp.163.com";   //SMTP服务器地址

    public static final String SMTP_PORT = "465";  //请求的端口

    public static final String ACCOUNT = "*******@163.com";  //验证的用户

    public static final String PWD = "*************";   //密码

    @Test
    public void test() throws UnsupportedEncodingException, MessagingException {

        //创建邮件配置
        Properties props = new Properties();
        props.setProperty("mail.transport.protocol","smtp");  //配置协议
        props.setProperty("mail.smtp.host",SMTP_SERVER);  //配置请求的SMTP 服务器地址
        props.setProperty("mail.smtp.port",SMTP_PORT);  //配置请求的端口
        props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");   
        props.setProperty("mail.smtp.auth","true");   //是否验证
        props.setProperty("mail.smtp.ssl.enable","true");  //是否使用SSL


        //根据邮件配置创建会话,注意 session 别导错包
        Session session = Session.getDefaultInstance(props);
        //开启debug 模式,可以看到更多详细的日志
        session.setDebug(true);
        //创建邮件
        MimeMessage message = createEmil(session);

        //获取传输通道
        Transport transport = session.getTransport();
        transport.connect(ACCOUNT,PWD);
        //连接,并发送邮件
        transport.sendMessage(message,message.getAllRecipients());

    }

    private MimeMessage createEmil(Session session) throws UnsupportedEncodingException, MessagingException {
        //根据会话创建邮件
        MimeMessage msg = new MimeMessage(session);

        //设置发送邮件方
        msg.setFrom(new InternetAddress(ACCOUNT,"昵称","UTF-8"));
        //设置接受邮件方
        msg.setRecipient(Message.RecipientType.TO,
                new InternetAddress("847707713@qq.com");
        //设置邮件标题
        msg.setSubject("附件测试","utf-8");


        //创建多重消息
        Multipart multipart = new MimeMultipart();

        //创建消息部分
        BodyPart bodyPart = new MimeBodyPart();
        bodyPart.setText("发送附件测试");
        //设置文本消息部分
        multipart.addBodyPart(bodyPart);

        //附件部分
        bodyPart = new MimeBodyPart();
        DataSource source = new FileDataSource("F:/aaa.txt");
        bodyPart.setDataHandler(new DataHandler(source));
        bodyPart.setFileName("test.txt");
        multipart.addBodyPart(bodyPart);

        msg.setContent(multipart);

        //保存设置
        msg.saveChanges();
        return msg;
    }


}

发送邮件附件 与上一节对比可以看出,要加的代码并不是很多。
这里首先需要创建一个 multipart 对象,multipart 对象可以包含多个BodyPart对象,BodyPart可以是文本消息,也可以是附件。

如果要发送多个附件,只需要仿照上面的附件部分代码,更改文件路径即可。


标题:Java 发送邮件(二)
作者:zh847707713
地址:http://lovehao.cn/articles/2019/06/21/1561081869225.html