• java 实现发送邮箱,复制即用,包含邮箱设置第三方登录授权码获取方法


     application.yml

    1. spring:
    2. profiles:
    3. active: dev
    4. # active: test
    5. #邮件附件上传文件大小限制
    6. servlet:
    7. multipart:
    8. max-file-size: 50MB #单个文件大小限制
    9. max-request-size: 100MB #总文件大小限制(允许存储文件的文件夹大小)
    10. mail:
    11. default-encoding: UTF-8
    12. host: smtp.qq.com
    13. username: xxxxxxx@qq.com
    14. password: xxxxxxxxx#邮箱设置第三方登录授权码
    15. test-connection: false
    16. properties:
    17. mail.smtp.auth: true

     邮箱设置第三方登录授权码获取

     邮箱设置第三方登录授权码获取icon-default.png?t=N7T8https://blog.csdn.net/xnian_/article/details/134515274?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22134515274%22%2C%22source%22%3A%22xnian_%22%7D

    1. package com.cloud.xxx.utils;
    2. import lombok.extern.slf4j.Slf4j;
    3. import org.springframework.beans.factory.annotation.Value;
    4. import org.springframework.context.annotation.Configuration;
    5. import org.springframework.mail.javamail.JavaMailSender;
    6. import org.springframework.mail.javamail.MimeMessageHelper;
    7. import org.springframework.stereotype.Component;
    8. import org.springframework.stereotype.Service;
    9. import javax.annotation.Resource;
    10. import java.security.Security;
    11. import java.util.Date;
    12. import java.util.Properties;
    13. import javax.mail.*;
    14. import javax.mail.internet.InternetAddress;
    15. import javax.mail.internet.MimeMessage;
    16. @Slf4j
    17. @Service
    18. public class MailServiceUtil {
    19. @Resource
    20. private JavaMailSender javaMailSender;
    21. /**
    22. * 发件人的邮箱地址
    23. * 即我们配置的邮件服务的邮箱
    24. */
    25. @Value("${spring.mail.username}")
    26. private String serverMail;
    27. @Value("${spring.mail.password}")
    28. private String password;
    29. @Value("${spring.mail.host}")
    30. private String host;
    31. /**
    32. * 发送邮件
    33. *
    34. * @param toUser 收件人邮件地址
    35. * @param subject 标题
    36. * @param text 正文
    37. */
    38. public boolean sendMail(String toUser, String subject, String text) {
    39. try {
    40. MimeMessage message = javaMailSender.createMimeMessage();
    41. MimeMessageHelper helper = new MimeMessageHelper(message, true);
    42. helper.setFrom(serverMail);
    43. helper.setTo(toUser.split(","));
    44. helper.setSubject(subject);
    45. helper.setText(text, true);
    46. javaMailSender.send(message);
    47. log.info("发送邮件to:{},主题:{},内容:{}", toUser, subject, text);
    48. } catch (Exception e) {
    49. log.error("sendMail ", e);
    50. return Boolean.FALSE;
    51. }
    52. return Boolean.TRUE;
    53. }
    54. /**
    55. * 使用加密的方式,利用 587 端口进行传输邮件,开启ssl
    56. * @param to 收件人邮箱
    57. * @param message 邮件正文
    58. * @param title 邮件标题
    59. */
    60. public boolean sendMail587(String to, String title, String message) {
    61. try {
    62. Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
    63. final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
    64. //设置邮件会话参数
    65. Properties props = new Properties();
    66. //邮箱的发送服务器地址
    67. props.setProperty("mail.smtp.host", host);
    68. props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
    69. props.setProperty("mail.smtp.socketFactory.fallback", "false");
    70. //邮箱发送服务器端口,这里设置为 587 端口
    71. props.setProperty("mail.smtp.port", "587");
    72. props.setProperty("mail.smtp.socketFactory.port", "587");
    73. props.put("mail.smtp.auth", "true");
    74. //获取到邮箱会话,利用匿名内部类的方式,将发送者邮箱用户名和密码授权给jvm
    75. Session session = Session.getDefaultInstance(props, new Authenticator() {
    76. protected PasswordAuthentication getPasswordAuthentication() {
    77. return new PasswordAuthentication(serverMail, password);
    78. }
    79. });
    80. //通过会话,得到一个邮件,用于发送
    81. Message msg = new MimeMessage(session);
    82. //设置发件人
    83. msg.setFrom(new InternetAddress(serverMail));
    84. //设置收件人,to为收件人,cc为抄送,bcc为密送
    85. msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to, false));
    86. // msg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(to, false));
    87. // msg.setRecipients(Message.RecipientType.BCC, InternetAddress.parse(to, false));
    88. // 设置邮件标题
    89. msg.setSubject(title);
    90. //设置发送的日期
    91. msg.setSentDate(new Date());
    92. /*//设置邮件消息
    93. msg.setText(message);*/
    94. // 设置邮件的内容体
    95. msg.setContent(message, "text/html;charset=UTF-8");
    96. //调用Transport的send方法去发送邮件
    97. Transport.send(msg);
    98. } catch (Exception e) {
    99. log.error("sendMail ", e);
    100. return Boolean.FALSE;
    101. }
    102. return Boolean.TRUE;
    103. }
    104. }

  • 相关阅读:
    我的个人网站不让接入微信登录,于是我做了这个
    Java时间复杂度和空间复杂度(详解)
    阿里巴巴首推 2022 年金九银十 1000 道 Java 工程师面试题手册(P7岗),整整的10w字文档
    pytest接口自动化测试框架搭建的全过程
    linux网络协议栈源码分析 - 传输层(TCP连接的终止)
    判断二叉树是否为完全二叉树
    JVM学习-JMM
    深入浅出排序算法之希尔排序
    WebDAV之π-Disk派盘 + 小书匠
    如何打开iso文件
  • 原文地址:https://blog.csdn.net/xnian_/article/details/134515182