本案例演示发送 html 格式,可带附件的邮件发送。发送纯文本邮件的例子可参照上一篇博文JavaMail 简单案例

EmailHelper, Email 的帮助类,向帮助类提供 SMTP 服务器域名、用户名、密码、发送人邮箱、收件人邮箱、邮件主题、html 格式的内容(可选)、附件(可选),便可发送一份邮件。

SendEmailDemo, 演示发送邮件。

  1. import java.util.Properties;
  2. import javax.activation.DataHandler;
  3. import javax.activation.DataSource;
  4. import javax.activation.FileDataSource;
  5. import javax.mail.BodyPart;
  6. import javax.mail.Message;
  7. import javax.mail.MessagingException;
  8. import javax.mail.Multipart;
  9. import javax.mail.PasswordAuthentication;
  10. import javax.mail.Session;
  11. import javax.mail.Transport;
  12. import javax.mail.internet.AddressException;
  13. import javax.mail.internet.InternetAddress;
  14. import javax.mail.internet.MimeBodyPart;
  15. import javax.mail.internet.MimeMessage;
  16. import javax.mail.internet.MimeMultipart;
  17.  
  18. public class EmailHelper {
  19.  
  20. private String host;
  21. private String username;
  22. private String password;
  23. private String from;
  24.  
  25. private String to;
  26. private String subject;
  27. private String htmlContent;
  28. private String attachedFileName;
  29.  
  30. public EmailHelper(String host, String username, String password, String from) throws AddressException, MessagingException{
  31. this.host = host;
  32. this.username = username;
  33. this.password = password;
  34. this.from = from;
  35. }
  36.  
  37. public void send() throws Exception{
  38.  
  39. Properties props = new Properties();
  40. props.put("mail.smtp.auth", "true");
  41. props.put("mail.smtp.host", host);
  42.  
  43. final String username1 = username;
  44. final String password1 = password;
  45.  
  46. Session session = Session.getInstance(props,
  47. new javax.mail.Authenticator(){
  48. protected PasswordAuthentication getPasswordAuthentication() {
  49. return new PasswordAuthentication(username1, password1);
  50. }
  51. });
  52.  
  53. Message message = new MimeMessage(session);
  54.  
  55. message.setFrom(new InternetAddress(from));
  56.  
  57. message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
  58.  
  59. message.setSubject(subject);
  60.  
  61. Multipart multipart = new MimeMultipart();
  62.  
  63. if (htmlContent != null){
  64. System.out.println(" has html ");
  65.  
  66. BodyPart htmlPart = new MimeBodyPart();
  67. htmlPart.setContent(htmlContent, "text/html");
  68. multipart.addBodyPart(htmlPart);
  69. }
  70.  
  71. if (attachedFileName != null){
  72. System.out.println(" has attached file ");
  73.  
  74. BodyPart attchmentPart = new MimeBodyPart();
  75. DataSource source = new FileDataSource(attachedFileName);
  76. attchmentPart.setDataHandler(new DataHandler(source));
  77. attchmentPart.setFileName(attachedFileName);
  78. multipart.addBodyPart(attchmentPart);
  79. }
  80.  
  81. message.setContent(multipart);
  82. Transport.send(message);
  83.  
  84. System.out.println(" Sent ");
  85. }
  86.  
  87. public void setTo(String to) {
  88. this.to = to;
  89. }
  90.  
  91. public void setSubject(String subject) {
  92. this.subject = subject;
  93. }
  94.  
  95. public void setHtmlContent(String htmlContent) {
  96. this.htmlContent = htmlContent;
  97. }
  98.  
  99. public void setAttachedFileName(String attachedFileName) {
  100. this.attachedFileName = attachedFileName;
  101. }
  102. }

演示代码,

  1. public class SendEmailDemo {
  2.  
  3. public static void main(){
  4.  
  5. String host = "smtp.163.com";        // use your smtp server host
  6.  
  7. final String username = "sender@163.com"; // use your username
  8. final String password = "password";   // use your password
  9.  
  10. String from = "sender@163.com";     // use your sender email address
  11.  
  12. String to = "reciever@foxmail.com";  // use your reciever email address
  13. try {
  14. EmailHelper emailHelper = new EmailHelper(host, username, password, from);
  15. emailHelper.setTo(to);
  16. emailHelper.setSubject("subject ttt test");
  17. emailHelper.setHtmlContent("<h1> This is html </h1>");
  18. emailHelper.setAttachedFileName("/Users/grs/Documents/Java/mavenEmail/test/src/main/resource/attachment3.txt");
  19.  
  20. emailHelper.send();
  21.  
  22. } catch (Exception e) {
  23. e.printStackTrace();
  24. }
  25. }
  26. }

