JavaMail使用qq邮箱发送邮件步骤 | 您所在的位置:网站首页 › wps怎么用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电子邮件点击设置 ![]() 2、 进入邮件设置界面后点击账户 ![]() 3、 找到帐户安全项,开启IMAP/SMTP服务 ![]() 注意:在启用QQ邮箱的14天之后才能开启此服务 4、 发起短信验证,发送短信后点击我已发送 ![]() 注意:在这之前qq邮箱需要捆绑一个有效的手机号码 5、 得到授权码,点击确定 ![]() 注意:此授权码要记住或者保存到文本文件当中发送邮件的时候需要作为验证密码使用 二、 发送简单的电子邮件 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; 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的区别是Javamail的Session只是配置信息的集合) Session session=Session.getInstance(props,new javax.mail.Authenticator(){ protected PasswordAuthentication getPasswordAuthentication(){ //用户名密码验证(取得的授权吗) Return new PasswordAuthentication ("[email protected]","vdqnguiiafwhbiai"); } }); //抽象类MimeMessage为实现类 消息载体封装了邮件的所有消息 Message message=new MimeMessage(session); //设置邮件主题 message.setSubject("这是主题"); //封装需要发送电子邮件的信息 message.setText("这是一封简单的电子邮件"); //设置发件人地址 message.setFrom(new InternetAddress("[email protected]")); //此类的功能是发送邮件 又会话获得实例 Transport transport=session.getTransport(); //开启连接 transport.connect(); //设置收件人地址邮件信息 transport.sendMessage(message, new Address[]{new InternetAddress("[email protected]")}); //邮件发送后关闭信息 transport.close(); } } 2、 收到邮件 ![]() 三、 带附件电子邮件 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; 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的区别是Javamail的Session只是配置信息的集合) Session session=Session.getInstance(props,new javax.mail.Authenticator(){ protected PasswordAuthentication getPasswordAuthentication(){ //用户名密码验证(取得的授权吗) return new PasswordAuthentication("[email protected]","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); messagePart.setDataHandler(new DataHandler(source)); messagePart.setFileName(fileName); //把附件放入到multipart multipart.addBodyPart(messagePart); //multipart放入到Message中 message.setContent(multipart); //设置发件人地址 message.setFrom(new InternetAddress("[email protected]")); //此类的功能是发送邮件 又会话获得实例 Transport transport=session.getTransport(); //开启连接 transport.connect(); //设置收件人地址邮件信息 transport.sendMessage(message, new Address[]{new InternetAddress("[email protected]")}); //邮件发送后关闭信息 transport.close(); } } 2、 接收邮件 ![]() 四、 HTML格式电子邮件发送 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; 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的区别是Javamail的Session只是配置信息的集合) Session session=Session.getInstance(props,new javax.mail.Authenticator(){ protected PasswordAuthentication getPasswordAuthentication(){ //用户名密码验证(取得的授权吗) return new PasswordAuthentication("[email protected]","vdqnguiiafwhbiai"); } }); //抽象类MimeMessage为实现类 消息载体封装了邮件的所有消息 Message message=new MimeMessage(session); //设置邮件主题 message.setSubject("这是主题"); //设置HTML格式电子邮件正文 message.setContent("this is a HTML","text/html"); //设置发件人地址 message.setFrom(new InternetAddress("[email protected]")); //此类的功能是发送邮件 又会话获得实例 Transport transport=session.getTransport(); //开启连接 transport.connect(); //设置收件人地址邮件信息 transport.sendMessage(message, new Address[]{new InternetAddress("[email protected]")}); //邮件发送后关闭信息 transport.close(); } } 2、 接收邮件: ![]() 五、 嵌入图片的HTML格式电子邮件发送(与发送带附件电子邮件类似) 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; 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的区别是Javamail的Session只是配置信息的集合) Session session=Session.getInstance(props,new javax.mail.Authenticator(){ protected PasswordAuthentication getPasswordAuthentication(){ //用户名密码验证(取得的授权吗) return new PasswordAuthentication("[email protected]","vdqnguiiafwhbiai"); } }); //抽象类MimeMessage为实现类 消息载体封装了邮件的所有消息 Message message=new MimeMessage(session); //设置邮件主题 message.setSubject("这是主题"); /*-----嵌入图片的HTML格式电子邮件发送 begin----*/ Multipart multipart=new MimeMultipart(); BodyPart messagePart=new MimeBodyPart(); messagePart.setContent("this is a 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("[email protected]")); //此类的功能是发送邮件 又会话获得实例 Transport transport=session.getTransport(); //开启连接 transport.connect(); //设置收件人地址邮件信息 transport.sendMessage(message, new Address[]{new InternetAddress("[email protected]")}); //邮件发送后关闭信息 transport.close(); } } 2、 接收邮件 ![]() 以上就是使用JavaMail API与QQ邮箱服务器发送邮件的步骤,希望此文档对大家能够有所帮助。 小伙伴儿们,你get√到了吗? |
CopyRight 2018-2019 实验室设备网 版权所有 |