package sendEmail;

import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.Message;
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; public class AttchImgMail {
// JavaMail须要Properties来创建一个session对象。它将寻找字符串"mail.smtp.host",属性值就是发送邮件的主机.
public static void main(String[] args) throws Exception {
Properties properties = new Properties();
// properties.put("mail.smtp.host", "mailcas.chinapnr.com");// 设置smtp主机
properties.put("mail.smtp.host", "smtp.163.com");// 设置smtp主机
properties.put("mail.smtp.auth", "true");// 使用smtp身份验证
/*
* 在 JavaMail 中,能够通过 extends Authenticator 抽象类,在子类中覆盖父类中的
* getPasswordAuthentication() 方法。就能够实现以不同的方式来进行登录邮箱时的用户身份认证。JavaMail
* 中的这样的设计是使用了策略模式(Strategy
*/
MimeMessage message = new MimeMessage(Session.getInstance(properties,
new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(//设置发送帐号password
"帐号", "password");
}
}));
// 设置邮件的属性
// 设置邮件的发件人
message.setFrom(new InternetAddress("发件人"));
// 设置邮件的收件人 cc表示抄送 bcc 表示暗送
message.setRecipient(Message.RecipientType.TO, new InternetAddress(
"收件人"));
// 设置邮件的主题
message.setSubject("系统自己主动发送邮件");
// 创建邮件的正文
MimeBodyPart text = new MimeBodyPart();
// setContent(“邮件的正文内容”,”设置邮件内容的编码方式”)
text.setContent("此邮件为系统自己主动发送<img src='cid:a'><img src='cid:b'>",
"text/html;charset=gb2312"); // 点到点的发送
// 一对多发送仅仅要改一个地方例如以下: // // 构建一个群发地址数组
// InternetAddress[] adr=new InternetAddress[toMore.length];
// for(int i=0;i<toMore.length;i++){ adr[i]=new
// InternetAddress(toMore[i]); }
// // Message的setRecipients方法支持群发。。注意:setRecipients方法是复数和点 到点不一样
// message.setRecipients(Message.RecipientType.TO,adr); // 创建图片
MimeBodyPart img = new MimeBodyPart();
/*
* JavaMail API不限制信息仅仅为文本,不论什么形式的信息都可能作茧自缚MimeMessage的一部分.
* 除了文本信息,作为文件附件包括在电子邮件信息的一部分是非常普遍的. JavaMail
* API通过使用DataHandler对象,提供一个同意我们包括非文本BodyPart对象的简便方法.
*/
DataHandler dh = new DataHandler(new FileDataSource("src//a.jpg"));//图片路径
img.setDataHandler(dh);
// 创建图片的一个表示用于显示在邮件中显示
img.setContentID("a"); MimeBodyPart img2 = new MimeBodyPart();
DataHandler dh2 = new DataHandler(new FileDataSource("src//b.jpg"));//第二张图片路径
img2.setDataHandler(dh2);
img2.setContentID("b");
// 创建附件
// MimeBodyPart attch = new MimeBodyPart();
// DataHandler dh1 = new DataHandler(new FileDataSource("src//b.jpg"));
// attch.setDataHandler(dh1);
// String filename1 = dh1.getName();
// MimeUtility 是一个工具类,encodeText()用于处理附件字,防止中文乱码问题
// attch.setFileName(MimeUtility.encodeText(filename1));
// 关系 正文和图片的
MimeMultipart mm = new MimeMultipart();
mm.addBodyPart(text);
mm.addBodyPart(img);
mm.setSubType("related");// 设置正文与图片之间的关系
// 图班与正文的 body
MimeBodyPart all = new MimeBodyPart();
all.setContent(mm);
// 附件与正文(text 和 img)的关系
MimeMultipart mm2 = new MimeMultipart();
mm2.addBodyPart(all);
mm2.addBodyPart(img2);
mm2.setSubType("mixed");// 设置正文与附件之间的关系 message.setContent(mm2);
message.saveChanges(); // 保存改动 Transport.send(message);// 发送邮件
System.out.println("邮件发送成功"); }
}

Java发送带图片的邮件,代码为发生2张图片的邮件关联方式,凝视中有发送带附件、带多人发送解析的代码。能够自行调整

