使用到的jar包:

Java实现纯文本邮件发送

1 packageorg.westos.email;2

3 importcom.sun.mail.util.MailSSLSocketFactory;4

5 import javax.mail.*;6 importjavax.mail.internet.InternetAddress;7 importjavax.mail.internet.MimeMessage;8 importjava.security.GeneralSecurityException;9 importjava.util.Properties;10

11 public classSendEamil {12 public static void main(String[] args) throwsMessagingException, GeneralSecurityException {13 //创建一个配置文件并保存

14 Properties properties = newProperties();15

16 properties.setProperty("mail.host","smtp.qq.com");17

18 properties.setProperty("mail.transport.protocol","smtp");19

20 properties.setProperty("mail.smtp.auth","true");21

22

23 //QQ存在一个特性设置SSL加密

24 MailSSLSocketFactory sf = newMailSSLSocketFactory();25 sf.setTrustAllHosts(true);26 properties.put("mail.smtp.ssl.enable", "true");27 properties.put("mail.smtp.ssl.socketFactory", sf);28

29 //创建一个session对象

30 Session session = Session.getDefaultInstance(properties, newAuthenticator() {31 @Override32 protectedPasswordAuthentication getPasswordAuthentication() {33 return new PasswordAuthentication("619046217@qq.com","16位授权码");34 }35 });36

37 //开启debug模式

38 session.setDebug(true);39

40 //获取连接对象

41 Transport transport =session.getTransport();42

43 //连接服务器

44 transport.connect("smtp.qq.com","619046217@qq.com","16位授权码");45

46 //创建邮件对象

47 MimeMessage mimeMessage = newMimeMessage(session);48

49 //邮件发送人

50 mimeMessage.setFrom(new InternetAddress("619046217@qq.com"));51

52 //邮件接收人

53 mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress("875203654@qq.com"));54

55 //邮件标题

56 mimeMessage.setSubject("Hello Mail");57

58 //邮件内容

59 mimeMessage.setContent("我的想法是把代码放进一个循环里","text/html;charset=UTF-8");60

61 //发送邮件

62 transport.sendMessage(mimeMessage,mimeMessage.getAllRecipients());63

64 //关闭连接

65 transport.close();66 }67 }

Java实现文本图片附件复杂的邮件发送

MIME(多用途互联网邮件扩展类型)

MimeBodyPart类

javax.mail.internet.MimeBodyPart类 表示的是一个MIME消息,它和MimeMessage类一样都是从Part接口继承过来。

MimeMultipart类

javax.mail.internet.MimeMultipart是抽象类 Multipart的实现子类,它用来组合多个MIME消息。一个MimeMultipart对象可以包含多个代表MIME消息的MimeBodyPart对象

1 packageorg.westos.email;2

3 importcom.sun.mail.util.MailSSLSocketFactory;4

5 importjavax.activation.DataHandler;6 importjavax.activation.FileDataSource;7 import javax.mail.*;8 import javax.mail.internet.*;9 importjava.security.GeneralSecurityException;10 importjava.util.Properties;11

