使用javamail发邮件

使用javamail发邮件。

javamail是java发邮件的常用工具。方便实用。

1、首先使用maven工程,需要引入对javamail的依赖,取个最新稳定版本:

<dependency>
	<groupId>javax.mail</groupId>
	<artifactId>mail</artifactId>
	<version>1.4.5</version>
</dependency>

2、构造一个Session。所谓Session,可以理解为对SMTP服务器的配置。如果发邮件的全部都是一个配置,这个是可以单例的。

Properties props = new Properties();
props.put("mail.smtp.host", "smtp.163.com");//smtp服务器
props.put("mail.smtp.auth", "true");//是否需要用户名密码鉴权
props.put("mail.transport.protocol", "smtp");//协议名称
props.put("mail.smtp.socketFactory.port", 25); //服务器端口
props.put("mail.smtp.starttls.enable", "true"); //如果是ssl端口,需要加这个属性。
 
//创建Session。这个取一次就好了,
Session session = Session.getInstance(props, new Authenticator() //如果你只有一个发送邮箱,在这里指定就好了,如果你有多个用户名密码,也可以在正式发邮件的时候指定。
{
 
	@Override
	protected PasswordAuthentication getPasswordAuthentication()
	{
		return new PasswordAuthentication("zhaoyan", "zhaoyanblog.com");//用户名和密码,
	}
 
});

3、获取一个连接发送邮件:

Transport transport = null;
try
{
	transport = session.getTransport("smtp");
	//这里是不能单例使用的,可以看Transport的实现类SMTPTransport,
	//有几个成员是:private MimeMessage message; private Address[] addresses; private SMTPOutputStream dataStream; 说明每次发邮件都会存这些东西的,这个类是线程不安全的。
 
	transport.connect();
	//如果session里没有指定用户名密码,这里可以使用transport.connect("username","password");
 
	MimeMessage message = createMessage();//构造邮件内容
	transport.sendMessage(message, new InternetAddress[]{new InternetAddress("zhaoyan@zhaoyanblog.com")});
	//如果你的message里指定了接收方,这里也可以写transport.sendMessage(message);
}
finally
{
	transport.close();
}

4、发送不同类型的短信

MimeMessage message = new MimeMessage();
//发送者:名称要编码一下
InternetAddress from = new InternetAddress(MimeUtility.encodeText("赵岩的博客") + "<zhaoyan@zhaoyanblog.com>");
InternetAddress from = new InternetAddress("zhaoyan@zhaoyanblog.com","赵岩的博客","utf-8");
message.setFrom(from);
 
//接收者
message.setRecipient(Message.RecipientType.TO, new InternetAddress("zhaoyan@zhaoyanblog.com"));
//多个接收者
message.setRecipient(Message.RecipientType.TO, new InternetAddress[]{new InternetAddress("zhaoyan1@zhaoyanblog.com"),new InternetAddress("zhaoyan2@zhaoyanblog.com")});
//标题
message.setSubject("你好");

1、普通文本邮件

message.setText("欢迎看我的博客zhaoyanblog.com");

2、普通html邮件

message.setContent("<p>欢迎看我的博客 zhaoyanblog.com</p>", "text/html; charset=utf-8");

3、带附件的邮件

//html
MimeBodyPart contentBodyPart = new MimeBodyPart();
contentBodyPart.setContent("<p>欢迎到我的博客,zhaoyanblog.com</p>", "text/html; charset=utf-8");
 
//附件
MimeBodyPart logoMultiPart = new MimeBodyPart();
logoMultiPart.setDataHandler(new DataHandler(new FileDataSource("我的文档.doc"));
 
//组合,可以加多个附近
MimeMultipart bodyMultipart = new MimeMultipart("mixed");
bodyMultipart.addBodyPart(contentBodyPart);
bodyMultipart.addBodyPart(logoMultiPart);
message.setContent(bodyMultipart);

4、html加图片的邮件
只要给图片附件加个id,然后在html部分引用

MimeBodyPart contentBodyPart = new MimeBodyPart();
contentBodyPart.setContent("<img src=\"cid:logo.png\" />", "text/html; charset=utf-8");
 
MimeBodyPart logoMultiPart = new MimeBodyPart();
logoMultiPart.setDataHandler(new DataHandler(new FileDataSource("logo.jpg")));
logoMultiPart.setContentID("logo.png");
 
MimeMultipart bodyMultipart = new MimeMultipart("mixed");
bodyMultipart.addBodyPart(contentBodyPart);
bodyMultipart.addBodyPart(logoMultiPart);
message.setContent(bodyMultipart);

留言

提示:你的email不会被公布,欢迎留言^_^

*

验证码 * Time limit is exhausted. Please reload CAPTCHA.