Java实现邮件发送 超详细!!!(以QQ邮箱个人版和企业版为例)

您所在的位置:网站首页 qq邮箱如何看已发送邮件 Java实现邮件发送 超详细!!!(以QQ邮箱个人版和企业版为例)

Java实现邮件发送 超详细!!!(以QQ邮箱个人版和企业版为例)

2024-07-02 04:14| 来源: 网络整理| 查看: 265

Java实现发送邮件 超详细!!!(以QQ邮箱个人版和企业版为例)

文章目录 Java实现发送邮件 超详细!!!(以QQ邮箱个人版和企业版为例)个人邮箱示例配置依赖简单了解涉及的两个传输协议QQ邮箱中获取对应的权限配置文件工具类JavaBean测试类结果 企业邮箱示例一:配置文件二:用管理员账号授予邮箱对应权限三:获取授权码 **需要注意:现在很多服务器运营商都封25端口了!主要是防止垃圾邮件,不过一般是可以申请开启的**

个人邮箱示例 配置依赖 org.springframework.boot spring-boot-starter-mail 简单了解涉及的两个传输协议 SMTP协议:

发送邮件: 我们通常把处理用户smtp请求(邮件发送请求)的服务器称之为SMTP服务器(邮件发送服务器)。

POP3协议:

接收邮件: 我们通常把处理用户pop3请求(邮件接收请求)的服务器称之为POP3服务器(邮件接收服务器)。

QQ邮箱中获取对应的权限

QQ邮箱需要安全验证,我们需要获取他对应的权限

在这里插入图片描述

在这里插入图片描述 在这里插入图片描述

配置文件 #发送邮件配置 # SMTP服务器的地址,这是QQ的,其他的邮箱要改一下 spring.mail.host=smtp.qq.com #发送方的邮箱 [email protected] #这里刚刚获得的16位授权码 spring.mail.password=xxxxxxxxxxxxxx # 设置是否需要认证,如果为true,那么用户名和密码就必须的, # 如果设置false,可以不设置用户名和密码,当然也得看你的对接的平台是否支持无密码进行访问的。 spring.mail.properties.mail.smtp.auth=true # STARTTLS 是对纯文本通信协议的扩展。它提供一种方式将纯文本连接升级为加密连接(TLS或SSL),而不是另外使用一个端口作加密通信。 spring.mail.properties.mail.smtp.starttls.enable=true spring.mail.properties.mail.smtp.starttls.required=true spring.mail.default-encoding=UTF-8 工具类 @Component @Slf4j public class MailUtil { @Value("${spring.mail.username}") private String sender; //邮件发送者 @Resource private JavaMailSender javaMailSender; /** * 发送文本邮件 * * @param mail */ public void sendSimpleMail(Mail mail) { try { SimpleMailMessage mailMessage = new SimpleMailMessage(); mailMessage.setFrom(sender); //邮件发送者 mailMessage.setTo(mail.getRecipient()); // 邮件发给的人 mailMessage.setSubject(mail.getSubject()); // 邮件主题 mailMessage.setText(mail.getContent()); // 邮件内容 //mailMessage.copyTo(copyTo); javaMailSender.send(mailMessage); log.info("邮件发送成功 收件人:{}", mail.getRecipient()); } catch (Exception e) { log.error("邮件发送失败 {}", e.getMessage()); throw new BusinessException(BusinessExceptionCode.EMAIL_FORMAT_ERROR); //这是我自定义的一个异常码 } } //复杂邮件 // MimeMessage mimeMessage = mailSender.createMimeMessage(); // MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage); // messageHelper.setFrom("[email protected]"); // messageHelper.setTo("[email protected]"); // messageHelper.setSubject("BugBugBug"); // messageHelper.setText("一杯茶,一根烟,一个Bug改一天!"); // messageHelper.addInline("bug.gif", new File("xx/xx/bug.gif")); // messageHelper.addAttachment("bug.docx", new File("xx/xx/bug.docx")); // mailSender.send(mimeMessage); } JavaBean public class Mail implements Serializable { private static final long serialVersionUID = 4359709211352400087L; private String recipient;//邮件接收人 private String subject; //邮件主题 private String content; //邮件内容 } 测试类 @SpringBootTest public class SpringbootMailApplicationTests { @Resource private MailUtil mailUtil; //接收人 private static final String recipient = "[email protected]"; /** * 发送文本邮件 */ @Test public void sendSimpleMail() { Mail mail = new Mail(); int code = (int) ((Math.random() * 9 + 1) * 100000); mail.setRecipient(recipient); mail.setSubject("修改邮箱"); mail.setContent("亲爱的用户:您好!\n" + "\n" + " 您收到这封电子邮件是因为您 (也可能是某人冒充您的名义) 申请了修改邮箱。假如这不是您本人所申请, 请不用理会这封电子邮件, 但是如果您持续收到这类的信件骚扰, 请您尽快联络管理员。\n" + "\n" + " 请使用以下验证码完成后续修改邮箱流程\n" + "\n " + code + "\n\n" +" 注意:请您收到邮件的十分钟内("+ DateFormatUtils.format(new Date().getTime() + 10 * 60 * 1000, "yyyy-MM-dd HH:mm:ss")+ ")前使用,否则验证码将会失效。" ); mailUtil.sendSimpleMail(mail); } } 结果

在这里插入图片描述

企业邮箱示例

企业邮箱相对于个人邮箱要改两处地方

一:配置文件 #需要改一下smtp地址,我在这卡了半天没找到,太草了QwQ!!! spring.mail.host=smtp.exmail.qq.com [email protected] #注意这里的密码可以填登录密码,不需要授权码,但如果你想用授权码登录,授权码获取参照第三条 spring.mail.password=xxxx spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true spring.mail.properties.mail.smtp.starttls.required=true spring.mail.default-encoding=UTF-8 二:用管理员账号授予邮箱对应权限

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f1JrIGzv-1630250301725)(C:\Users\微瞬\AppData\Roaming\Typora\typora-user-images\image-20210829213148445.png)]

在这里插入图片描述

在这里插入图片描述 在这里插入图片描述

三:获取授权码

如果想用授权码登陆可以这样获取授权码

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

需要注意:现在很多服务器运营商都封25端口了!主要是防止垃圾邮件,不过一般是可以申请开启的

这是为了加强管理,因为如果大量垃圾邮件从你的平台出去,以后ip段都被人黑名单了,谁也别想发了,所以想阿里云等服务器运营商都封了25端口,所以我们项目部署到服务器的时候邮件要换成465端口发送

只需要在配置文件下加上SSL配置就好,建议在本地发送的时候也加上,更加安全

# SSL Config spring.mail.port=465 spring.mail.protocol=smtp spring.mail.properties.mail.smtp.ssl.enable=true spring.mail.properties.mail.smtp.socketFactory.port=465 spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3