java带图片的邮件发送方法实现的更多相关文章

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

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

  2. 使用Spring的JAVA Mail支持简化邮件发送(转)

    闲来无事,翻看<Spring in Action>,发现Spring集成了对JAVA Mail的支持,有点小激动的看了一遍,嗯,话说真的简单了很多. Spring的邮件发送的核心是Mail ...

  3. Java 基于javaMail的邮件发送(支持附件)

    基于JavaMail的Java邮件发送Author xiuhong.chen@hand-china.com Desc 简单邮件发送 Date 2017/12/8 项目中需要根据物料资质的状况实时给用户 ...

  4. java中javamail收发邮件实现方法

    概述 1.邮件相关的标准 厂商所提供的 JavaMail 服务程序可以有选择地实现某些邮件协议,常见的邮件协议包括: SMTP(Simple Mail Transfer Protocol) :即简单邮 ...

  5. JAVA实用案例之邮件发送

    最近有朋友问邮件怎么发送,就简单写了个demo,因为懒得找jar包,所以项目是创建的maven工程,具体的maven引用的jar如下: <dependency> <groupId&g ...

  6. CI(CodeIgniter)框架下使用非自带类库实现邮件发送

    在项目开发过程中,需要到了邮件提醒功能.首先想到的是CI自身带不带邮件发送类,查看帖子,发现CI本身自带,然后试着利用CI自身带的类库来实现,经过搜搜很多帖子,不少开发者反馈CI自身的Email类有问 ...

  7. Java 基于JavaMail的邮件发送

    http://blog.csdn.net/xietansheng/article/details/51673073 http://blog.csdn.net/xietansheng/article/d ...

  8. 一个发送邮件的java类,包含多种发送方法

    import java.util.Calendar;import java.util.Date; import java.util.Properties; import javax.mail.Addr ...

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

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

随机推荐

  1. POJ 3592 Instantaneous Transference(强联通分量 Tarjan)

    http://poj.org/problem?id=3592 题意 :给你一个n*m的矩阵,每个位置上都有一个字符,如果是数字代表这个地方有该数量的金矿,如果是*代表这个地方有传送带并且没有金矿,可以 ...

  2. php or die用法

    当前面的函数运行出错时,终止并输入提示.常见的用法如:mysql_connect('locahost','root','') or die('数据库连接失败');

  3. iOS开发UI篇—UITabBarController生命周期(使用storyoard搭建)

    iOS开发UI篇—UITabBarController生命周期(使用storyoard搭建)   一.UITabBarController在storyoard中得搭建 1.新建一个项目,把storyb ...

  4. 第六章Audio设备

    6.1 Audio设备介绍 USB协议制定时,为了方便不同设备的开发商基于USB进行设计,定义了不同的设备类来支持不同类型的设备.虽然在USB标准中定义了USB_DEVICE_CLASS_AUDIO- ...

  5. WCF - WAS Hosting

    WCF - WAS Hosting To understand the concept of WAS hosting, we need to comprehend how a system is co ...

  6. UltraEdit (Ctrl + F) 查找、(Ctrl + R)替换功能失效

    环境: Windows 7 Service Pack 1 X64 工具: UltraEdit Version 21 症状: UltraEdit (Ctrl + F) 查找.(Ctrl + R)替换功能 ...

  7. Android开发之注解式框架ButterKnife在ADT中的设置

    使用注解式框架ButterKnife的时候,导入到ADT中,结果项目中注解的view无效,如点击button等无任何的反应. 然后在ButterKnife的官网查看到解决办法:http://jakew ...

  8. Hadoop2.2编程:新旧API的区别

    Hadoop最新版本的MapReduce Release 0.20.0的API包括了一个全新的Mapreduce JAVA API,有时候也称为上下文对象. 新的API类型上不兼容以前的API,所以, ...

  9. bzoj1823

    第一道2sat, 其实2sat问题不难,只要记住一个:通过“推导出”连边 什么意思呢?就是一般题目中的变量都有两个状态,只能取一个,我们定义为true和false 对于每一个变量i,我们都拆成两个点, ...

  10. SVN使用教程之——分支、合并

    首先说下为什么我们需要用到分支-合并.比如项目demo下有两个小组,svn下有一个trunk版.由于客户需求突然变化,导致项目需要做较大改动,此时项目组决定由小组1继续完成原来正进行到一半的工作[某个 ...