版权声明:本文为博主原创文章,未经博主同意不得转载。

--caicongyang https://blog.csdn.net/caicongyang/article/details/33731395

1.简单介绍:

JavaMail 是由Sun定义的一套收发电子邮件的API。不同的厂商能够提供自己的实现类。

但它并没有包括在JDK中,须要自己单独导入。

2.jar

mail.jar:此JAR文件包括JavaMail API和Sun提供的SMTP、IMAP和POP3服务提供程序。
activation.jar:此JAR文件包括JAF API和Sun的实现。

3.demo

MailSenderInfo.java

  1. package com.ccy.util.mail;
  2. import java.util.Properties;
  3. public class MailSenderInfo {
  4. // 发送邮件的server的IP和端口
  5. private String mailServerHost;
  6. private String mailServerPort = "25";
  7. // 邮件发送者的地址
  8. private String fromAddress;
  9. // 邮件接收者的地址
  10. private String toAddress;
  11. // 登陆邮件发送server的username与password
  12. private String userName;
  13. private String password;
  14. // 是否须要身份验证
  15. private boolean validate = false;
  16. // 邮件主题
  17. private String subject;
  18. // 邮件的文本内容
  19. private String content;
  20. // 邮件附件的文件名称
  21. private String[] attachFileNames;
  22. /** */
  23. /**
  24. * 获得邮件会话属性
  25. */
  26. public Properties getProperties() {
  27. Properties p = new Properties();
  28. p.put("mail.smtp.host", this.mailServerHost);
  29. p.put("mail.smtp.port", this.mailServerPort);
  30. p.put("mail.smtp.auth", validate ? "true" : "false");
  31. return p;
  32. }
  33. public String getMailServerHost() {
  34. return mailServerHost;
  35. }
  36. public void setMailServerHost(String mailServerHost) {
  37. this.mailServerHost = mailServerHost;
  38. }
  39. public String getMailServerPort() {
  40. return mailServerPort;
  41. }
  42. public void setMailServerPort(String mailServerPort) {
  43. this.mailServerPort = mailServerPort;
  44. }
  45. public boolean isValidate() {
  46. return validate;
  47. }
  48. public void setValidate(boolean validate) {
  49. this.validate = validate;
  50. }
  51. public String[] getAttachFileNames() {
  52. return attachFileNames;
  53. }
  54. public void setAttachFileNames(String[] fileNames) {
  55. this.attachFileNames = fileNames;
  56. }
  57. public String getFromAddress() {
  58. return fromAddress;
  59. }
  60. public void setFromAddress(String fromAddress) {
  61. this.fromAddress = fromAddress;
  62. }
  63. public String getPassword() {
  64. return password;
  65. }
  66. public void setPassword(String password) {
  67. this.password = password;
  68. }
  69. public String getToAddress() {
  70. return toAddress;
  71. }
  72. public void setToAddress(String toAddress) {
  73. this.toAddress = toAddress;
  74. }
  75. public String getUserName() {
  76. return userName;
  77. }
  78. public void setUserName(String userName) {
  79. this.userName = userName;
  80. }
  81. public String getSubject() {
  82. return subject;
  83. }
  84. public void setSubject(String subject) {
  85. this.subject = subject;
  86. }
  87. public String getContent() {
  88. return content;
  89. }
  90. public void setContent(String textContent) {
  91. this.content = textContent;
  92. }
  93. }

MyAuthenticator.java

  1. package com.ccy.util.mail;
  2. import javax.mail.Authenticator;
  3. import javax.mail.PasswordAuthentication;
  4. public class MyAuthenticator extends Authenticator {
  5. String userName = null;
  6. String password = null;
  7. public MyAuthenticator() {
  8. }
  9. public MyAuthenticator(String username, String password) {
  10. this.userName = username;
  11. this.password = password;
  12. }
  13. protected PasswordAuthentication getPasswordAuthentication() {
  14. return new PasswordAuthentication(userName, password);
  15. }
  16. }

