邮件发送

1.邮件收发原理

2.邮箱传输协议

SMTP——发送协议

POP——接收协议

3.Java发送邮件

使用java发送e-mail十分简单,首先应该准备JavaMail API和Java Activation Framework

得到两个jar包:

  • mail.jar
  • activation.jar

4.核心类

5.实现

导入jar包

5.1简单邮件:没有附件和图片,纯文本邮件

qq邮箱中获取相应的权限

代码:

public class Main {//简单邮件:纯文本内容//复杂邮件:文本+图片+附件//要发送邮件需要获取协议,开启POP3和SMTP服务public static void main(String[] args) throws Exception {Properties prop = new Properties();//创建一封邮件//以下三项的Key的值都是固定的prop.setProperty("mail.host","smtp.qq.c om");//设置邮件服务器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);//==========使用JavaMail发送邮件的6个步骤======//1、创建定义整个应用程序所需要的环境信息的Session对象Session session = Session.getDefaultInstance(prop, new Authenticator() {public PasswordAuthentication getPasswordAuthentication(){//发件人邮箱的用户名和授权码(只有qq是授权码,其它的是密码)return new PasswordAuthentication("1612893803@qq.com","授权码");}});//开启Session的debug模式,这样就可以查看到程序发送Email的运行状态session.setDebug(true);//2、通过Session得到transport对象Transport ts = session.getTransport();//3、使用邮箱的用户名和授权码连上邮件服务器ts.connect("SMTP.qq.com","1612893803@qq.com","授权码");//4、创建邮件//创建邮件对象MimeMessage message = new MimeMessage(session);//指明邮件的发件人message.setFrom(new InternetAddress("1612893803@qq.com"));//指明邮件的收件人message.setRecipient(Message.RecipientType.TO,new InternetAddress("212694926@qq.com"));//邮件的标题message.setSubject("只是一个普通的纯文本邮件");//邮件的文本内容message.setContent("你好哇,我来了!","text/html;charset=UTF-8");//5、发送邮件ts.sendMessage(message,message.getAllRecipients());//6、关闭连接ts.close();}

5.2复杂邮件:有附件和图片

附件格式包含关系

public class sendMail02 {//简单邮件:纯文本内容//复杂邮件:文本+图片+附件/**MimeMessage类表示整封邮件。*MimeBodyPart类表示邮件的一个MIME消息。*MimeMultipart类表示一个由多个MIME消息组合成的组合MIME消息。*///要发送邮件需要获取协议,开启POP3和SMTP服务public static void main(String[] args) throws Exception {Properties prop = new Properties();//创建一封邮件//以下三项的Key的值都是固定的prop.setProperty("mail.host","smtp.qq.com");//设置邮件服务器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);//==========使用JavaMail发送邮件的6个步骤======//变量名字定义的有点乱,不想改了。将就下吧//1、创建定义整个应用程序所需要的环境信息的Session对象Session session = Session.getDefaultInstance(prop, new Authenticator() {public PasswordAuthentication getPasswordAuthentication(){//发件人邮箱的用户名和授权码return new PasswordAuthentication("1612893803@qq.com","授权码");}});//开启Session的debug模式,这样就可以查看到程序发送Email的运行状态session.setDebug(true);//2、通过Session得到transport对象Transport ts = session.getTransport();//3、使用邮箱的用户名和授权码连上邮件服务器ts.connect("SMTP.qq.com","1612893803@qq.com","授权码");//4、创建邮件//创建邮件对象MimeMessage message = new MimeMessage(session);//指明邮件的发件人message.setFrom(new InternetAddress("1612893803@qq.com"));//指明邮件的收件人message.setRecipient(Message.RecipientType.TO,new InternetAddress("212694926@qq.com"));//邮件的标题message.setSubject("这是一个有文本、图片、附件的邮件");//邮件的内容//=================================================//准备图片数据 DataHandler:处理除文本外的数据MimeBodyPart image = new MimeBodyPart();DataHandler dh = new DataHandler(new FileDataSource("C:\\Users\\Think\\Documents\\image-20200220200136289.png"));image.setDataHandler(dh);image.setContentID("xx.png");//设置图片ID//ContentID用于为“multipart/related”组合消息中的内嵌资源指定一个唯一标识号,在HTML格式的正文中可以使用这个唯一标识号来引用该内嵌资源。//注意,在引用Content-ID头字段标识的内嵌资源时,要在资源的唯一标识号前面加上“cid:”,以说明要采用唯一标识号对资源进行引用。//准备正文数据MimeBodyPart text = new MimeBodyPart();text.setContent("这是一个带图片、文本、附件<img src='cid:xx.png'>的邮件","text/html;charset=UTF-8");//准备附件数据MimeBodyPart accessory = new MimeBodyPart();DataHandler dh2 = new DataHandler(new FileDataSource("C:\\Users\\Think\\Pictures\\Saved Pictures\\illust_70110900_20191209_012234.jpg"));accessory.setDataHandler(dh2);accessory.setFileName(MimeUtility.encodeText("yan"));//给附件一个名字,发过去显示的就是这个设定的名字||MimeUtility.encodeText("")解决附件发送过去乱码;//*****************************!!!!!!!**********************/*MimeBodyPart:表示复杂邮件的一个组成部分,它可以表示文本,附件,图片DataHandler:表示可以读取图片或附件MimeMultipart:表示二个邮件组成部分的关系,文本和图片的关系是"related"关系Content-ID:表示图片的编号related:图片|| mixed:附件*///*****************************!!!!!!!**********************//拼接图片和文本MimeMultipart mm = new MimeMultipart();mm.addBodyPart(text);mm.addBodyPart(image);mm.setSubType("related");//将文本+图片封装成邮件的组成部分,即将关系看作成一个部分MimeBodyPart context = new MimeBodyPart();context.setContent(mm);//把附件也加上MimeMultipart file = new MimeMultipart();file.addBodyPart(context);file.addBodyPart(accessory);file.setSubType("mixed");//放到消息中message.setContent(file);//把编辑好的内容放入消息中message.saveChanges();//保存修改!//=================================================//5、发送邮件ts.sendMessage(message,message.getAllRecipients());//message:发送的消息||message.getAllRecipients():获取保存在里面的地址//6、关闭连接ts.close();}//对于,复杂类型的邮件,位置关系特别注意和加入的顺利要一致
}

javaWeb学习--------邮件发送相关推荐

