Java 通过Office365 服务器发送邮件

项目需要用程序自动发送邮件,因为公司用的是微软的office,因此决定使用office365作为邮箱服务器。

查了一下,网上有很多教程,但是需要注意以下几点:

1,使用office365作为服务器,首先得有一个outlook邮箱账号,并且该账号必须设置允许POP,不设置允许POP是不行的。如果不想下载outlook客户端进行设置,可以直接在网上账户进行设置,点击链接POP 和 IMAP,登录进去进行设置,截图如下:

Java 通过Office365 服务器发送邮件_第1张图片

2,关于office365邮箱服务器地址,网上有各种版本,比如 m.outlook.com ,smtp.office365.com 或者 smtp.partner.outlook.cn,还有的说要下载证书,或者Java1.6可以,Java1.7不行。但是在上面的截图中可以明确看到,server name 是smtp-mail.outlook.com,端口号是587。

从网上复制的一些代码,稍微改了一下,亲测可以。Java版本是1.8,如下:

package email;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.util.Properties;


public class Office365 {

    public static void main(String[] args) {

        String sender = "your [email protected]";
        String password = "your password";

        // 收件人邮箱地址
        String receiver = "[email protected]";

        // office365 邮箱服务器地址及端口号
        String host = "smtp-mail.outlook.com";
        String prot = "587";

        try{

            Properties props = new Properties();
            // 开启debug调试
            props.setProperty("mail.debug", "true");  //false
            // 发送服务器需要身份验证
            props.setProperty("mail.smtp.auth", "true");
            // 设置邮件服务器主机名
            props.setProperty("mail.host", host);
            // 发送邮件协议名称
            props.setProperty("mail.transport.protocol", "smtp");
            props.setProperty("mail.smtp.port", prot);
            props.put("mail.smtp.starttls.enable", "true");

            // 设置环境信息
            Session session = Session.getInstance(props);

            // 创建邮件对象
            MimeMessage msg = new MimeMessage(session);

            // 设置发件人
            msg.setFrom(new InternetAddress(sender));

            // 设置收件人
            msg.addRecipient(Message.RecipientType.TO, new InternetAddress(receiver));

            // 设置邮件主题
            msg.setSubject("this is subject");

            // 设置邮件内容
            Multipart multipart = new MimeMultipart();

            MimeBodyPart textPart = new MimeBodyPart();
            textPart.setText("this is the text");
            multipart.addBodyPart(textPart);

            // 添加附件
            MimeBodyPart attachPart = new MimeBodyPart();
            DataSource source = new FileDataSource("D:\\tmpfile\\document\\MailUtil.java");
            attachPart.setDataHandler(new DataHandler(source));
            attachPart.setFileName("MailUtil.java");
            multipart.addBodyPart(attachPart);

            msg.setContent(multipart);

            Transport transport = session.getTransport();
            // 连接邮件服务器
            transport.connect(sender, password);
            // 发送邮件
            transport.sendMessage(msg, new Address[]{new InternetAddress(receiver)});
            // 关闭连接
            transport.close();
        }catch( Exception e ){
            e.printStackTrace();
        }
    }
}

 

你可能感兴趣的:(Java)