QQ邮件发送

可以发送文本,图片,附件,同时可以将它们进行拼接发送。
功能代码被分成了4个方法,每个方法分别代表不同的发送方式,选择自己需要的方法即可。
**实现发送邮件之前,先准备好QQ授权码。**

一、获取授权码

  1. 打开QQ邮箱

  2. 点击设置

  3. 点击账户

  1. 开启POP3/SMTP服务,我这里是开启的

  2. 找到下方的温馨提醒,点击生成授权码

  3. 验证密保,选择一种方式即可

  1. 授权码生成,复制保存一下,代码中需要

二、编写代码

1、pom.xml

<dependencies><!--发送邮件--><dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4.7</version></dependency><dependency><groupId>javax.activation</groupId><artifactId>activation</artifactId><version>1.1.1</version></dependency>
</dependencies>

2、Java

/*** 作者:沈公子* 日期:2022/7/15 - 18:04* 作用:发送邮件* 需求:文本,图片,附件(文本,图片,视频,音乐)与拼接发送* setContent();    文本* setContentID();  图片* setFileName();   附件* 使用的路径是本项目的 resources 目录*/
public class MailDemoSum {public static void main(String[] args) throws Exception {// 发送邮件(文本)//   testMail();// 发送邮件(图片)//   imageMail();// 发送邮件(附件:文本、图片、视频、音乐等)//  annexMail();// 发送邮件(文本,附件,图片,拼接)splitMail();}/*** 文本,附件,图片,拼接邮件*/private static void splitMail() throws Exception {// 给用户发送邮件的邮箱final String from = "发件人QQ邮箱";// 邮箱的用户名final String username = "发件人QQ邮箱或邮箱用户名";// 邮箱授权码final String password = "授权码";// 发送邮件的服务器地址,QQ服务器final String host = "smtp.qq.com";// 接收人邮箱final String to = "收件人QQ邮箱";// 邮件主题final String title = "邮件主题";// 使用QQ邮箱时配置Properties prop = new Properties();prop.setProperty("mail.host", "smtp.qq.com");    // 设置QQ邮件服务器prop.setProperty("mail.transport.protocol", "smtp");      // 邮件发送协议prop.setProperty("mail.smtp.auth", "true");      // 需要验证用户名和密码// 关于QQ邮箱,还要设置SSL加密,其他邮箱不需要MailSSLSocketFactory sf = new MailSSLSocketFactory();sf.setTrustAllHosts(true);prop.put("mail.smtp.ssl.enable", "true");prop.put("mail.smtp.ssl.socketFactory", sf);// 创建定义整个邮件程序所需的环境信息的 Session 对象,QQ才有,其他邮箱就不用了Session session = Session.getDefaultInstance(prop, new Authenticator() {@Overrideprotected PasswordAuthentication getPasswordAuthentication() {// 发件人邮箱用户名,授权码return new PasswordAuthentication(username, password);}});// 开启 Session 的 debug 模式,这样就可以查看程序发送 Email 的运行状态session.setDebug(true);// 通过 session 得到 transport 对象Transport ts = session.getTransport();// 使用邮箱的用户名和授权码连上邮箱服务器ts.connect(host, username, password);// 创建邮件,写邮件// 需要传递 sessionMimeMessage message = new MimeMessage(session);message.setFrom(new InternetAddress(from)); // 指明邮件的发件人message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));   // 指明邮件的收件人message.setSubject(title);     // 邮件主题// 图片MimeBodyPart body1 = new MimeBodyPart();body1.setDataHandler(new DataHandler(new FileDataSource("D:\\Java\\JavaWeb\\daily_demo\\day40\\src\\main\\resources\\1.png")));body1.setContentID("1.png");// 文本MimeBodyPart body2 = new MimeBodyPart();body2.setContent("我不是广告,<img src='cid:1.png'>", "text/html;charset=utf-8");// 附件MimeBodyPart body3 = new MimeBodyPart();body3.setDataHandler(new DataHandler(new FileDataSource("D:\\Java\\JavaWeb\\daily_demo\\day40\\src\\main\\resources\\sp.mp4")));body3.setFileName("sp.mp4");// 附件MimeBodyPart body4 = new MimeBodyPart();body4.setDataHandler(new DataHandler(new FileDataSource("D:\\Java\\JavaWeb\\daily_demo\\day40\\src\\main\\resources\\a.txt")));body4.setFileName("2.png");// 拼接邮件正文内容MimeMultipart mimeMultipart1 = new MimeMultipart();mimeMultipart1.addBodyPart(body1);mimeMultipart1.addBodyPart(body2);mimeMultipart1.setSubType("related");   // 文本和图片内嵌成功// 将拼装好的正文内容设置为主体MimeBodyPart contentText = new MimeBodyPart();contentText.setContent(mimeMultipart1);// 拼接附件与正文内容MimeMultipart allFile = new MimeMultipart();allFile.addBodyPart(body3);allFile.addBodyPart(body4);allFile.addBodyPart(contentText);allFile.setSubType("mixed");    // 正文和附件都存在邮件中,所以类型设置为 mixed,三种方式,两个附件单词都可用:mixed(附件) > related(附件) > alternative(纯文本)// 设置到消息中,保存修改message.setContent(allFile);  // 把最后编辑好的邮件放到消息当中message.saveChanges();   // 保存修改// 发送邮件ts.sendMessage(message, message.getAllRecipients());// 释放资源ts.close();}/*** 附件邮件发送(附件:文本、图片、视频、音乐等)*/private static void annexMail() throws Exception {// 给用户发送邮件的邮箱final String from = "发件人QQ邮箱";// 邮箱的用户名final String username = "发件人QQ邮箱或邮箱用户名";// 邮箱授权码final String password = "授权码";// 发送邮件的服务器地址,QQ服务器final String host = "smtp.qq.com";// 接收人邮箱final String to = "收件人QQ邮箱";// 邮件主题final String title = "邮件主题";// 使用QQ邮箱时配置Properties prop = new Properties();prop.setProperty("mail.host", "smtp.qq.com");    // 设置QQ邮件服务器prop.setProperty("mail.transport.protocol", "smtp");      // 邮件发送协议prop.setProperty("mail.smtp.auth", "true");      // 需要验证用户名和密码// 关于QQ邮箱,还要设置SSL加密,其他邮箱不需要MailSSLSocketFactory sf = new MailSSLSocketFactory();sf.setTrustAllHosts(true);prop.put("mail.smtp.ssl.enable", "true");prop.put("mail.smtp.ssl.socketFactory", sf);// 创建定义整个邮件程序所需的环境信息的 Session 对象,QQ才有,其他邮箱就不用了Session session = Session.getDefaultInstance(prop, new Authenticator() {@Overrideprotected PasswordAuthentication getPasswordAuthentication() {// 发件人邮箱用户名,授权码return new PasswordAuthentication(username, password);}});// 开启 Session 的 debug 模式,这样就可以查看程序发送 Email 的运行状态session.setDebug(true);// 通过 session 得到 transport 对象Transport ts = session.getTransport();// 使用邮箱的用户名和授权码连上邮箱服务器ts.connect(host, username, password);// 创建邮件,写邮件MimeMessage message = new MimeMessage(session);message.setFrom(new InternetAddress(from)); // 指明邮件的发件人message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));   // 指明邮件的收件人message.setSubject(title);     // 邮件主题message.setDataHandler(new DataHandler(new FileDataSource("D:\\Java\\JavaWeb\\daily_demo\\day40\\src\\main\\resources\\aa.txt")));message.setFileName("sp.mp4");// 发送邮件ts.sendMessage(message, message.getAllRecipients());// 释放资源ts.close();}/*** 图片邮件发送*/private static void imageMail() throws Exception {// 给用户发送邮件的邮箱final String from = "发件人QQ邮箱";// 邮箱的用户名final String username = "发件人QQ邮箱或邮箱用户名";// 邮箱授权码final String password = "授权码";// 发送邮件的服务器地址,QQ服务器final String host = "smtp.qq.com";// 接收人邮箱final String to = "收件人QQ邮箱";// 邮件主题final String title = "邮件主题";// 使用QQ邮箱时配置Properties prop = new Properties();prop.setProperty("mail.host", "smtp.qq.com");    // 设置QQ邮件服务器prop.setProperty("mail.transport.protocol", "smtp");      // 邮件发送协议prop.setProperty("mail.smtp.auth", "true");      // 需要验证用户名和密码// 关于QQ邮箱,还要设置SSL加密,其他邮箱不需要MailSSLSocketFactory sf = new MailSSLSocketFactory();sf.setTrustAllHosts(true);prop.put("mail.smtp.ssl.enable", "true");prop.put("mail.smtp.ssl.socketFactory", sf);// 创建定义整个邮件程序所需的环境信息的 Session 对象,QQ才有,其他邮箱就不用了Session session = Session.getDefaultInstance(prop, new Authenticator() {@Overrideprotected PasswordAuthentication getPasswordAuthentication() {// 发件人邮箱用户名,授权码return new PasswordAuthentication(username, password);}});// 开启 Session 的 debug 模式,这样就可以查看程序发送 Email 的运行状态session.setDebug(true);// 通过 session 得到 transport 对象Transport ts = session.getTransport();// 使用邮箱的用户名和授权码连上邮箱服务器ts.connect(host, username, password);// 创建邮件,写邮件// 需要传递 sessionMimeMessage message = new MimeMessage(session);message.setFrom(new InternetAddress(from)); // 指明邮件的发件人message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));   // 指明邮件的收件人message.setSubject(title);     // 邮件主题// 准备图片数据MimeBodyPart image = new MimeBodyPart();// 图片需要经过数据处理,DataHandler:数据处理DataHandler dh = new DataHandler(new FileDataSource("D:\\Java\\JavaWeb\\daily_demo\\day40\\src\\main\\resources\\1.png"));image.setDataHandler(dh);   // 在我们的 Body 中放入这个处理的图片数据image.setContentID("imageID");    // 给图片设置一个ID,后面需要,设置 cid// 准备正文数据MimeBodyPart text = new MimeBodyPart();text.setContent("图片邮件<img src='cid:imageID'>", "text/html;charset=UTF-8"); // 邮件内容// 拼接文本与图片MimeMultipart mm = new MimeMultipart();mm.addBodyPart(text);mm.addBodyPart(image);mm.setSubType("related");    // 三种方式,两个附件单词都可用:mixed(附件) > related(附件) > alternative(纯文本)// 设置到消息中,保存修改message.setContent(mm);  // 把最后编辑好的邮件放到消息当中message.saveChanges();   // 保存修改// 发送邮件ts.sendMessage(message, message.getAllRecipients());// 释放资源ts.close();}/*** 文本邮件发送*/private static void testMail() throws Exception {// 给用户发送邮件的邮箱final String from = "发件人QQ邮箱";// 邮箱的用户名final String username = "发件人QQ邮箱或邮箱用户名";// 邮箱授权码final String password = "授权码";// 发送邮件的服务器地址,QQ服务器final String host = "smtp.qq.com";// 接收人邮箱final String to = "收件人QQ邮箱";// 邮件主题final String title = "邮件主题";// 使用QQ邮箱时配置Properties prop = new Properties();prop.setProperty("mail.host", "smtp.qq.com");    // 设置QQ邮件服务器prop.setProperty("mail.transport.protocol", "smtp");      // 邮件发送协议prop.setProperty("mail.smtp.auth", "true");      // 需要验证用户名和密码// 关于QQ邮箱,还要设置SSL加密,其他邮箱不需要MailSSLSocketFactory sf = new MailSSLSocketFactory();sf.setTrustAllHosts(true);prop.put("mail.smtp.ssl.enable", "true");prop.put("mail.smtp.ssl.socketFactory", sf);// 创建定义整个邮件程序所需的环境信息的 Session 对象,QQ才有,其他邮箱就不用了Session session = Session.getDefaultInstance(prop, new Authenticator() {@Overrideprotected PasswordAuthentication getPasswordAuthentication() {// 发件人邮箱用户名,授权码return new PasswordAuthentication(username, password);}});// 开启 Session 的 debug 模式,这样就可以查看程序发送 Email 的运行状态session.setDebug(true);// 通过 session 得到 transport 对象Transport ts = session.getTransport();// 使用邮箱的用户名和授权码连上邮箱服务器ts.connect(host, username, password);// 创建邮件,写邮件MimeMessage message = new MimeMessage(session);message.setFrom(new InternetAddress(from)); // 指明邮件的发件人message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));   // 指明邮件的收件人message.setSubject(title);     // 邮件主题message.setContent("邮件内容", "text/html;charset=utf-8");  // 邮件内容// 发送邮件ts.sendMessage(message, message.getAllRecipients());// 释放资源ts.close();}
}

Java实现QQ邮件发送相关推荐