  1. JavaWeb(三):java和javaWeb实现邮件发送

    JavaWeb-实现邮件发送 学习视频:B站 狂神说Java – https://www.bilibili.com/video/BV12J41137hu?p=1 学习资料笔记:csdn dream_F ...

  2. javaWeb实现邮件发送

    本内容主要用于java代码中,邮件的发送,具体步骤分成以下三点: 1.开启邮箱POP3服务 邮箱->设置->账户 开启POP3服务 点击生成授权码获取授权码  此授权码在之后将作为邮箱密码 ...

  3. SpringBoot整合邮件发送

    本专栏将从基础开始,循序渐进,以实战为线索,逐步深入SpringBoot相关知识相关知识,打造完整的SpringBoot学习步骤,提升工程化编码能力和思维能力,写出高质量代码.希望大家都能够从中有所收 ...

  4. java web 邮件_JavaWeb实现邮件发送接收功能

    一.邮件开发涉及到的一些基本概念 1.1.邮件服务器和电子邮箱 要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器.例如现在Internet很多提供邮件服务的厂商:sina.sohu. ...

  5. JavaWeb学习总结(五十一)——邮件的发送与接收原理

    一. 邮件开发涉及到的一些基本概念 1.1.邮件服务器和电子邮箱 要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器.例如现在Internet很多提供邮件服务的厂商:sina.sohu ...

  6. JavaMail邮件发送,网页、客户端详解-JavaWeb学习6.9

    JavaMail邮件发送 JavaMail发送邮件 笔记 导入mail.jar包 eclipse编写时的目录 网页上发送邮件 采用qq邮箱和网易邮箱 代码 客户端发送邮箱 客户端采用foxmail 服 ...

  7. 邮件发送 --- 纯Java、JavaWeb、Spring三种实现方式

    邮件发送学习笔记~ 一.邮件发送介绍 要在网络上实现邮件功能,必须要有专门的邮件服务器! 这些邮件服务器类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中! ...

  8. JavaWeb学习总结(五十二)——使用JavaMail创建邮件和发送邮件

    JavaWeb学习总结(五十二)--使用JavaMail创建邮件和发送邮件 一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封简单的邮件包含邮件头和邮件体两 ...

  9. 【狂神说】JavaWeb笔记整理 | SMBMS项目 | 文件上传和邮件发送

    目录 JavaWeb 1.基本概念 1.1 概念 1.2 web应用程序: 1.3 静态web 1.4 动态web 2.web服务器 2.1 技术讲解 2.2 web 服务器 3. Tomcat 3. ...

  10. JavaWeb邮件发送

    邮件发送 1.邮件发送原理图 2.jar包的支持 mail-1.4.7.jar activation-1.1.1.jar 3.授权码的获取 4.简易文本邮件发送的实现 5.实现步骤 创建session ...

最新文章

  1. 三星15TB固态硬盘开卖 售价高达10000美元
  2. 关于 Oracle DB CONSTRAINT约束的一些SQL ORA-02292: integrity constraint violated
  3. MVC View显示详解(RenderBody,RenderPage,RenderSection,Partial)
  4. java中随机数边界问题,java 简单Dice问题(随机数的运用)
  5. 邮票的孔怎么做出来的_金银花茶是怎么做出来的呢
  6. Fourier变换、Laplace变换与广义函数总结
  7. fetchxml 汇总_Dynamic CRM 2013学习笔记(十七)JS读写各种类型字段方法及技巧
  8. Chrome 45 减少了内存占用
  9. Centos 8 安装和配置 VNC 服务,让 MAC 可以远程桌面管理Centos(linux)
  10. 190702每日一句 孤独之前是迷茫,孤独之后是成长
  11. Xshell、Xftp免费版获取教程
  12. OC语言基础十:OC文件操作
  13. 火山视频在一键去水印网站上解析教程,火山视频去水印教程
  14. python可以做回归分析吗_使用python进行回归分析
  15. Alfresco文档管理系统 文档
  16. 计算机加法器原理,加法器原理
  17. 11:Hive从0到1系列学习:函数之常用的内置函数
  18. Spring Cloud 基本理论概述
  19. Unity 之 ShaderGraph 护盾
  20. HTML+CSS大风车及十字架的实现

热门文章

  1. 如何使用rclone从AWS S3迁移到IBM COS - part 2 - 同步腾讯云对象存储
  2. 计算机专门存储数据的单元,认识算法的数据存储单元——变量
  3. (1/2) sharex录制屏幕没有声音,升级高版本的sharex
  4. python-优矿-期权合成期货策略
  5. 智慧城市建设中 网络安全攻防战如何打赢?
  6. 解决win10系统无法玩红警或者兼容性卡死问题
  7. 【谷歌浏览器打不开Axure解决办法~】
  8. 国内10大著名珠宝品牌
  9. 努比亚Z5Smini刷机包 正式版时间锁屏 音量唤醒 精简优化 流畅稳定
  10. 《精进:如何成为一个很厉害的人》读后感