12 public classSendComplexEmail {13 public static void main(String[] args) throwsGeneralSecurityException, MessagingException {14 Properties prop = newProperties();15 prop.setProperty("mail.host", "smtp.qq.com"); 设置QQ邮件服务器16 prop.setProperty("mail.transport.protocol", "smtp"); //邮件发送协议

17 prop.setProperty("mail.smtp.auth", "true"); //需要验证用户名密码18

19 //QQ邮箱设置SSL加密

20 MailSSLSocketFactory sf = newMailSSLSocketFactory();21 sf.setTrustAllHosts(true);22 prop.put("mail.smtp.ssl.enable", "true");23 prop.put("mail.smtp.ssl.socketFactory", sf);24

25 //1、创建定义整个应用程序所需的环境信息的 Session 对象

26 Session session = Session.getDefaultInstance(prop, newAuthenticator() {27 @Override28 protectedPasswordAuthentication getPasswordAuthentication() {29 //传入发件人的姓名和授权码

30 return new PasswordAuthentication("619046217@qq.com","16位授权码");31 }32 });33

34 //2、通过session获取transport对象

35 Transport transport =session.getTransport();36

37 //3、通过transport对象邮箱用户名和授权码连接邮箱服务器

38 transport.connect("smtp.qq.com","619046217@qq.com","16位授权码");39

40 //4、创建邮件,传入session对象

41 MimeMessage mimeMessage =complexEmail(session);42

43 //5、发送邮件

44 transport.sendMessage(mimeMessage,mimeMessage.getAllRecipients());45

46 //6、关闭连接

47 transport.close();48

49

50 }51

52 public static MimeMessage complexEmail(Session session) throwsMessagingException {53 //消息的固定信息

54 MimeMessage mimeMessage = newMimeMessage(session);55

56 //发件人

57 mimeMessage.setFrom(new InternetAddress("619046217@qq.com"));58 //收件人

59 mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress("619046217@qq.com"));60 //邮件标题

61 mimeMessage.setSubject("带图片和附件的邮件");62

63 //邮件内容64 //准备图片数据

65 MimeBodyPart image = newMimeBodyPart();66 DataHandler handler = new DataHandler(new FileDataSource("E:\\IdeaProjects\\WebEmail\\resources\\测试图片.png"));67 image.setDataHandler(handler);68 image.setContentID("test.png"); //设置图片id69

70 //准备文本

71 MimeBodyPart text = newMimeBodyPart();72 text.setContent("这是一段文本","text/html;charset=utf-8");73

74 //附件

75 MimeBodyPart appendix = newMimeBodyPart();76 appendix.setDataHandler(new DataHandler(new FileDataSource("E:\\IdeaProjects\\WebEmail\\resources\\测试文件.txt")));77 appendix.setFileName("test.txt");78

79 //拼装邮件正文

80 MimeMultipart mimeMultipart = newMimeMultipart();81 mimeMultipart.addBodyPart(image);82 mimeMultipart.addBodyPart(text);83 mimeMultipart.setSubType("related");//文本和图片内嵌成功84

85 //将拼装好的正文内容设置为主体

86 MimeBodyPart contentText = newMimeBodyPart();87 contentText.setContent(mimeMultipart);88

89 //拼接附件

90 MimeMultipart allFile = newMimeMultipart();91 allFile.addBodyPart(appendix);//附件

92 allFile.addBodyPart(contentText);//正文

93 allFile.setSubType("mixed"); //正文和附件都存在邮件中,所有类型设置为mixed94

95

96 //放到Message消息中

97 mimeMessage.setContent(allFile);98 mimeMessage.saveChanges();//保存修改

99

100 returnmimeMessage;101 }102 }

QQ邮箱授权码:

QQ邮箱需获取相应的权限:

QQ邮箱–>邮箱设置–>账户–>POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 开启POP3/SMTP服务,然后获取16位授权码(注意不要将授权码泄露,一个账户可以拥有多个授权码)

