JavaMail 发送的邮件正文和附件是相互独立的,但是内置图片需要定位图片在正文中的位置,所以内置图片和邮件正文是互相依赖的。

发送带附件的邮件可参考JavaMail 发送 html 格式、带附件的邮件

发送纯文本的邮件可参照 JavaMail 简单案例

具体例子

EmailHelper, Email 的帮助类,向帮助类提供 SMTP 服务器域名、用户名、密码、发送人邮箱、收件人邮箱、邮件主题、html 格式的内容、图片的路径,便可发送一份内置图片的邮件。在创建 MimeMultipart 时, 需要传入参数 related,并在正文中声明图片的位置。

SendEmailDemo, 演示发送邮件。

EmailHelper.java

 package mail;

 import java.util.Properties;

 import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
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.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart; public class EmailHelper { private String host;
private String username;
private String password;
private String from; private String to;
private String subject;
private String htmlContent;
private String imagePath; public EmailHelper(String host, String username, String password, String from) throws AddressException, MessagingException{
this.host = host;
this.username = username;
this.password = password;
this.from = from;
} public void sendWithImage() throws Exception { Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.host", host); final String username1 = username;
final String password1 = password; Session session = Session.getInstance(props, new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username1, password1);
}
}); Message message = new MimeMessage(session); message.setFrom(new InternetAddress(from)); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); message.setSubject(subject); Multipart multipart = new MimeMultipart("related"); System.out.println(" html ");
BodyPart htmlPart = new MimeBodyPart();
htmlContent = "<img src=\"cid:image\">" + htmlContent;
htmlPart.setContent(htmlContent, "text/html");
multipart.addBodyPart(htmlPart); System.out.println(" image ");
System.out.println("image path : " + imagePath);
BodyPart imgPart = new MimeBodyPart();
DataSource fds = new FileDataSource(this.imagePath); imgPart.setDataHandler(new DataHandler(fds));
imgPart.setHeader("Content-ID", "<image>"); multipart.addBodyPart(imgPart);
message.setContent(multipart);
Transport.send(message); System.out.println(" Sent -| ");
} public void setTo(String to) {
this.to = to;
} public void setSubject(String subject) {
this.subject = subject;
} public void setHtmlContent(String htmlContent) {
this.htmlContent = htmlContent;
} public String getImagePath() {
return imagePath;
} public void setImagePath(String imagePath) {
this.imagePath = imagePath;
}
}

SendEmailDemo.java

 public class SendEmailDemo {

     public static void main(){

         String host = "smtp.163.com";        // use your smtp server host

         final String username = "sender@163.com"; // use your username
final String password = "password";   // use your password String from = "sender@163.com";     // use your sender email address String to = "reciever@foxmail.com";  // use your reciever email address
try {
EmailHelper emailHelper = new EmailHelper(host, username, password, from);
emailHelper.setTo(to);
emailHelper.setSubject("subject ttt test");
emailHelper.setHtmlContent("<h1> This is html </h1>");
emailHelper.setImagePath("/Users/grs/Documents/Java/mavenEmail/test/src/main/resource/promises.png"); emailHelper.send(); } catch (Exception e) {
e.printStackTrace();
}
}
}

参考资料

JavaMail API - Sending Email With Inline Imagess

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

  1. 接口测试基础——第3篇smtplib发送带图片的邮件

    smtplib发送邮件最后一篇,发送带图片的邮件: 大家可以去廖雪峰的网站看一下,下面的代码就是我跟着博客写的,哈哈,大家即使不明白为什么,也要多写两遍,记在心里,如果有不明白的地方可以留言,船长会第 ...

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

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

  3. 【Mail】JavaMail发送带附件的邮件(二)

    上一篇讲了使用JavaMail发送普通邮件([Mail]JavaMail介绍及发送邮件(一)),本例讲发送复杂的邮件(带有附件的邮件) 生成一封复杂的邮件 新建一个JavaWeb的Maven工程,引入 ...

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

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

  5. Django发送带图片和附件的邮件

    最近需要做集团的SRC系统.暂无安全研发,所以只能找我这个小菜兼职开发.系统使用Django框架,在整个过程中,有许多奇特的需求.在某项需求中,需要给厂商用户发送富文本邮件,漏洞详情,这个折腾了一下, ...

  6. java导出word(带图片)

    public class CreateWordDemo { public void createDocContext(String file) throws DocumentException,IOE ...

  7. 新浪微博客户端(40)-使用AFN发送带图片的微博

    DJComposeViewController.m /** 发微博 */ - (void)sendStatusRequest { AFHTTPSessionManager *RequestManage ...

  8. (转)用javamail发送带附件的邮件

    本文转载自:http://redleaf.iteye.com/blog/78217 mail.java 代码 package mail; import java.util.* ; import jav ...

  9. 【代码片段】Python发送带图片的邮件

    # coding=utf-8 import smtplib from email.mime.text import MIMEText from email.mime.multipart import ...

随机推荐

  1. Linq- ExcuteQuery用法

    DataContext.ExecuteQuery<TResult> 方法 (String, Object[]) 语法: public IEnumerable<TResult> ...

  2. max取得数组的最大值

    var arr = [1,2,3,4,5,2,2,4,52,5,6,5,4,4]; var maxNum = Math.max.apply(Math,arr); var maxIndex = arr. ...

  3. obj.onclick=fnClick与obj.onclick=fnClick()的区别

    先说结论:这段代码浏览器会报错,提示 aDiv[this.index] is undefined 所以正确的写法应该是去掉(),直接写为function fnClick.   不加括号的话,相当于指定 ...

  4. 学习protobuf

    一.认识Protobuf ref:http://blog.csdn.net/program_think/article/details/4229773摘要:1. protobuf是一个开源项目.2. ...

  5. 嵌入式web server——Goahead移植要点

    前言 在嵌入式设备中,在没有液晶显示的情况下,可以使用web来访问设备,查看设备的运行状态以及进行参数设置,类似于路由器设置.网上有很多关于各种web server的优劣的评论,在此不讨论,只是介绍其 ...

  6. BOM 之 screen history

    /*    avaiHeight // 屏幕的像素高度减去系统部件高度之后的值    var ah = screen.availHeight;     alert(ah); */    /* avai ...

  7. Struts2常规配置

    默认配置文件名:struts.xml   WEB-INF/classes下(放到src下) Struts2的有效常量可以查看    org\apache\struts2 下的    default.p ...

  8. javascript 自定义鼠标右键菜单

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  9. PHP表单常用正则表达式(URL、HTTP、手机、邮箱等)

    <?php /** * @description: 正则表达式匹配 */ class Regex { /** * @手机号 */ public static function Phone($su ...

  10. php中的NOTICE 的错误解决方法

    PHP新手NOTICE错误,特此写给那些遇到和我一样错误的朋友.   刚学习PHP,不久 最近在整留言板,刚才遇到个问题. 页面中,好多类似 Notice: in D:\wamp\www\study\ ...