SimpleMailSender.java

  1. package com.ccy.util.mail;
  2. import java.util.Date;
  3. import java.util.Properties;
  4. import javax.mail.Address;
  5. import javax.mail.BodyPart;
  6. import javax.mail.Message;
  7. import javax.mail.MessagingException;
  8. import javax.mail.Multipart;
  9. import javax.mail.Session;
  10. import javax.mail.Transport;
  11. import javax.mail.internet.InternetAddress;
  12. import javax.mail.internet.MimeBodyPart;
  13. import javax.mail.internet.MimeMessage;
  14. import javax.mail.internet.MimeMultipart;
  15. public class SimpleMailSender {
  16. /**
  17. * 以文本格式发送邮件
  18. *
  19. * @param mailInfo
  20. * 待发送的邮件的信息
  21. */
  22. public boolean sendTextMail(MailSenderInfo mailInfo) {
  23. // 推断是否须要身份认证
  24. MyAuthenticator authenticator = null;
  25. Properties pro = mailInfo.getProperties();
  26. if (mailInfo.isValidate()) {
  27. // 假设须要身份认证,则创建一个密码验证器
  28. authenticator = new MyAuthenticator(mailInfo.getUserName(),
  29. mailInfo.getPassword());
  30. }
  31. // 依据邮件会话属性和密码验证器构造一个发送邮件的session
  32. Session sendMailSession = Session
  33. .getDefaultInstance(pro, authenticator);
  34. try {
  35. // 依据session创建一个邮件消息
  36. Message mailMessage = new MimeMessage(sendMailSession);
  37. // 创建邮件发送者地址
  38. Address from = new InternetAddress(mailInfo.getFromAddress());
  39. // 设置邮件消息的发送者
  40. mailMessage.setFrom(from);
  41. // 创建邮件的接收者地址,并设置到邮件消息中
  42. Address to = new InternetAddress(mailInfo.getToAddress());
  43. mailMessage.setRecipient(Message.RecipientType.TO, to);
  44. // 设置邮件消息的主题
  45. mailMessage.setSubject(mailInfo.getSubject());
  46. // 设置邮件消息发送的时间
  47. mailMessage.setSentDate(new Date());
  48. // 设置邮件消息的主要内容
  49. String mailContent = mailInfo.getContent();
  50. mailMessage.setText(mailContent);
  51. // 发送邮件
  52. Transport.send(mailMessage);
  53. return true;
  54. } catch (MessagingException ex) {
  55. ex.printStackTrace();
  56. }
  57. return false;
  58. }
  59. /** */
  60. /**
  61. * 以HTML格式发送邮件
  62. *
  63. * @param mailInfo
  64. * 待发送的邮件信息
  65. */
  66. public static boolean sendHtmlMail(MailSenderInfo mailInfo) {
  67. // 推断是否须要身份认证
  68. MyAuthenticator authenticator = null;
  69. Properties pro = mailInfo.getProperties();
  70. // 假设须要身份认证,则创建一个密码验证器
  71. if (mailInfo.isValidate()) {
  72. authenticator = new MyAuthenticator(mailInfo.getUserName(),
  73. mailInfo.getPassword());
  74. }
  75. // 依据邮件会话属性和密码验证器构造一个发送邮件的session
  76. Session sendMailSession = Session
  77. .getDefaultInstance(pro, authenticator);
  78. try {
  79. // 依据session创建一个邮件消息
  80. Message mailMessage = new MimeMessage(sendMailSession);
  81. // 创建邮件发送者地址
  82. Address from = new InternetAddress(mailInfo.getFromAddress());
  83. // 设置邮件消息的发送者
  84. mailMessage.setFrom(from);
  85. // 创建邮件的接收者地址,并设置到邮件消息中
  86. Address to = new InternetAddress(mailInfo.getToAddress());
  87. // Message.RecipientType.TO属性表示接收者的类型为TO
  88. mailMessage.setRecipient(Message.RecipientType.TO, to);
  89. // 设置邮件消息的主题
  90. mailMessage.setSubject(mailInfo.getSubject());
  91. // 设置邮件消息发送的时间
  92. mailMessage.setSentDate(new Date());
  93. // MiniMultipart类是一个容器类。包括MimeBodyPart类型的对象
  94. Multipart mainPart = new MimeMultipart();
  95. // 创建一个包括HTML内容的MimeBodyPart
  96. BodyPart html = new MimeBodyPart();
  97. // 设置HTML内容
  98. html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");
  99. mainPart.addBodyPart(html);
  100. // 将MiniMultipart对象设置为邮件内容
  101. mailMessage.setContent(mainPart);
  102. // 发送邮件
  103. Transport.send(mailMessage);
  104. return true;
  105. } catch (MessagingException ex) {
  106. ex.printStackTrace();
  107. }
  108. return false;
  109. }
  110. public void send() {
  111. // 这个类主要是设置邮件
  112. MailSenderInfo mailInfo = new MailSenderInfo();
  113. // mailInfo.setMailServerHost("smtp.163.com");
  114. // mailInfo.setMailServerHost("smtp.qq.com");
  115. mailInfo.setMailServerHost("smtp.139.com");
  116. mailInfo.setMailServerPort("25");
  117. mailInfo.setValidate(true);
  118. mailInfo.setUserName("user@139.com");
  119. mailInfo.setPassword("password");// 您的邮箱密码
  120. mailInfo.setFromAddress("user@139.com");
  121. mailInfo.setToAddress("To@qq.com");
  122. mailInfo.setSubject("主题");
  123. String body = "请Tom.Cai明天中午3点到总部开会!
  124. ";
  125. mailInfo.setContent(body);
  126. // 这个类主要来发送邮件
  127. SimpleMailSender sms = new SimpleMailSender();
  128. sms.sendTextMail(mailInfo);// 发送文体格式
  129. }
  130. }

