概述
项目需要用程序自动发送邮件,因为公司用的是微软的office,因此决定使用office365作为邮箱服务器。
查了一下,网上有很多教程,但是需要注意以下几点:
1,使用office365作为服务器,首先得有一个outlook邮箱账号,并且该账号必须设置允许POP,不设置允许POP是不行的。如果不想下载outlook客户端进行设置,可以直接在网上账户进行设置,点击链接POP 和 IMAP,登录进去进行设置,截图如下:
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 outlook@outlook.com";
String password = "your password";
// 收件人邮箱地址
String receiver = "123456@qq.com";
// 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 通过Office365 服务器发送邮件的全部内容,希望文章能够帮你解决Java 通过Office365 服务器发送邮件所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复