JAVA邮件发送的授权码_java实现邮件发送相关推荐

  1. java 32位授权码_Java实现OAuth2.0授权码方式

    Java实现OAuth2.0授权码方式 前面介绍了OAuth2.0和授权方式,可以参考以下文章: 今天就用Java来验证OAuth2.0授权方式的授权码式,我们Spring Cloud的OAuth来实 ...

  2. smtp outlook邮件发送非授权码模式

    1.起因:send fail SMTP AUTH extension not supported by server. 使用端口25 和587均失效出现此问题 首先前往outlook修改设置pop和I ...

  3. java给手机发短信_java给手机发送短信验证码

    最近在做项目,分配到一个使用手机验证码实现快速登录的需求,好了No B B 了直接进入主题. 首先进入官网(http://www.miaodiyun.com/) 进行注册登录,这个不用教吧. 注册登录 ...

  4. 邮箱开启授权码(配置邮件客户端)

    qq邮箱: 先登陆: 点击开启,然后进行发送短信开启. 然后发送短信,获取授权码.一个账号可以获取多个. 网易云:

  5. java微信支付接口源码_java微信支付源码(WxPayAPI_JAVA_v3)

    [实例简介] [实例截图] [核心代码] package com.github.wxpay.sdk; import java.util.HashMap; import java.util.Map; i ...

  6. java短信接口源码_java免费短信接口开发源码

    java免费短信接口开发源码 更多 作者:捷信通来源:www.jiexintong.cn日期:2014-07-30 17:08:51 微宏捷信通短信接口提供适应C#.Java..NET等多种主流开发语 ...

  7. php邮箱发送tp5源码,tp5 使用邮箱发送功能 PHPMailer

    PHPMailer PHPMailer 是一个封装好的 PHP 邮件发送类,支持发送 HTML 内容的电子邮件,以及可以添加附件发送,并不像 PHP 本身 mail() 函数需要服务器环境支持,您只需 ...

  8. java在线学习系统源码_java学习成长之路(基础,源码,项目,实战)

    获取一下学习资源请关注微信公众号:Java编程指南 我为自学编程的或初学java的小伙伴们准备了一整套完整的学习资源和文章,还有我自己在自学路上的一些总结和学习线路,希望能帮到小伙伴们,如果有什么疑问 ...

  9. java长链接主动推送_java以post发送方式实现百度链接提交主动推送(实时)

    怎么实现百度sitemap实时推送,首先,得拥有自己的网站,然后在百度站长上验证通过之后,才有资格推送百度sitemap.          如何选择链接提交方式,当然是选择最快的推送方式,主动推送, ...

  10. java在线学习系统源码_Java在线考试系统源码

    今天给大家演示的是一款由jsp+mysql+ssm框架实现的学生在线考试系统,,今天这个考试系统功能比较完善,支持单选.多选.简答题型,试题可以批量导入,导入时可选择多种方式导入,比如导入到试题库,导 ...

最新文章

  1. mysql中拼接用什么_MySQL中常用的拼接语句的小结(代码示例)
  2. Qt Creator创建可缩放的按钮和边框
  3. 根据使用频率为 5 个字符设计的哈夫曼编码不可能是( )
  4. Java高级面试题!java构造方法的作用和特点
  5. JavaScript 数组 array.at() 获取数组中最后一个元素
  6. python主讲移动端自动化测试框架appium_Appium-移动端自动测试框架,如何入门?...
  7. 微课|中学生可以这样学Python(例7.4):队列
  8. java如何关闭creo,creo怎么把网页关掉
  9. 深度学习项目:歌词的自动生成
  10. 使用python制作ArcGIS插件(4)界面交互
  11. 2021第十届小美赛-“认证杯”数学中国数学建模国际赛
  12. word怎么删除参考文献的横线_2016版Word 中参考文献上面的横线是怎么去掉的啊,求助求助?...
  13. JAVA操作Excel 可配置,动态 生成复杂表头 复杂的中国式报表表头
  14. STM32F103_study54_The punctual atoms(STM32 There have always been questions about learning STM32)
  15. 7号团队-团队任务5:项目总结会
  16. mac打开airplay(隔空播放)
  17. 大律法(OTSU法)
  18. 陀螺仪程序---可直接用
  19. JS如何判断一个数组是否为空、是否包含某个值
  20. 三星移动硬盘不显示的解决

热门文章

  1. Apache POI TXT转成EXCEL(XLSX)
  2. live2d_明日方舟:聊聊可露希尔的live2d以及live2d制作
  3. MFC学习笔记(一)MFC基本知识介绍、建立MFC应用程序
  4. JSP编程中遇到的问题及解决
  5. 【CarMaker学习笔记】CarMaker Python API 接口使用方法
  6. carmaker/matlab联合仿真(三) 生成车道线点,拟合多项式方程
  7. adb连接 vivo_vivoadb工具包下载|vivo安卓adb工具1.0.32 最新版_ - 极光下载站
  8. 高斯分布matlab程序,生成高斯分布的matlab程序
  9. tbslog乱码转换_日文游戏乱码怎么办 乱码转换工具LocaleEmulator
  10. turbo c 混编 汇编语言,浅谈Turbo C过程调用汇编