需要读取邮箱邮件,可参考另一篇博文 JavaMail 查询邮件

参考资料

Java - Sending Email

[Java] JavaMail 发送 html 格式、带附件的邮件的更多相关文章

  1. python+selenium实现发送一封带附件的邮件

    163邮件登录首页 登录成功断言是否有退出按钮 点击退出退出登录 from selenium import webdriver import unittest import time class Vi ...

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

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

  3. 使用JavaMail发送带附件的邮件

    所需jar包 链接:http://pan.baidu.com/s/1dFo4cDz 密码:akap 工具类: package com.javamail.utils; import java.util. ...

  4. java发送带附件的邮件

    /** * java发送带附件的邮件 * 周枫 * 2013.8.10 */ package com.dsideal.Util; import javax.mail.*; import javax.m ...

  5. [SpringBoot] - 发送带附件的邮件

    <!--发送email依赖--> <dependency> <groupId>org.springframework.boot</groupId> &l ...

  6. 利用Python+163邮箱授权码发送带附件的邮件

    背景 前段时间写了个自动爬虫的脚本,定时在阿里云服务器上执行,会从某个网站上爬取链接保存到txt文本中,但是脚本不够完善,我需要爬虫完毕之后通过邮件把附件给我发送过来,之前写过一个<利用Pyth ...

  7. EBS中使用JAVA方式发送HTML格式邮件

    转自huan.gu专栏:http://blog.csdn.net/gh320/article/details/17174769 EBS中使用JAVA方式发送HTML格式邮件 一.开发工具:JDevel ...

  8. C#发送带附件的邮件的代码

    如下的代码是关于C#发送带附件的邮件的代码. MailMessage m = new MailMessage();m.Subject = "File attachment!";m. ...

  9. [Xcode 实际操作]八、网络与多线程-(7)使用MessageUI框架,创建并发送一封带有附件的邮件

    目录:[Swift]Xcode实际操作 本文将演示如何使用MessageUI框架,创建并发送一封带有附件的邮件. 使用邮件编辑视图控制器(MFMailComposeViewController)实现邮 ...

随机推荐

  1. C# 里窗体里(windows form)怎么播放音乐

    在.NET的winform里面,没有托管的音乐播放器,API只能播放WAV格式,对于MP3等形式的音频文件,就要依赖于 MediaPlayer里,嘿嘿 使用的方法: 在toolbox上点右键,选择“选 ...

  2. Android App优化建议(转载)

    假如要Google Play上做一个最失败的案例,那最好的秘诀就是界面奇慢无比.耗电.耗内存.接下来就会得到用户的消极评论,最后名声也就臭了.即使你的应用设计精良.创意无限也没用. 耗电或者内存占用等 ...

  3. angularjs ngTable -Custom filter template-calendar

    jsp页面: <script type="text/ng-template" id="path/to/your/filters/top-Date-One.html& ...

  4. 函数对象的prototype总结

    通过看 http://www.cnblogs.com/mindsbook/archive/2009/09/19/javascriptYouMustKnowPrototype.html 该文章和对代码的 ...

  5. 让ie6/7/8兼容css3的圆角阴影等特殊效果的方法 PIE1.0.0及placeholder在这些IE下生效的方法

    PIE地址:http://css3pie.com/ 使用方法1: #login,#AnnouncementBox {  border:3px solid #fff;  -webkit-border-r ...

  6. ng-view和ng-include之间的区别

    ng-view通过使用路由控制,可以方便的实现页面组合,但一个html文件中,只能有一个ng-view,他是可以被ctl控制的.ng-include就是将多个页面的公共页面提取出来,如header.h ...

  7. 平衡搜索树(一) AVL树

    AVL树 AVL树又称为高度平衡的二叉搜索树,是1962年有俄罗斯的数学家G.M.Adel'son-Vel'skii和E.M.Landis提出来的.它能保持二叉树的高度 平衡,尽量降低二叉树的高度,减 ...

  8. WHU 1568 Product (DP、逆元)

    题意: 定义f(x) 为数x的所有数字的乘积. 求满足f(k)=f(x)的不同的不含数字1的k的个数. x的长度小于50. 不超过1000组数据. Solution: 由于函数是乘积的形式,可以由质因 ...

  9. visual studio中验证控件的使用

    1.RequiredFieldValidator:验证一个必填字段,如果这个字段没填,那么,将不能提交信息. RequiredFieldValidator控件中,主要设置三个属性: (1)ErrorM ...

  10. 一个基于nodejs,支持http/https的中间人(MITM)代理,便于渗透测试和开发调试。

    源码地址:https://github.com/wuchangming/node-mitmproxy node-mitmproxy node-mitmproxy是一个基于nodejs,支持http/h ...