Java实现QQ邮件发送
QQ邮件发送
可以发送文本,图片,附件,同时可以将它们进行拼接发送。
功能代码被分成了4个方法,每个方法分别代表不同的发送方式,选择自己需要的方法即可。
**实现发送邮件之前,先准备好QQ授权码。**
一、获取授权码
打开QQ邮箱
点击设置
点击账户
开启POP3/SMTP服务,我这里是开启的
找到下方的温馨提醒,点击生成授权码
验证密保,选择一种方式即可
- 授权码生成,复制保存一下,代码中需要
二、编写代码
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邮件发送相关推荐
- Java实现QQ邮件发送客户端程序设计
目录 一.前言:QQ邮件发送程序 二.封装SMTP操作 三.实现多线程接收 四.QQ邮件客户端界面设计 1.连接按钮 2.发送按钮 五.QQ邮件发送效果演示 六.总结 一.前言:QQ邮件发送程序 !! ...
- Java实现QQ邮件发送原理和实现
电子邮件 在网络中实现邮件发送和接收的功能,就必须要有专门的邮件服务器(使用SMTP协议).我们发送一封邮件,先要经过各层路由,交换机,基站,然后存到该邮件服务器,(不同的邮件有不同的邮件服务器,比如 ...
- Java网络编程:实现QQ邮件发送客户端
目录 一.目标介绍 1.认识SMTP(邮件传输协议) 2.POP3(邮件接收协议) 二.基于Base64编码邮箱及授权码 1.开通QQ邮箱SMTP/POP3服务 2.Java编写BASE64编码程序 ...
- 最简单Java实现QQ邮箱发送验证码
Java使用QQ邮箱发送验证码 1. 开启服务,获取授权码 需登录自己的QQ邮箱,打开 POP3/SMTP 服务,并获取授权码. 具体操作: 登录邮箱 邮箱首页 "设置" 选择 & ...
- 通过QQ邮件发送文档到kindle,kindle收不到的问题
问题描述:通过QQ邮件发送文档到kindle,kindle收不到,已经按照网上的教程设置了,检查了好几遍,但就是发送不过去 问题原因:通过查看已发邮件发现发件人邮箱地址不是自己记的那个299XXX@q ...
- qq邮箱格式的Java代码_Java实现QQ邮件发送
首先我们需要两个jar包,点击下面即可下载这两个包: 我们这里采用QQ邮箱发送邮件为例,代码如下: package ddd; import java.util.Properties; import j ...
- java发送消息_通过java给qq邮箱发送信息
通过java程序给qq邮箱发送信息. 1.第一步:下载mail的jar包:javax.mail.jar 下载地址:https://javaee.github.io/javamail/#Latest_N ...
- java读取qq邮箱_通过java给qq邮箱发送信息
通过java程序给qq邮箱发送信息. 1.第一步:下载mail的jar包:javax.mail.jar 下载地址:https://javaee.github.io/javamail/#Latest_N ...
- java实现邮件发送_基于JavaMail的Java实现简单邮件发送功能
电子邮件的应用非常广泛,例如在某网站注册了一个账户,自动发送一封欢迎邮件,通过邮件找回密码,自动批量发送活动信息等.但这些应用不可能和我们自己平时发邮件一样,先打开浏览器,登录邮箱,创建邮件再发送.本 ...
最新文章
- Linux下C程序的反汇编【转】
- python dataframe删除指定行_pandas.DataFrame删除/选取含有特定数值的行或列
- MySQL唯一索引与主键的区别:主键相当于一本书的页码,索引相当于书的目录
- 【Scala谜题】继承
- livecharts中仪表盘_LiveCharts文档-3开始-4可用的图表
- es6 --- 自制迭代器
- C语言作业不足之处,C语言和汇编语言的优缺点分析-控制器/处理器-与非网
- 深入理解 Git 的实现原理
- 视频显示边缘空白的真相
- 股市心态决定成败:不贪不惧不急不赌
- 【报告分享】中国物联网平台产业市场研究报告(2020版).pdf(附下载链接)...
- JAVA编写的一个简单的Socket实现的HTTP响应服务器
- 计算机专业英语词汇分类收录
- Bitbake中文手册--1(概述)
- 静态网页—制作“人人网首页”页面
- 如何在 JavaScript 中使用SpreadJS导入和导出 Excel 文件
- 生产线平衡优化毕业论文【flexsim仿真】
- 如何消除自激振荡(硬件每日一题)
- 【论文阅读】TimbreTron : A WaveNet (Cycle GAN(CQT(audio ))) pipeline for musical timbre transfer
- 3.ARMv7-M exception model(1)
热门文章
- linux redis经常自动关闭,redis 关闭保护模式
- 磁盘IO遇到瓶颈时内存Cache的策略
- UICC 之 USIM 详解全系列——USIM Demo详解
- 发光强度、亮度、光照度,这些不常见的单位傻傻分不清?
- Linux输入命令不显示
- intellij idea 2018 激活
- 用python发邮件(带附件)
- 搭建3款远程开发环境:Pycharm、Jupyter notebook以及code-server
- python程序设计基础(山东联盟)_知到APPPython程序设计基础(山东联盟)考试期末答案...
- pg创建数据库和用户并授权