用MIME协议生成一封复杂的邮件(三)
上一篇笔记写了怎样生成一篇复杂的邮件,下面看看怎样发送这个邮件吧!
源码如下:
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.MessagingException;
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;
public class SendImageMail {
private static final String HOST = "smtp.sohu.com";
private static final String SMTP = "smtp";
private static final String AUTH = "true";
public static void main(String[] args) throws MessagingException {
Properties props = new Properties();
// 设置发送邮件的主机服务名称
props.setProperty("mail.host", HOST);
// 设置发送邮件的协议
props.setProperty("mail.transport.protocol", SMTP);
// 设置登录验证
props.setProperty("mail.smtp.auth", AUTH);
// 根据属性文件获取发送接收邮件环境对象
Session session = Session.getDefaultInstance(props);
// 根据环境对象创建一份邮件
Message message = createMessage(session);
// 根据环境对象获取发送邮件的对象
Transport tsp = session.getTransport();
// 调用发送邮件对象的登录连接验证的方法
tsp.connect("redarmycsdn", "redarmycsdn");
// 调用发送邮件对象的发送邮件的方法 发送邮件
tsp.sendMessage(message, message.getAllRecipients());
// 关闭
tsp.close();
}
public static Message createMessage(Session session) {
MimeMessage message = new MimeMessage(session);
try {
// 设置邮件头
message.setFrom(new InternetAddress("aa@sohu.com"));
message.setRecipient(Message.RecipientType.TO, new InternetAddress(
"bb@qq.com"));
message.setSubject("测试带有图片的");
// 设置邮件体
MimeBodyPart part = new MimeBodyPart();
part.setContent("中国....<br/><img src='cid:xx.jpg'>",
"text/html;charset=utf8");
MimeBodyPart image = new MimeBodyPart();
image.setDataHandler(new DataHandler(new FileDataSource(
"src//1.jpg")));
image.setContentID("xx.jpg");
// 设置描述关系
MimeMultipart mp = new MimeMultipart();
mp.addBodyPart(part);
mp.addBodyPart(image);
mp.setSubType("related");
message.setContent(mp);
//带有附件的自己完成.
message.saveChanges();
} catch (AddressException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return message;
}
}