java mail发送复杂邮件代码(包括附件,html消息,纯文本消息)
2008-01-10 11:36
676 查看
import java.io.File;
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
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;
/** *//**
* java mail 发送复杂邮件,包括两个附件,html消息,html中嵌入两张图片
* 还包括发送alternative邮件的源码.
* @author zhangle
*
*/
public class SendMixedMail ...{
//以下属性根据自己情况设置.
private static String protocol="smtp";
private static String from="xxxx@163.com";
private static String to="xxxx@163.com";
private static String body="<html><body><a href='http://www.csdn.net'>I love you! csdn </a><img src='cid:img1'/><img src='cid:img2'/></body></html>";
private static String subject="mail test";
private static String server="smtp.163.com";
private static String username="your_name";//from mail name
private static String password="your_password";//from mail password
public static void main(String[] args) throws Exception, MessagingException ...{
Properties prop=new Properties();
prop.setProperty("mail.transport.protocol",protocol);
prop.setProperty("mail.smtp.auth","true");
Session session=Session.getInstance(prop,new Authenticator()...{//用户连接认证
public PasswordAuthentication getPasswordAuthentication() ...{
return new PasswordAuthentication(username,password);
}
});
session.setDebug(true);//开启调试
MimeMessage message=new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
message.setSubject(subject);
message.setSentDate(new Date());
//message.setText(body);//发送纯文本消息
//message.setContent(getAlternativeMultipart());//发送alternative邮件
message.setContent(getMultipart());//发送复杂文本消息
message.saveChanges();//保存消息
Transport trans=session.getTransport();
trans.connect(server,username,password);
trans.sendMessage(message,message.getRecipients(Message.RecipientType.TO));//发送
trans.close();
}
/** *//**
* 获得复杂邮件Multipart对象
* @return
* @throws MessagingException
*/
private static Multipart getMultipart() throws MessagingException ...{
Multipart multi=new MimeMultipart("mixed");//混合MIME消息
multi.addBodyPart(createContent());
multi.addBodyPart(createAttachment(new File("D:/test1.exe")));//嵌入附件
multi.addBodyPart(createAttachment(new File("D:/test2.jpg")));
return multi;
}
/** *//**
* 创建正文
* @return
* @throws MessagingException
*/
private static BodyPart createContent() throws MessagingException ...{
BodyPart content=new MimeBodyPart();
Multipart relate=new MimeMultipart("related");//组合MIME消息
relate.addBodyPart(createHtmlBody());
relate.addBodyPart(createImagePart(new File("D:/image1.jpg"), "img1"));//嵌入图片
relate.addBodyPart(createImagePart(new File("D:/image2.jpg"), "img2"));
content.setContent(relate);
return content;
}
/** *//**
* 创建图片
* @param file
* @param name
* @return
* @throws MessagingException
*/
private static BodyPart createImagePart(File file,String name) throws MessagingException ...{
MimeBodyPart image=new MimeBodyPart();
DataSource ds=new FileDataSource(file);
image.setDataHandler(new DataHandler(ds));
image.setFileName(name);
image.setContentID(name);
return image;
}
/** *//**
* 创建html消息
* @return
* @throws MessagingException
*/
private static BodyPart createHtmlBody() throws MessagingException ...{
BodyPart html=new MimeBodyPart();
html.setContent(body, "text/html;charset=gbk");
return html;
}
/** *//**
* 创建附件
* @param file
* @return
* @throws MessagingException
*/
private static BodyPart createAttachment(File file) throws MessagingException ...{
BodyPart attach=new MimeBodyPart();
DataSource ds=new FileDataSource(file);
attach.setDataHandler(new DataHandler(ds));
attach.setFileName(ds.getName());
return attach;
}
/** *//**
* 获取alternative邮件
* @return
* @throws MessagingException
*/
private static Multipart getAlternativeMultipart() throws MessagingException ...{
Multipart alternative=new MimeMultipart("alternative");//二选一消息
BodyPart text=new MimeBodyPart();
text.setContent("请浏览HTML", "text/plain;charset=gbk");
alternative.addBodyPart(text);
BodyPart html=new MimeBodyPart();
html.setContent(body, "text/html;charset=gbk");
alternative.addBodyPart(html);
return alternative;
}
}
相关文章推荐
- JavaMail实现邮件发送的简单封装(包括文本、图片、html、附件)
- javamail 发送邮件,发复杂html,包括附件,以及内嵌图片的邮件
- javamail发送复杂邮件(包含文本、图片、附件)
- java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html
- 用Java Mail发送带有图片附件的html格式邮件
- java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板
- python3 发邮件实例(包括:文本、html、图片、附件、SSL、群邮件)
- python应用系列教程——python使用smtp协议发送邮件:html文本邮件、图片邮件、文件附件邮件
- python发邮件实例(包括:文本、html、图片、附件、SSL、群邮件)
- java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板
- 用Python实现在Linux环境发送带附件的邮件,支持文本/html格式
- python发邮件实例(包括:文本、html、图片、附件、SSL、群邮件)
- 用java实现的邮件系统六(javamail发送复杂邮件-带附件和html)
- java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html
- 使用javaxmail发送邮件(带/不带附件,文本邮件/html邮件)
- javamail发送文本邮件、HTML邮件及带附件邮件
- java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板
- python发送邮件的实例代码(支持html、图片、附件)
- spring简单邮件发送(文本/html/图片/附件)
- python发送邮件的实例代码(支持html、图片、附件)