java带图片的邮件发送方法实现

标签: java 图片 邮件 | 发表时间:2014-06-03 17:46 | 作者:mm7591383
出处:http://blog.csdn.net
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(//设置发送帐号密码
								"帐号", "密码");
					}
				}));
		// 设置邮件的属性
		// 设置邮件的发件人
		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张图片的邮件关联方式,注释中有发送带附件、带多人发生解析的代码,可以自行调整

作者:mm7591383 发表于2014-6-3 9:46:24 原文链接
阅读:78 评论:0 查看评论

相关 [java 图片 邮件] 推荐:

java带图片的邮件发送方法实现

- - CSDN博客编程语言推荐文章
// JavaMail需要Properties来创建一个session对象. 它将寻找字符串"mail.smtp.host",属性值就是发送邮件的主机. // properties.put("mail.smtp.host", "mailcas.chinapnr.com");// 设置smtp主机. properties.put("mail.smtp.host", "smtp.163.com");// 设置smtp主机.

Java图片加水印

- - CSDN博客推荐文章
pressText("真的好想你","3.jpg","宋体",Font.BOLD,0,20,200,200);. 作者:cjc211322 发表于2014-12-4 8:35:45 原文链接. 阅读:59 评论:0 查看评论.

java图片处理工具

- - CSDN博客推荐文章
作者:kuanghongjiang 发表于2015-2-1 15:45:51 原文链接. 阅读:0 评论:0 查看评论.

Java远程调用邮件服务器,实现邮件发送

- - CSDN博客推荐文章
写这篇文章的背景是公司Android客户端需要实现一个功能,实现类似于密码找回或者用户注册完发送一个邮件给用户的功能,当然这些逻辑客户端只负责请求自己的服务端,自己的服务端再去请求邮件服务器. 邮件服务器使用的Apache的James,Java写的开源的,而且方便调用. 远程调用使用的是Java Mail的API.

JAVA上传图片的缩放处理

- - CSDN博客推荐文章
  图片上传到服务器后,会根据情况将图片缩小成一个图标,我们可以利用java强大的图形处理功能,对上传的图片进行缩放处理.   下面的程序使用jdk1.4中最新的ImageIO对图片进行读写. 使用AffineTransform对图片进行缩放.   * @param fromdir 图片的原始目录.

Java中图片压缩处理

- - 编程语言 - ITeye博客
整理文档,搜刮出一个Java做图片压缩的代码,稍微整理精简一下做下分享. 首先,要压缩的图片格式不能说动态图片,你可以使用bmp、png、gif等,至于压缩质量,可以通过BufferedImage来指定. 在C盘的temp下放置一张图片pic123.jpg,尽量找一个像素高一点的图片,这里我找了一张5616*3744的.

java图片裁切工具类

- - CSDN博客编程语言推荐文章
* @param x1 选择区域左上角的x坐标. * @param y1 选择区域左上角的y坐标. * @param width 选择区域的宽度. * @param height 选择区域的高度. * @param sourcePath 源图片路径. * @param descpath 裁切后图片的保存路径.

Java的图片处理工具类

- - CSDN博客推荐文章
Java的图片处理工具类: 可实现以下常用功能:缩放图像、切割图像、图像类型转换、彩色转黑白、文字水印、图片水印等. public static String IMAGE_TYPE_GIF = "gif";// 图形交换格式. public static String IMAGE_TYPE_JPG = "jpg";// 联合照片专家组.

JAVA实现对BMP图片的读取

- - ITeye博客
BMP图片格式,是windows自带的一个图片格式,(*bmp),在windows的系统下都支持这种格式,bmp格式与设备无关的位图(DIB)格式,BMP简称位图,BMP的原始数据是没有经过压缩处理的  占用的空间比其它格式的图片要大.    BMP由四部分组成 ,位图文件头 , 位图信息头 ,  颜色 , 图像数据区.

Java为图片生成缩略图

- - 编程语言 - ITeye博客
需要为一张图片生成缩略图. 可以通过开源jar包thumbnailator-0.4.8.jar中提供的类来实现. 解压jar包可以看到测试类:ThumbnailatorTest.java,其具体代码如下:. * size(width,height) 若图片横比200小,高比300小,不变. * 若图片横比200小,高比300大,高缩小到300,图片比例不变 若图片横比200大,高比300小,横缩小到200,图片比例不变.