- /**
- * CrazyItTest
- * JavaMail 创建带附件的电子邮件示例
- */
- package com.labci.javamail.test;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.UnsupportedEncodingException;
- import java.util.Date;
- import java.util.Properties;
- import javax.activation.DataHandler;
- import javax.activation.FileDataSource;
- import javax.mail.Message.RecipientType;
- import javax.mail.MessagingException;
- import javax.mail.Session;
- 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;
- import javax.mail.internet.MimeUtility;
- /**
- * @author Bill Tu
- * @since May 26, 2011(21:03:36 PM)
- *
- */
- public class ComplexMailTest {
- private static MimeMessage getTextMessage(Session session) throws AddressException,
- MessagingException, UnsupportedEncodingException{
- MimeMessage message=new MimeMessage(session);
- String from="iwtxokhtd@163.com";//发送方邮件地址
- String to="277515433@qq.com";//接收方邮件地址
- String subject="带附件的邮件";//邮件主题,注意是中文的
- String content="<h1>欢迎啊</h1><img src="cid:my1.jpg" mce_src="cid:my1.jpg"/>";//cid为my1.jpg,下文会设置此cid
- message.setFrom(new InternetAddress(from));
- message.setRecipient(RecipientType.TO, new InternetAddress(to));
- message.setSubject(subject);
- message.setSentDate(new Date());//发送时间
- MimeBodyPart picBodyPart=getPicBodyPart(content,"F://My头像.jpg");
- MimeBodyPart attached1BodyPart=getAttachedBodyPart("F://nginx中文.txt");//注意附件名是中文的
- MimeBodyPart attached2BodyPart=getAttachedBodyPart("F://nginx英文.doc");
- MimeMultipart mmp=new MimeMultipart("mixed");//MIME消息头组合类型是mixed(html+附件)
- mmp.addBodyPart(picBodyPart);
- mmp.addBodyPart(attached1BodyPart);
- mmp.addBodyPart(attached2BodyPart);
- message.setContent(mmp);
- message.saveChanges();
- return message;
- }
- /**
- * 处理文件名
- * 此处是针对Window下的。
- * @param filePath
- * @return
- */
- private static String doHandlerFileName(String filePath){
- String fileName=filePath;
- if(null !=filePath && !"".equals(filePath)){
- fileName=filePath.substring(filePath.lastIndexOf("//")+1);
- }
- return fileName;
- }
- private static MimeBodyPart getAttachedBodyPart(String filePath) throws MessagingException,
- UnsupportedEncodingException{
- MimeBodyPart attached=new MimeBodyPart();
- FileDataSource fds=new FileDataSource(filePath);
- attached.setDataHandler(new DataHandler(fds));
- String fileName=doHandlerFileName(filePath);
- attached.setFileName(MimeUtility.encodeWord(fileName));//处理附件文件的中文名问题
- return attached;
- }
- /**
- * 处理html加图片的类型(related)
- * @param content
- * @param picName
- * @return
- * @throws MessagingException
- */
- private static MimeBodyPart getPicBodyPart(String content,String picName) throws MessagingException{
- MimeBodyPart contentPart=new MimeBodyPart();
- MimeMultipart mmp=new MimeMultipart("related");//此处MIME消息头组合类型为related
- MimeBodyPart contented=new MimeBodyPart();
- contented.setContent(content,"text/html;charset=gb2312");//因正文内容中有中文
- mmp.addBodyPart(contented);
- MimeBodyPart picBodyPart=new MimeBodyPart();
- FileDataSource fds=new FileDataSource(picName);
- picBodyPart.setDataHandler(new DataHandler(fds));
- picBodyPart.setContentID("my1.jpg");//设置contentId
- mmp.addBodyPart(picBodyPart);
- contentPart.setContent(mmp);
- return contentPart;
- }
- public static void main(String[] args) throws AddressException,
- MessagingException, FileNotFoundException, IOException {
- Session session=Session.getDefaultInstance(new Properties());
- MimeMessage message=getTextMessage(session);
- message.writeTo(new FileOutputStream("F://mailtext.eml"));
- }
- }
用outlook打开保存在F盘的mailtest.eml文件,查看一下邮件内容:
相关推荐
17-2 JavaMail 范例程序一——传送一般邮件 17-3 JavaMail 范例程序二——传送 HTML 格式的邮件 17-4 JavaMail 范例程序三——传送附件 17-5 JavaMail 范例程序四——传送自定义内容的邮件 第十八章 Web 架构—— ...
目前EmailKit支持的电子邮件协议有SMTP和IMAP,它支持的功能有发送邮件,下载附件、获取文件夹列表、读取邮件、加载邮件、同步邮件,对邮件消息的移动,删除,保存到草稿箱等操作,同时支持邮箱的新邮件消息推送...
Java网络编程(第三版)中文版(不看后悔) ...发送电子邮件 651 接收邮件 661 口令认证 666 地址 670 URLName类 674 Message类 677 Part接口 689 多部分消息和附件 699 MIME消息 703 文件夹 705
Java网络编程(第三版)中文版(不看后悔) ...发送电子邮件 651 接收邮件 661 口令认证 666 地址 670 URLName类 674 Message类 677 Part接口 689 多部分消息和附件 699 MIME消息 703 文件夹 705
Java网络编程(第三版)中文版(不看后悔) ...发送电子邮件 651 接收邮件 661 口令认证 666 地址 670 URLName类 674 Message类 677 Part接口 689 多部分消息和附件 699 MIME消息 703 文件夹 705
Java网络编程(第三版)中文版(不看后悔) ...发送电子邮件 651 接收邮件 661 口令认证 666 地址 670 URLName类 674 Message类 677 Part接口 689 多部分消息和附件 699 MIME消息 703 文件夹 705
Java网络编程(第三版)中文版(不看后悔) ...发送电子邮件 651 接收邮件 661 口令认证 666 地址 670 URLName类 674 Message类 677 Part接口 689 多部分消息和附件 699 MIME消息 703 文件夹 705
Java网络编程(第三版)中文版(不看后悔) ...发送电子邮件 651 接收邮件 661 口令认证 666 地址 670 URLName类 674 Message类 677 Part接口 689 多部分消息和附件 699 MIME消息 703 文件夹 705
Java网络编程(第三版)中文版(不看后悔) ...发送电子邮件 651 接收邮件 661 口令认证 666 地址 670 URLName类 674 Message类 677 Part接口 689 多部分消息和附件 699 MIME消息 703 文件夹 705
Java网络编程(第三版)中文版(不看后悔) ...发送电子邮件 651 接收邮件 661 口令认证 666 地址 670 URLName类 674 Message类 677 Part接口 689 多部分消息和附件 699 MIME消息 703 文件夹 705
Java网络编程(第三版)中文版(不看后悔) ...发送电子邮件 651 接收邮件 661 口令认证 666 地址 670 URLName类 674 Message类 677 Part接口 689 多部分消息和附件 699 MIME消息 703 文件夹 705
Java网络编程(第三版)中文版(不看后悔) ...发送电子邮件 651 接收邮件 661 口令认证 666 地址 670 URLName类 674 Message类 677 Part接口 689 多部分消息和附件 699 MIME消息 703 文件夹 705
Java网络编程(第三版)中文版(不看后悔) ...发送电子邮件 651 接收邮件 661 口令认证 666 地址 670 URLName类 674 Message类 677 Part接口 689 多部分消息和附件 699 MIME消息 703 文件夹 705
Java网络编程(第三版)中文版(不看后悔) ...发送电子邮件 651 接收邮件 661 口令认证 666 地址 670 URLName类 674 Message类 677 Part接口 689 多部分消息和附件 699 MIME消息 703 文件夹 705
Java网络编程(第三版)中文版(不看后悔) ...发送电子邮件 651 接收邮件 661 口令认证 666 地址 670 URLName类 674 Message类 677 Part接口 689 多部分消息和附件 699 MIME消息 703 文件夹 705
Java网络编程(第三版)中文版(不看后悔) ...发送电子邮件 651 接收邮件 661 口令认证 666 地址 670 URLName类 674 Message类 677 Part接口 689 多部分消息和附件 699 MIME消息 703 文件夹 705