JavaMail使用qq邮箱发送邮件步骤

 时间:2017-09-01 06:03:41 贡献者:宅客学院

导读:立工匠精神 铸软件人才JavaMail 使用 qq 邮箱发送邮件步骤今天偶然看到新浪新闻,电子邮件的发明人 Ray Tomlinson(雷伊·汤姆林 森)于当地时间 2016 年 3 月 5 日因心脏病去世,享年 74 岁。虽

JavaMail使用qq邮箱发送邮件步骤
JavaMail使用qq邮箱发送邮件步骤

立工匠精神 铸软件人才JavaMail 使用 qq 邮箱发送邮件步骤今天偶然看到新浪新闻,电子邮件的发明人 Ray Tomlinson(雷伊·汤姆林 森)于当地时间 2016 年 3 月 5 日因心脏病去世,享年 74 岁。

虽然我对这位先驱 并没有什么特殊的感情, 但是毕竟电子邮件的出现到今天它已经成为了我们生活 和工作中不可缺少的重要通信工具。

作为从事多年 IT 工作的我来说,更是受益 良多,在这里我也只能够送上一份晚来的哀悼。

其实电子邮件真正的出现是在 1965 年,当时的电子邮件(也许只能说是信 息)只能发送给同一台计算机上的不同用户,一直到 1971 年雷伊·汤姆林森改 良了当时使用的信息传送程序( SNDMSG)发出了跨计算机的第一封电子邮件。

因此雷伊·汤姆林森也就成为了电子邮件的奠基人。

随着我国信息化网络化的发展,现在的电子邮件,基本已经取代了传统的纸 质邮件,成为了新一代的通信工具,它的好处也是显而易见的: 1、无纸化通信(环保、成本低) 2、信件保存时间上,不占实际物理空间 3、不需要送行人,接收者可以进行无人接收 4、邮件传递时间快 5、内容多样化(图片、音乐、网页、程序) 6、移动通信业的高速发展打破了地域性限制(不一定非得在有计算机的地 方,走路也可以发邮件) 因此作为我们开发者来说掌握电子邮件的开发技术是非常有必要的,今天在 这我就为大家介绍一下使用 JavaMail API 与 QQ 邮箱服务器发送邮件的步骤: 一、配置 QQ 邮箱的 IMAP 1、进入 qq 电子邮件点击设置Copyright ©2017 宅客学院|中软国际教育集团1

立工匠精神 铸软件人才 2、进入邮件设置界面后点击账户3、找到帐户安全项,开启 IMAP/SMTP 服务注意:在启用 QQ 邮箱的 14 天之后才能开启此服务 4、发起短信验证,发送短信后点击我已发送注意:在这之前 qq 邮箱需要捆绑一个有效的手机号码 5、得到授权码,点击确定Copyright ©2017 宅客学院|中软国际教育集团2

