java发送outlook邮件

已经封装好工具类了,拿去直接调用就能用哈~

需要注册outlook邮箱账号密码,登录后绑定手机号就可以正常发送邮件,经测试邮件可以成功发送,但QQ邮箱总识别为垃圾邮件,邮件在垃圾箱.

  1. package com.qs.util;
  2. import java.util.Properties;
  3. import javax.activation.DataHandler;
  4. import javax.activation.DataSource;
  5. import javax.activation.FileDataSource;
  6. import javax.mail.Authenticator;
  7. import javax.mail.BodyPart;
  8. import javax.mail.Message;
  9. import javax.mail.MessagingException;
  10. import javax.mail.Multipart;
  11. import javax.mail.PasswordAuthentication;
  12. import javax.mail.Session;
  13. import javax.mail.Transport;
  14. import javax.mail.internet.InternetAddress;
  15. import javax.mail.internet.MimeBodyPart;
  16. import javax.mail.internet.MimeMessage;
  17. import javax.mail.internet.MimeMultipart;
  18. public class MailUtil {
  19. /**
  20. * @Title: 发送邮件工具类
  21. * @Description: 需要outlook邮箱账号密码
  22. * @param: to
  23. * @return: String
  24. * @throws
  25. */
  26. public static String sendMain(String to) {
  27. String from = "×××××@outlook.com";// 发件人电子邮箱
  28. //String to = "×××××@qq.com";// 收件人电子邮箱
  29. //获取系统属性,主要用于设置邮件相关的参数。
  30. Properties properties = System.getProperties();
  31. //设置邮件传输服务器,由于本次是发送邮件操作,所需我们需要配置smtp协议,按outlook官方同步邮件的要求,依次配置协议地址,端口号和加密方法
  32. properties.setProperty("mail.smtp.host", "smtp.office365.com");
  33. properties.setProperty("mail.smtp.port", "587");
  34. properties.setProperty("mail.smtp.starttls.enable", "true");
  35. //用户验证并返回Session,开启用户验证,设置发送邮箱的账号密码。
  36. properties.setProperty("mail.smtp.auth", "true");
  37. Session session = Session.getDefaultInstance(properties, new Authenticator() {
  38. @Override
  39. protected PasswordAuthentication getPasswordAuthentication() {
  40. return new PasswordAuthentication("×××××@outlook.com", "××××××");//账号密码
  41. }
  42. });
  43. //创建MimeMessage消息对象,消息头配置了收发邮箱的地址,消息体包含了邮件标题和邮件内容。接收者类型:TO代表直接发送,CC代表抄送,BCC代表秘密抄送。
  44. try {
  45. MimeMessage message = new MimeMessage(session);
  46. message.addHeader("X-Mailer","Microsoft Outlook Express 6.00.2900.2869");
  47. message.setFrom(new InternetAddress(from));
  48. message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
  49. message.setSubject("入学要求及申读信息");
  50. message.setText("具体内容请见附件!");
  51. // Transport.send(message);
  52. // System.out.println("发送成功!");
  53. // 1.创建复合消息体
  54. Multipart multipart = new MimeMultipart();
  55. // 2.添加附件
  56. BodyPart filePart = new MimeBodyPart();
  57. String filePath = "/data/ISC2019130.xlsx";
  58. DataSource source = new FileDataSource(filePath);
  59. filePart.setDataHandler(new DataHandler(source));
  60. filePart.setFileName(source.getName());
  61. multipart.addBodyPart(filePart);
  62. // 3.添加文本内容
  63. MimeBodyPart textPart = new MimeBodyPart();
  64. textPart.setText("测试包含文本和附件的邮件!");
  65. multipart.addBodyPart(textPart);
  66. // 4.绑定消息对象
  67. message.setContent(multipart);
  68. // 5.发送邮件
  69. Transport.send(message);
  70. return "success";
  71. } catch (MessagingException e) {
  72. e.printStackTrace();
  73. return "failed";
  74. }
  75. }
  76. }
posted @ 2021-04-09 14:24  LilLazy  阅读(354)  评论(0)    收藏  举报