  1. Java实现QQ邮件发送客户端程序设计

    目录 一.前言:QQ邮件发送程序 二.封装SMTP操作 三.实现多线程接收 四.QQ邮件客户端界面设计 1.连接按钮 2.发送按钮 五.QQ邮件发送效果演示 六.总结 一.前言:QQ邮件发送程序 !! ...

  2. Java实现QQ邮件发送原理和实现

    电子邮件 在网络中实现邮件发送和接收的功能,就必须要有专门的邮件服务器(使用SMTP协议).我们发送一封邮件,先要经过各层路由,交换机,基站,然后存到该邮件服务器,(不同的邮件有不同的邮件服务器,比如 ...

  3. Java网络编程:实现QQ邮件发送客户端

    目录 一.目标介绍 1.认识SMTP(邮件传输协议) 2.POP3(邮件接收协议) 二.基于Base64编码邮箱及授权码 1.开通QQ邮箱SMTP/POP3服务 2.Java编写BASE64编码程序 ...

  4. 最简单Java实现QQ邮箱发送验证码

    Java使用QQ邮箱发送验证码 1. 开启服务,获取授权码 需登录自己的QQ邮箱,打开 POP3/SMTP 服务,并获取授权码. 具体操作: 登录邮箱 邮箱首页 "设置" 选择 & ...

  5. 通过QQ邮件发送文档到kindle,kindle收不到的问题

    问题描述:通过QQ邮件发送文档到kindle,kindle收不到,已经按照网上的教程设置了,检查了好几遍,但就是发送不过去 问题原因:通过查看已发邮件发现发件人邮箱地址不是自己记的那个299XXX@q ...

  6. qq邮箱格式的Java代码_Java实现QQ邮件发送

    首先我们需要两个jar包,点击下面即可下载这两个包: 我们这里采用QQ邮箱发送邮件为例,代码如下: package ddd; import java.util.Properties; import j ...

  7. java发送消息_通过java给qq邮箱发送信息

    通过java程序给qq邮箱发送信息. 1.第一步:下载mail的jar包:javax.mail.jar 下载地址:https://javaee.github.io/javamail/#Latest_N ...

  8. java读取qq邮箱_通过java给qq邮箱发送信息

    通过java程序给qq邮箱发送信息. 1.第一步:下载mail的jar包:javax.mail.jar 下载地址:https://javaee.github.io/javamail/#Latest_N ...

  9. java实现邮件发送_基于JavaMail的Java实现简单邮件发送功能

    电子邮件的应用非常广泛,例如在某网站注册了一个账户,自动发送一封欢迎邮件,通过邮件找回密码,自动批量发送活动信息等.但这些应用不可能和我们自己平时发邮件一样,先打开浏览器,登录邮箱,创建邮件再发送.本 ...

最新文章

  1. Linux下C程序的反汇编【转】
  2. python dataframe删除指定行_pandas.DataFrame删除/选取含有特定数值的行或列
  3. MySQL唯一索引与主键的区别:主键相当于一本书的页码,索引相当于书的目录
  4. 【Scala谜题】继承
  5. livecharts中仪表盘_LiveCharts文档-3开始-4可用的图表
  6. es6 --- 自制迭代器
  7. C语言作业不足之处,C语言和汇编语言的优缺点分析-控制器/处理器-与非网
  8. 深入理解 Git 的实现原理
  9. 视频显示边缘空白的真相
  10. 股市心态决定成败:不贪不惧不急不赌
  11. 【报告分享】中国物联网平台产业市场研究报告(2020版).pdf(附下载链接)...
  12. JAVA编写的一个简单的Socket实现的HTTP响应服务器
  13. 计算机专业英语词汇分类收录
  14. Bitbake中文手册--1(概述)
  15. 静态网页—制作“人人网首页”页面
  16. 如何在 JavaScript 中使用SpreadJS导入和导出 Excel 文件
  17. 生产线平衡优化毕业论文【flexsim仿真】
  18. 如何消除自激振荡(硬件每日一题)
  19. 【论文阅读】TimbreTron : A WaveNet (Cycle GAN(CQT(audio ))) pipeline for musical timbre transfer
  20. 3.ARMv7-M exception model(1)

热门文章

  1. linux redis经常自动关闭,redis 关闭保护模式
  2. 磁盘IO遇到瓶颈时内存Cache的策略
  3. UICC 之 USIM 详解全系列——USIM Demo详解
  4. 发光强度、亮度、光照度,这些不常见的单位傻傻分不清?
  5. Linux输入命令不显示
  6. intellij idea 2018 激活
  7. 用python发邮件(带附件)
  8. 搭建3款远程开发环境:Pycharm、Jupyter notebook以及code-server
  9. python程序设计基础(山东联盟)_知到APPPython程序设计基础(山东联盟)考试期末答案...
  10. pg创建数据库和用户并授权