欢迎大家一起讨论学习!

实用的自己收!

记录与分享,让你我共成长!欢迎查看我的其它博客。我的博客地址:http://blog.csdn.net/caicongyang

JavaMail简单应用的更多相关文章

  1. JavaMail简单版实验测试

    前言: 最近由于实现web商城的自动发送邮件功能的需求,故涉猎的邮箱协议的内部原理.现将简单版的Java Mail实例做个代码展示,并附上其中可能出现的bug贴出,方便感兴趣的读者进行测试! 1.载入 ...

  2. [Java] JavaMail 简单案例

    网易提供了免费的 SMTP / POP3服务,可用于编程测试,详情见 什么是POP3.SMTP和IMAP? 只需要拥有一个网易邮箱账号,并开启该账号的 SMTP / POP3 功能,便可以通过程序发送 ...

  3. JavaMail简单接收邮件

    一个简单的例子,收取所有邮件并在控制台输出. package cn.jmail.test; import java.io.*; import java.util.*; import javax.mai ...

  4. Javamail简单使用案例

    邮件开发环境搭建 邮件服务器 易邮邮件服务器 配置如下 邮件客户端 Foxmail 配置如下 使用Javamail发送邮件 下载 javamail-samples.zip javax.mail.jar ...

  5. [Java] JavaMail 发送带图片的 html 格式的邮件

    JavaMail 发送的邮件正文和附件是相互独立的,但是内置图片需要定位图片在正文中的位置,所以内置图片和邮件正文是互相依赖的. 发送带附件的邮件可参考JavaMail 发送 html 格式.带附件的 ...

  6. [Java] JavaMail 发送 html 格式、带附件的邮件

    本案例演示发送 html 格式,可带附件的邮件发送.发送纯文本邮件的例子可参照上一篇博文JavaMail 简单案例. EmailHelper, Email 的帮助类,向帮助类提供 SMTP 服务器域名 ...

  7. [Java] JavaMail 查询邮件

    上两篇提到如何发送邮件:JavaMail 发送 html 格式.带附件的邮件, JavaMail 简单案例.本文再演示下,如何读取邮箱上的邮件. 邮件内容的数据格式种类比较多,用户直接阅读邮件比较常见 ...

  8. javamail发送邮件的简单实例

    今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题.为了以后使用方便,自己写了段代码,打成jar包,以方便以后使用.呵呵 以下三段代码是我的全部代码,朋友们如果想用,直接 ...

  9. javamail发送邮件的简单实例(转)

    今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题.为了以后使用方便,自己写了段代码,打成jar包,以方便以后使用.呵呵 注意:要先导入javamail的mail.jar ...

随机推荐

  1. $bzoj1009-HNOI2008$ $GT$考试 字符串$dp$ 矩阵快速幂

    题面描述 阿申准备报名参加\(GT\)考试,准考证号为\(N\)位数\(x_1,x_2,...,x_n\ (0\leq x_i\leq 9)\),他不希望准考证号上出现不吉利的数字. 他的不吉利数字\ ...

  2. bind-named

    main-book: http://www.zytrax.com/books/dns resolv.conf: http://dns-learning.twnic.net.tw/bind/intro4 ...

  3. tgz 文件解压

    使用命令:tar zxvf ×××.tgz 即可进行解压 留作备忘

  4. (转)Centos7.2 给grub菜单做加密

    Centos7.2 给grub菜单做加密 原文:http://www.cnblogs.com/hanhy/articles/7274340.html#top 1.简述linux开机启动流程: 1) 启 ...

  5. 分享:JAVA和C# 3DES加密解密

    最近 一个项目.net 要调用JAVA的WEB SERVICE,数据采用3DES加密,涉及到两种语言3DES一致性的问题,下面分享一下,这里的KEY采用Base64编码,便用分发,因为Java的Byt ...

  6. Immutable-不变模式与不变类

    不变模式的定义 一个对象在创建之后就不再变化,就是所谓的不变模式(Immutable Pattern): 一般来讲,一个对象要么就是可变对象(Mutable Object),要么就是不变模式(Immu ...

  7. 使用jxl读取excel内容,并转换成Json,用于Datagrid

    一.上传excel文件,得到InputStream,由InputStream得到Jxl中的Workbook,取出内容,存到二维数组中. 1.使用 Jquery Uploadify 插件(http:// ...

  8. hdu 2845——Beans——————【dp】

    Beans Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  9. 【SoapUI】http接口测试

    一.接口介绍 API(Application Programming Interface,应用程序编程接口) 1.硬件接口 USB接口 硬盘接口 SD卡接口 LAN口和WAN口 CONSOLE口 .. ...

  10. 删除table表格行

    function getRowObj(obj) {   while(obj.tagName.toLowerCase()!="tr")    // toLowerCase转化小写 { ...