立工匠精神 铸软件人才注意:此授权码要记住或者保存到文本文件当中发送邮件的时候需要 作为验证密码使用二、发送简单的电子邮件 1、代码: package com.chinasofti.example; /** *

* Title: SendEmail *

*

* Description:JavaMail API 与 QQ 邮箱服务器发送邮件 *

*

* Copyright: Copyright (c) 2016 *

*

* Company: ChinaSoft International Ltd.Copyright ©2017 宅客学院|中软国际教育集团3

立工匠精神 铸软件人才 *

* * @author etc * @version 1.0 */ import java.security.GeneralSecurityException; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; import javax.mail.Address; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.PasswordAuthentication; 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 com.sun.mail.util.MailSSLSocketFactory; public class SendEmail { public static void main(String[] args) throwsGeneralSecurityException, MessagingException { // TODO Auto-generated method stub //用于读取配置文件 Properties props=new Properties();Copyright ©2017 宅客学院|中软国际教育集团4

立工匠精神 铸软件人才 //开启 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"); //开启 ssl 加密(并不是所有的邮箱服务器都需要,但是 qq 邮箱服务器是必须的) MailSSLSocketFactory msf= new MailSSLSocketFactory(); msf.setTrustAllHosts(true); props.put("mail.smtp.ssl.enable", "true"); props.put("mail.smtp.ssl.socketFactory",msf); //获取 Session 会话实例(javamail Session 与 HttpSession 的 区别是 Javamail 的 Session 只是配置信息的集合) Session session=Session.getInstance(props,new javax.mail.Authenticator(){ protected getPasswordAuthentication(){ //用户名密码验证(取得的授权吗) Return new PasswordAuthentication ("78162328@qq.com","vdqnguiiafwhbiai"); } }); //抽象类 MimeMessage 为实现类 有消息 Message message=new MimeMessage(session); //设置邮件主题 消息载体封装了邮件的所 PasswordAuthenticationCopyright ©2017 宅客学院|中软国际教育集团5

立工匠精神 铸软件人才 message.setSubject("这是主题"); //封装需要发送电子邮件的信息 message.setText("这是一封简单的电子邮件"); //设置发件人地址 message.setFrom(new InternetAddress("78162328@qq.com")); //此类的功能是发送邮件 又会话获得实例 Transport transport=session.getTransport(); //开启连接 transport.connect(); //设置收件人地址邮件信息 transport.sendMessage(message, new Address[]{new InternetAddress("78162328@qq.com")}); //邮件发送后关闭信息 transport.close(); }}2、收到邮件Copyright ©2017 宅客学院|中软国际教育集团6

立工匠精神 铸软件人才 三、带附件电子邮件 1、代码 package com.chinasofti.example; /** *

* Title: SendEmail *

*

* Description:JavaMail API 与 QQ 邮箱服务器发送邮件 *

*

* Copyright: Copyright (c) 2016 *

*

* Company: ChinaSoft International Ltd. *

* * @author etc * @version 1.0 */ import java.security.GeneralSecurityException; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; import javax.mail.Address; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart;Copyright ©2017 宅客学院|中软国际教育集团7

立工匠精神 铸软件人才 import javax.mail.PasswordAuthentication; 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 com.sun.mail.util.MailSSLSocketFactory; public class SendEmail { public static void main(String[] args) throws GeneralSecurityException, MessagingException { // TODO Auto-generated method stub //用于读取配置文件 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"); //开启 ssl 加密(并不是所有的邮箱服务器都需要,但是 qq 邮箱 服务器是必须的) MailSSLSocketFactory msf= new MailSSLSocketFactory(); msf.setTrustAllHosts(true); props.put("mail.smtp.ssl.enable", "true"); props.put("mail.smtp.ssl.socketFactory",msf); //获取 Session 会话实例(javamail Session 与 HttpSession 的区别Copyright ©2017 宅客学院|中软国际教育集团8

立工匠精神 铸软件人才 是 Javamail 的 Session 只是配置信息的集合) Session javax.mail.Authenticator(){ protected getPasswordAuthentication(){ //用户名密码验证(取得的授权吗) return new PasswordAuthentication("78162328@qq.com","vdqnguiiafwhbiai"); } }); //抽象类 MimeMessage 为实现类 消息 Message message=new MimeMessage(session); //设置邮件主题 message.setSubject("这是主题"); //是一个容器它转载多个 BodyPart 对象 (正文、 附件或内嵌资源) , 它是一个抽象类,MimeMultipart 为实现类 Multipart multipart=new MimeMultipart(); //BodyPart 也是封装邮件消息的 ,但它是包含在 Multipart 中的 BodyPart messagePart=new MimeBodyPart(); //封装需要发送电子邮件的正文信息 messagePart.setText("这是正文"); //把正文添加到 multipart multipart.addBodyPart(messagePart); //设置上传附件路径 String fileName="E:/a.txt"; //重新实例化 BodyPart(一个对象放正文、一个对象放附件) messagePart=new MimeBodyPart(); //封装附件 DataSource source=new FileDataSource(fileName);Copyright ©2017 宅客学院|中软国际教育集团9session=Session.getInstance(props,newPasswordAuthentication消息载体封装了邮件的所有

立工匠精神 铸软件人才 messagePart.setDataHandler(new DataHandler(source)); messagePart.setFileName(fileName); //把附件放入到 multipart multipart.addBodyPart(messagePart); //multipart 放入到 Message 中 message.setContent(multipart); //设置发件人地址 message.setFrom(new InternetAddress("78162328@qq.com")); //此类的功能是发送邮件 又会话获得实例 Transport transport=session.getTransport(); //开启连接 transport.connect(); //设置收件人地址邮件信息 transport.sendMessage(message, new Address[]{new InternetAddress("78162328@qq.com")}); //邮件发送后关闭信息 transport.close(); } }2、接收邮件Copyright ©2017 宅客学院|中软国际教育集团10

立工匠精神 铸软件人才四、HTML 格式电子邮件发送 1、代码: package com.chinasofti.example; /** *

* Title: SendEmail *

*

* Description:JavaMail API 与 QQ 邮箱服务器发送邮件 *

*

* Copyright: Copyright (c) 2016 *

*

* Company: ChinaSoft International Ltd.Copyright ©2017 宅客学院|中软国际教育集团11

立工匠精神 铸软件人才 *

* * @author etc * @version 1.0 */ import java.security.GeneralSecurityException; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; import javax.mail.Address; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.PasswordAuthentication; 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 com.sun.mail.util.MailSSLSocketFactory; public class SendEmail {public static void main(String[] args) throws GeneralSecurityException, MessagingException { // TODO Auto-generated method stub //用于读取配置文件 Properties props=new Properties();Copyright ©2017 宅客学院|中软国际教育集团12

立工匠精神 铸软件人才 //开启 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");//开启 ssl 加密(并不是所有的邮箱服务器都需要,但是 qq 邮箱 服务器是必须的) MailSSLSocketFactory msf= new MailSSLSocketFactory(); msf.setTrustAllHosts(true); props.put("mail.smtp.ssl.enable", "true"); props.put("mail.smtp.ssl.socketFactory",msf);//获取 Session 会话实例(javamail Session 与 HttpSession 的区别 是 Javamail 的 Session 只是配置信息的集合) Session javax.mail.Authenticator(){ protected getPasswordAuthentication(){ //用户名密码验证(取得的授权吗) return new PasswordAuthentication("78162328@qq.com","vdqnguiiafwhbiai"); } }); //抽象类 MimeMessage 为实现类 消息 Message message=new MimeMessage(session);Copyright ©2017 宅客学院|中软国际教育集团13session=Session.getInstance(props,newPasswordAuthentication消息载体封装了邮件的所有

立工匠精神 铸软件人才 //设置邮件主题 message.setSubject("这是主题"); //设置 HTML 格式电子邮件正文 message.setContent("

this is a HTML

","text/html");//设置发件人地址 message.setFrom(new InternetAddress("78162328@qq.com")); //此类的功能是发送邮件 又会话获得实例 Transport transport=session.getTransport(); //开启连接 transport.connect(); //设置收件人地址邮件信息 transport.sendMessage(message, new Address[]{new InternetAddress("78162328@qq.com")}); //邮件发送后关闭信息 transport.close(); }} 2、接收邮件:Copyright ©2017 宅客学院|中软国际教育集团14

立工匠精神 铸软件人才五、嵌入图片的 HTML 格式电子邮件发送(与发送带附件电子邮件类似) 1、代码: package com.chinasofti.example; /** *

* Title: SendEmail *

*

* Description:JavaMail API 与 QQ 邮箱服务器发送邮件 *

*

* Copyright: Copyright (c) 2016 *

*

* Company: ChinaSoft International Ltd. *

* * @author etcCopyright ©2017 宅客学院|中软国际教育集团15

立工匠精神 铸软件人才 * @version 1.0 */ import java.security.GeneralSecurityException; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; import javax.mail.Address; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.PasswordAuthentication; 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 com.sun.mail.util.MailSSLSocketFactory; public class SendEmail { public static void main(String[] args) throws GeneralSecurityException, MessagingException { // TODO Auto-generated method stub //用于读取配置文件 Properties props=new Properties(); //开启 Debug 调试 props.setProperty("mail.debug", "true"); //发送服务器需要身份验证 props.setProperty("mail.smtp.auth", "true");Copyright ©2017 宅客学院|中软国际教育集团16

立工匠精神 铸软件人才 //发送邮件服务器的主机名 props.setProperty("mail.host", "smtp.qq.com"); //发送邮件协议 props.setProperty("mail.transport.protocol", "smtp");//开启 ssl 加密(并不是所有的邮箱服务器都需要,但是 qq 邮箱服务器是必须的) MailSSLSocketFactory msf= new MailSSLSocketFactory(); msf.setTrustAllHosts(true); props.put("mail.smtp.ssl.enable", "true"); props.put("mail.smtp.ssl.socketFactory",msf);//获取 Session 会话实例(javamail Session 与 HttpSession 的 区别是 Javamail 的 Session 只是配置信息的集合) Session session=Session.getInstance(props,new javax.mail.Authenticator(){ protected getPasswordAuthentication(){ //用户名密码验证(取得的授权吗) return PasswordAuthentication("78162328@qq.com","vdqnguiiafwhbiai"); } }); //抽象类 MimeMessage 为实现类 有消息 Message message=new MimeMessage(session); //设置邮件主题 message.setSubject("这是主题"); 消息载体封装了邮件的所 new PasswordAuthenticationCopyright ©2017 宅客学院|中软国际教育集团17

立工匠精神 铸软件人才 /*-----嵌入图片的 HTML 格式电子邮件发送 begin----*/ Multipart multipart=new MimeMultipart(); BodyPart messagePart=new MimeBodyPart(); messagePart.setContent("

this is a HTML

","text/html"); multipart.addBodyPart(messagePart); String fileName="E:/workspace1/MAIL/a.jpg"; messagePart=new MimeBodyPart(); DataSource source=new FileDataSource(fileName); messagePart.setDataHandler(new DataHandler(source)); messagePart.setHeader("Content-ID", ""); multipart.addBodyPart(messagePart); message.setContent(multipart); /*-----嵌入图片的 HTML 格式电子邮件发送 end----*///设置发件人地址 message.setFrom(new InternetAddress("78162328@qq.com")); //此类的功能是发送邮件 又会话获得实例 Transport transport=session.getTransport(); //开启连接 transport.connect(); //设置收件人地址邮件信息 transport.sendMessage(message, new Address[]{new InternetAddress("78162328@qq.com")}); //邮件发送后关闭信息 transport.close(); }}Copyright ©2017 宅客学院|中软国际教育集团18

立工匠精神 铸软件人才 2、接收邮件以上就是使用 JavaMail API 与 QQ 邮箱服务器发送邮件的步骤, 希望此文档 对大家能够有所帮助。

Copyright ©2017 宅客学院|中软国际教育集团19

 
 

微信扫一扫 关注一点知道
微信提问题 答案马上自动回复