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

简介:
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张图片的邮件关联方式。凝视中有发送带附件、带多人发送解析的代码,能够自行调整








本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5089150.html,如需转载请自行联系原作者


相关文章
|
30天前
|
Java
java通过commons-fileupload实现多张图片的上传(servlet)
java通过commons-fileupload实现多张图片的上传(servlet)
23 2
|
30天前
|
前端开发 Java
java通过commons-fileupload实现多张图片的上传(jsp页面)
java通过commons-fileupload实现多张图片的上传(jsp页面)
16 2
|
14天前
|
Java
Java中ReentrantLock中tryLock()方法加锁分析
Java中ReentrantLock中tryLock()方法加锁分析
12 0
|
3天前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
28 3
|
5天前
|
存储 Java
Java动态转发代理IP的实现方法
Java动态转发代理IP的实现方法
21 11
|
6天前
|
Java
Java接口中可以定义哪些方法?
【4月更文挑战第13天】
9 0
Java接口中可以定义哪些方法?
|
12天前
|
Java Shell
Java 21颠覆传统:未命名类与实例Main方法的编码变革
Java 21颠覆传统:未命名类与实例Main方法的编码变革
13 0
|
14天前
|
Java
Java中关于ConditionObject的signal()方法的分析
Java中关于ConditionObject的signal()方法的分析
21 4
|
14天前
|
安全 Java
append在Java中是哪个类下的方法
append在Java中是哪个类下的方法
22 9
|
22天前
|
Java
Java通过反射获取类调用方法
Java通过反射获取类调用方法
18 0