因为需求,尝试了一下使用java向指定用户发送邮件,亲测有效,源码奉上!

准备工作:

下载JavaMail的jar包:https://mvnrepository.com/artifact/javax.mail/mail/1.4.7

开启邮件发送方IMAP/SMTP服务

开启后会获得授权码

什么是授权码?

授权码是QQ邮箱推出的,用于登录第三方客户端的专用密码。

适用于登录以下服务:POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务。

温馨提醒:为了你的帐户安全,更改QQ密码以及独立密码会触发授权码过期,需要重新获取新的授权码登录。

怎么获取授权码?

先进入设置-》帐户页面找到入口,按照以下流程操作。

(1)点击“开启”

(2)验证密保

(3)获取授权码

代码测试:

import java.util.Properties;import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;import com.sun.mail.util.MailSSLSocketFactory;public class MailTest {public static void main(String[] args) throws Exception {Properties props = new Properties();     // 开启debug调试props.setProperty("mail.debug", "true");// 发送服务器需要身份验证props.setProperty("mail.smtp.auth", "true");// 设置邮件服务器主机名props.setProperty("mail.host", "smtp.qq.com");// 发送邮件协议名称props.setProperty("mail.transport.protocol", "smtp");MailSSLSocketFactory sf = new MailSSLSocketFactory();sf.setTrustAllHosts(true);props.put("mail.smtp.ssl.enable", "true");props.put("mail.smtp.ssl.socketFactory", sf);// 根据propertise创建会话Session session = Session.getInstance(props);// 根据会话创建邮件信息Message msg = new MimeMessage(session);// 邮件主题msg.setSubject("JavaMail Test");//创建图片节点MimeBodyPart image = new MimeBodyPart();//读取本地文件DataHandler dataHandler = new DataHandler(new FileDataSource("src/lib/love.jpg"));//将图片添加至结点image.setDataHandler(dataHandler);//为"节点"设置一个唯一编号image.setContentID("pic");// 创建文本"节点"MimeBodyPart text = new MimeBodyPart();// 这里添加图片的方式是将整个图片包含到邮件内容中text.setContent("<br/><h2>我爱你<h2>"+ "<a href='https://me.csdn.net/weixin_41978722'>网址链接测试</a>"+ "<img src='cid:pic'/>", "text/html;charset=UTF-8");// 创建附件结点(源代码)MimeBodyPart attachment  = new MimeBodyPart();// 读取本地文件DataHandler dataHandler1 = new DataHandler(new FileDataSource("src/com/funyoo/mail/test/MailTest.java"));// 将文件添加至结点attachment.setDataHandler(dataHandler1);// 设置附件的文件名(需要编码)attachment.setFileName(MimeUtility.encodeText(dataHandler1.getName()));    // 创建附件结点(mail.jar包)MimeBodyPart jar  = new MimeBodyPart();// 读取本地文件DataHandler dataHandler2 = new DataHandler(new FileDataSource("src/lib/mail-1.4.7.jar"));// 将文件添加至结点jar.setDataHandler(dataHandler2);// 设置附件的文件名(需要编码)jar.setFileName(MimeUtility.encodeText(dataHandler2.getName()));    // 创建混合节点  将图片节点 文件结点 附件结点 加入MimeMultipart multipart = new MimeMultipart();multipart.addBodyPart(image);multipart.addBodyPart(text);multipart.addBodyPart(attachment);multipart.addBodyPart(jar);// 将混合节点加入邮件中msg.setContent(multipart);// 设置邮件发送方msg.setFrom(new InternetAddress("发送方邮箱地址"));// 开始会话传输Transport transport = session.getTransport();// 连接邮箱   加入自己(发送方)授权码      transport.connect("smtp.qq.com", "发送方邮箱地址", "授权码");// 给目标邮箱发送邮件transport.sendMessage(msg, new Address[] { new InternetAddress("收件方邮箱") });transport.close();}
}

结果:

【Java】使用JavaMail发送qq邮件相关推荐

  1. 【Java】JavaMail发送QQ邮件邮件

    荐读 JavaMail邮件发送不成功的那些坑人情况及分析说明 javax.mail.AuthenticationFailedException异常的处理 QQ邮箱如何开启POP3/SMTP服务 发送说 ...

  2. JavaMail发送QQ邮件

    JavaMail发送QQ邮件 1.开启QQ服务并获得授权码 授权码是QQ邮箱推出的,用于登录第三方客户端的专用密码 适用于登录以下服务:POP3/IMAP/SMTP/Exchange/CardDAV/ ...

  3. QQ邮箱炸啦,我的附件名怎么乱码?解决javaMail发送QQ邮件,附件名乱码的问题

    解决javaMail发送QQ邮件,附件名乱码的问题 问题背景 具体问题 解决思路 源码Debug 解决方式 问题背景 项目里面使用javaMail发QQ邮件,日志显示我们这边传过去的附件名是正常的,个 ...

  4. java通过SMTP发送QQ邮件的完全步骤

    java通过SMTP发送QQ邮件的完全步骤 首先,我们需要打开QQ邮箱的SMTP服务,因为QQ邮箱对于一般的用户都是默认关闭SMTP服务的. 打开QQ邮箱,点击设置 点击帐户 找到SMTP服务的选项, ...

  5. java 发送邮件昵称_利用JavaMail发送QQ邮件

    一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封简单的邮件包含邮件头和邮件体两个部分,邮件头和邮件体之间使用空行分隔. 邮件头包含的内容有: from字段 ...

  6. java怎么发qq邮件_java代码如何发送QQ邮件

    近来想写一个qq之间互相发送邮件的工具.奈何一直报错服务错误: org.apache.commons.mail.EmailException: Sending the email to the fol ...

  7. Java 通过SMTP实现发送QQ邮件

    在eclipse中创建项目,并把javax.amil.jar和commons-email-1.5,jar复制到项目中 链接:https://pan.baidu.com/s/1sQjA1GEpKi6IJ ...

  8. Java发送QQ邮件问题Could not connect to SMTP host: smtp.qq.com, port: 465(内附完整代码)

    邮件发送失败,本地测试可以,部署到服务器就不行. 之前就碰到这个问题,解决办法就是把port端口改成587,然后注释这一段 MailSSLSocketFactory sf = new MailSSLS ...

  9. Simple Java Mail的使用,发送qq邮件

    Simple Java Mail的使用,发送qq邮件 第一步 开启SMTP服务 第二步 导入jar包 第三步 简单的使用 四 集中配置,批量发送 第一步 开启SMTP服务 打开qq邮箱,设置-账户 开 ...

  10. Java中利用qqemai发送QQ邮件

    最近自己了解下Java中利用mai发送QQ邮件 1.QQ邮箱设置 1.1 进去QQ邮箱-->设置-->账号-->进行设置如下图 以下源码 package test; import j ...

最新文章

  1. 前端开发之JavaScript基础篇一
  2. python tkinter选择路径控件_Python3 Tkinter选择路径功能的实现方法
  3. 从零点五开始用Unity做半个2D战棋小游戏(五)
  4. 让架构更简单,QCon上海2016热点前瞻
  5. 让ASP.NET Core支持GraphQL之-GraphQL的实现原理
  6. 用python画出叶子_太疯狂了!原来用粉笔画画,也可以这么美,简单几招教你,美到邻居羡慕嫉妒...
  7. PHP三级联动视频教程,PHP教程:thinkPHP实现的省市区三级联动功能示例
  8. 区块链 以太坊 虚拟机 opcode是什么
  9. 用ASP为blog程序编写Trackback功能 - 小李刀刀(转载)
  10. Atitit db query op shourt code lib list 数据库查询类库最佳实践 目录 1.1. Jpa 1 1.2. Dbutil 1 1.3. Mybtis trouble
  11. Django序列化django REST framework
  12. 【场景化解决方案】OA审批与用友U9数据集成
  13. 将lrc批量转换为txt,同时删除时间标签
  14. Linux 文件和用户管理(Centos 7)
  15. OA办公系统选购,千万别犯这些错
  16. Typora工具免费版下载
  17. 牛客OJ SQL后30题的解答
  18. 爬虫学习5——requests进阶(cookie登录、防盗链、
  19. latex 字体大小
  20. Vimium-chrome操作神器

热门文章

  1. html网页中wmode,关于html:Quicktime-Wmode透明问题
  2. 思科交换机接口配置trunk_思科交换机虚拟串口配置VLAN Trunk的步骤
  3. 4条地铁线,乘船到西站!杭州西站枢纽综合交通规划设计方案出炉
  4. 使用Markdown如何修改图片大小
  5. 大神教你用Python破解压缩文件zip密码
  6. CNTV视频深入挖掘分析
  7. Structure SLAM 相关论文阅读(一):消影点/消失点/灭点检测提取
  8. python爬虫:xpath解析
  9. 《UnityAPI.Rect矩阵》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+Rect+Contains+Overlaps+ToString+立钻哥哥++OK++)
  10. vscode配置html页面自动刷新,Vscode关闭自动更新设置