JavaMail发送邮件
2017-08-16 11:24
1491 查看
1. 邮件协议
发送邮件协议:SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。 默认端口:25
接收邮件协议:POP3协议,本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。默认端口:110
2. 邮件收发过程
abc@163.com账号和密码通过客户端软件连接到SMTP服务器,将邮件发送到126服务器的SMTP服务器,将邮件存到abc@126.com的邮件服务器空间,再由k客户端软件通过POP3服务器找到该邮件,返回给abc@126.com用户。
3. 使用JavaMail创建邮件和发送邮件
3.1、JavaMail API的简单介绍
3.2、创建邮件发送测试项目
3.3、发送简单邮件以及复杂邮件
发送邮件协议:SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。 默认端口:25
接收邮件协议:POP3协议,本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。默认端口:110
2. 邮件收发过程
abc@163.com账号和密码通过客户端软件连接到SMTP服务器,将邮件发送到126服务器的SMTP服务器,将邮件存到abc@126.com的邮件服务器空间,再由k客户端软件通过POP3服务器找到该邮件,返回给abc@126.com用户。
3. 使用JavaMail创建邮件和发送邮件
3.1、JavaMail API的简单介绍
3.2、创建邮件发送测试项目
3.3、发送简单邮件以及复杂邮件
package yf.main; import java.io.FileOutputStream; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; 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; /** * 发送邮件 * @author yf * */ public class SendMail { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { Properties prop = new Properties(); prop.setProperty("mail.host", "smtp.163.com"); prop.setProperty("mail.transport.protocol", "smtp"); prop.setProperty("mail.smtp.auth", "true"); //使用JavaMail发送邮件的5个步骤 //1、创建session Session session = Session.getInstance(prop); //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态 session.setDebug(true); //2、通过session得到transport对象 Transport ts = session.getTransport(); //3、使用邮箱的用户名和密码连上邮件服务器,发送邮件时,发件人需要提交邮箱的用户名和密码给smtp服务器,用户名和密码都通过验证之后才能够正常发送邮件给收件人。 ts.connect("smtp.163.com", "yjMonitor", "邮箱授权码"); //4、创建邮件 Message message = createSimpleMail(session); //5、发送邮件 ts.sendMessage(message, message.getAllRecipients()); ts.close(); } /** * 创建一个只包含文本邮件 * @param session * @return * @throws Exception */ public static MimeMessage createSimpleMail(Session session) throws Exception { //创建邮件对象 MimeMessage message = new MimeMessage(session); //指明邮件的发件人 message.setFrom(new InternetAddress("yjMonitor@163.com")); //指明邮件的收件人,现在发件人和收件人是一样的,那就是自己给自己发 message.setRecipient(Message.RecipientType.TO, new InternetAddress("yjMonitor@163.com")); //邮件的标题 message.setSubject("this is a email"); //邮件的文本内容 message.setContent("hello!", "text/html;charset=UTF-8"); //返回创建好的邮件对象 return message; } /** * 生成一封带邮件正文图片的邮件 * @param session * @return * @throws Exception */ public static MimeMessage createImageMail(Session session) throws Exception { //创建邮件 MimeMessage message = new MimeMessage(session); // 设置邮件的基本信息 //发件人 message.setFrom(new InternetAddress("yjMonitor@163.com")); //收件人 message.setRecipient(Message.RecipientType.TO, new InternetAddress("yjMonitor@163.com")); //邮件标题 message.setSubject("带图片的邮件"); // 准备邮件数据 // 准备邮件正文数据 MimeBodyPart text = new MimeBodyPart(); text.setContent("这是一封邮件正文带图片<img src='cid:xxx.png'>的邮件", "text/html;charset=UTF-8"); // 准备图片数据 MimeBodyPart image = new MimeBodyPart(); DataHandler dh = new DataHandler(new FileDataSource("src\\1.png")); image.setDataHandler(dh); image.setContentID("xxx.png"); // 描述数据关系 MimeMultipart mm = new MimeMultipart(); mm.addBodyPart(text); mm.addBodyPart(image); mm.setSubType("related"); message.setContent(mm); message.saveChanges(); //将创建好的邮件写入到E盘以文件的形式进行保存 message.writeTo(new FileOutputStream("E:\\ImageMail.eml")); //返回创建好的邮件 return message; } /** * 创建一封带附件的邮件 * @param session * @return * @throws Exception */ public static MimeMessage createAttachMail(Session ses c941 sion) throws Exception{ MimeMessage message = new MimeMessage(session); //设置邮件的基本信息 //发件人 message.setFrom(new InternetAddress("yjMonitor@163.com")); //收件人 message.setRecipient(Message.RecipientType.TO, new InternetAddress("yjMonitor@163.com")); //邮件标题 message.setSubject("JavaMail邮件发送测试"); //创建邮件正文,为了避免邮件正文中文乱码问题,需要使用charset=UTF-8指明字符编码 MimeBodyPart text = new MimeBodyPart(); text.setContent("使用JavaMail创建的带附件的邮件", "text/html;charset=UTF-8"); //创建邮件附件 MimeBodyPart attach = new MimeBodyPart(); DataHandler dh = new DataHandler(new FileDataSource("src\\2.png")); attach.setDataHandler(dh); attach.setFileName(dh.getName()); // //创建容器描述数据关系 MimeMultipart mp = new MimeMultipart(); mp.addBodyPart(text); mp.addBodyPart(attach); mp.setSubType("mixed"); message.setContent(mp); message.saveChanges(); //将创建的Email写入到E盘存储 message.writeTo(new FileOutputStream("E:\\attachMail.eml")); //返回生成的邮件 return message; } /** * 创建一封带附件和带图片的邮件 * @param session * @return * @throws Exception */ public static MimeMessage createMixedMail(Session session) throws Exception { //创建邮件 MimeMessage message = new MimeMessage(session); //设置邮件的基本信息 message.setFrom(new InternetAddress("yjMonitor@163.com")); message.setRecipient(Message.RecipientType.TO, new InternetAddress("yjMonitor@163.com")); message.setSubject("带附件和带图片的的邮件"); //正文 MimeBodyPart text = new MimeBodyPart(); text.setContent("xxx这是图片xxxx<br/><img src='cid:aaa.png'>","text/html;charset=UTF-8"); //图片 MimeBodyPart image = new MimeBodyPart(); image.setDataHandler(new DataHandler(new FileDataSource("src\\3.png"))); image.setContentID("aaa.png"); //附件1 MimeBodyPart attach = new MimeBodyPart(); DataHandler dh = new DataHandler(new FileDataSource("src\\4.zip")); attach.setDataHandler(dh); attach.setFileName(dh.getName()); //描述关系:正文和图片 MimeMultipart mp1 = new MimeMultipart(); mp1.addBodyPart(text); mp1.addBodyPart(image); mp1.setSubType("related"); //描述关系:正文和附件 MimeMultipart mp2 = new MimeMultipart(); mp2.addBodyPart(attach); //代表正文的bodypart MimeBodyPart content = new MimeBodyPart(); content.setContent(mp1); mp2.addBodyPart(content); mp2.setSubType("mixed"); message.setContent(mp2); message.saveChanges(); message.writeTo(new FileOutputStream("E:\\MixedMail.eml")); //返回创建好的的邮件 return message; } }
相关文章推荐
- javamail各种邮件的发送
- JavaMail邮件发送功能
- javamail 发送 带附件的 html邮件
- JavaMail的体系结构及发送复杂邮件
- 使用spring 3.1和javamail发送邮件
- android javamail发送邮件
- Java Mail(二):JavaMail介绍及发送一封简单邮件
- 基于JavaMail的Java邮件发送:复杂邮件发送
- 使用javaMail发送邮件
- JavaMail发送邮件功能
- JavaMail发送邮件
- javamail简单的发送邮件
- JavaWeb学习总结——使用JavaMail创建邮件和发送邮件
- java-基于JavaMail的Java邮件发送
- javaMail邮件发送
- 实现javaMail邮件发送和个人心得
- JavaMail发送邮件功能实现
- javaMail实现邮件的发送
- 深入分析JavaWeb 42 -- JavaMail创建邮件和发送邮件
- 【struts2+hibernate+spring项目实战】Spring计时器任务 Spring整合JavaMail(邮件发送)(ssh)