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

文章目录

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

个人邮箱示例

配置依赖
<!--发送邮件-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId>
</dependency>
简单了解涉及的两个传输协议
  • SMTP协议:

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

  • POP3协议:

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

QQ邮箱中获取对应的权限

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


配置文件
#发送邮件配置
# SMTP服务器的地址,这是QQ的,其他的邮箱要改一下
spring.mail.host=smtp.qq.com
#发送方的邮箱
spring.mail.username=xxxxxxx@qq.com
#这里刚刚获得的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; //邮件发送者@Resourceprivate 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("jiuyue@163.com");
//        messageHelper.setTo("September@qq.com");
//        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 {@Resourceprivate MailUtil mailUtil;//接收人private static final String recipient = "bugbugbug@qq.com";/*** 发送文本邮件*/@Testpublic 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
spring.mail.username=xxxxx@xxxx.com
#注意这里的密码可以填登录密码,不需要授权码,但如果你想用授权码登录,授权码获取参照第三条
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
二:用管理员账号授予邮箱对应权限


三:获取授权码

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




需要注意:现在很多服务器运营商都封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

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

  1. django项目 html报表和excel报表写入并通过邮件发送到outlook和QQ邮箱

    目录 demo2项目 html报表效果 将报表写入excel,并使用邮件发送QQ邮箱和outlook邮箱效果[动图时长1分多钟] demo2项目完整文件夹结构 sql.py文件上半部分 sql.py文 ...

  2. TP5实现邮件发送(PHP 利用QQ邮箱发送邮件「PHPMailer」)

    在 PHP 应用开发中,往往需要验证用户邮箱.发送消息通知,而使用 PHP 内置的 mail() 函数,则需要邮件系统的支持. 如果熟悉 IMAP/SMTP 协议,结合 Socket 功能就可以编写邮 ...

  3. foxmail邮件加载失败重试_TP5实现邮件发送(PHP 利用QQ邮箱发送邮件「PHPMailer」)...

    修改php.ini中的一些配置 extension=php_openssl.dll //前面的分号去掉,allow_url_fopen = Off 改为 allow_url_fopen = On PH ...

  4. 手机邮箱看不到已发送邮件_TP5实现邮件发送(PHP 利用QQ邮箱发送邮件「PHPMailer」) - blog_zss小帅-博客猿...

    在 PHP 应用开发中,往往需要验证用户邮箱.发送消息通知,而使用 PHP 内置的 mail() 函数,则需要邮件系统的支持. 如果熟悉 IMAP/SMTP 协议,结合 Socket 功能就可以编写邮 ...

  5. python 使用公司邮箱发邮件_python 通过邮件发送附件之企业QQ邮箱

    def setmailinfo(self, receiveUser, cc, subject, text, text_type, *attachmentFilePaths): # 设置邮件的基本信息( ...

  6. java调用邮件功能,email,QQ邮箱,接口。

    https://blog.csdn.net/weixin_38166074/article/details/91350457

  7. 用java实现邮件发送验证码

    java实现邮件发送验证码 网易邮箱开通POP3SMTP服务的步骤 java实现邮件发送验证码 建议不要用qq邮箱,我使用qq邮箱直接一直给我报530错误,我一直认为我代码写的有错误或者POP3/SM ...

  8. java实现邮件发送, 抄送及多附件发送

    java实现邮件发送, 抄送及多附件发送 所需的jar包  mailapi.jar和smtp.jar  或  javax-mail-xxx.jar(如javax.mail-1.5.6.jar)  ht ...

  9. 用java实现邮件发送

    电子邮件 1.基础知识铺垫 要在网络上实现邮件功能,必须要有专门的邮件服务器. 这些邮件服务器类似于现实生活中的邮局,它主要负责接收用户投递过的邮件,并把邮件投递到邮件接收者的电子邮箱中. SMTP服 ...

最新文章

  1. 在Ubuntu 14.04 64bit上编译安装xbt tracker
  2. 最强 Java Redis 客户端
  3. java vo转map_三分钟掌握POJO及其转换——PO、DO、DTO、VO
  4. 自动生成Insert数据的SQL脚本
  5. 聊聊网络安全等级保护“能力验证”:配置核查(Linux系统)
  6. Excel VBA实现批量创建链接
  7. 图片延迟加载和滑动翻页
  8. mac 安装nodejs_阿里开源——用于前端和nodejs的轻量级任务管理和构建工具Dawn
  9. otsu算法_【车牌识别算法】
  10. 学习总结之 WebApi 用户登录和匿名登录,及权限验证
  11. 事情隐瞒或者公开,对你没有任何意义
  12. 计算机组成原理(白中英) 第五章 课后题答案
  13. PyCharm高校固定资产管理系统django-python+vue
  14. 【多元统计分析】10.多元线性回归
  15. PHP中的ereg()与eregi()
  16. mysql(数据库)初级操作
  17. angular如何生成条形码下载条形码
  18. powershell中文乱码解决办法
  19. Revit完整案例教程
  20. Maven的settings.xml配置详解-阿里云仓库

热门文章

  1. Hrbust 1176 小陈老师、雪人
  2. 百魂战记服务器维护了多久,为什么百魂战记进不去,百魂战记怎么注册不了
  3. 深入浅出TCP三次握手四次挥手
  4. 无法访问网络计算机用户账户限制,登陆失败用户账户限制可能的原因包括不允许空密码,登陆时间限制,或强制的策略限制...
  5. PTA3-1 彩虹瓶
  6. 韩山师范学院计算机专插本,2019年韩山师范学院专插本各专业录取情况
  7. 企业邮件服务器搭建之品牌形象塑造
  8. XlsxWriter模块常用方法说明
  9. AIQ - deeplearning.ai 全套吴恩达老师的深度学习课程笔记及资源在线
  10. 什么是sq注入及解决