使用JavaMail API收发邮件
JavaMail API按其功能划分通常可分为如下三大类:
创建和解析邮件内容的API :Message类是创建和解析邮件的核心API,它的实例对象代表一封电子邮件。
发送邮件的API :Transport类是发送邮件的核心API类,它的实例对象代表实现了某个邮件发送协议的邮件发送对象,例如SMTP协议。
接收邮件的API :Store类是接收邮件的核心API类,它的实例对象代表实现了某个邮件接收协议的邮件接收对象,例如POP3协议。
Session类
Session类用于定义整个应用程序所需的环境信息,以及收集客户端与邮件服务器建立网络连接的会话信息,如邮件服务器的主机名、端口号、采用的邮件发送和接收协议等。Session对象根据这些信息构建用于邮件收发的Transport和Store对象,以及为客户端创建Message对象时提供信息支持。
邮件发送程序
使用JavaMail发送一封简单的邮件:
1、创建包含邮件服务器的网络连接信息的Session对象。
2、创建代表邮件内容的Message对象。
3、创建Transport对象、连接服务器、发送Message、关闭连接。
下面以从csdn@sohu.com 给 1324117@sina.com 发一封带有图片的邮件为例,代码如下:
public class SeendMail {
public static void main(String[] args) {
// 设置属性
Properties props = new Properties();
props.setProperty("mail.host", "smtp.sohu.com");
props.setProperty("mail.transport.protocol","smtp");
props.setProperty("mail.smtp.auth", "ture");
Session session=Session.getInstance(props);
Message message=CreatMessage(session);
try {
Transport trs=session.getTransport();
trs.connect("csdn", "csdn");
trs.sendMessage(message,message.getAllRecipients());
trs.close();
} catch (Exception e) {
e.printStackTrace();
}
}
//创建邮件
public static Message CreatMessage(Session session){
MimeMessage message=new MimeMessage(session);
try {
// 设置属性
message.setFrom(new InternetAddress("csdn@sohu.com"));
message.setRecipient(Message.RecipientType.TO, new InternetAddress("1324117@sina.com "));
message.setSubject("kxl");
//创建邮件体
MimeBodyPart text=new MimeBodyPart();
text.setContent("这有好多图片<br/><img src='cid:xx.jpg'><br/><img src='cid:yy.jpg'><br/>选一张吧", "text/html;charset=utf-8");
//设置图片
MimeBodyPart image=new MimeBodyPart();
image.setDataHandler(new DataHandler(new FileDataSource("src//f.jpg")));
image.setContentID("xx.jpg");
MimeBodyPart image1=new MimeBodyPart();
image1.setDataHandler(new DataHandler(new FileDataSource("src//x.jpg")));
image1.setContentID("yy.jpg");
//描述关系
//图片与正文的描述关系
MimeMultipart mm = new MimeMultipart();
mm.addBodyPart(text);
mm.addBodyPart(image);
mm.addBodyPart(image1);
mm.setSubType("related");
message.setContent(mm);
message.saveChanges();
} catch (Exception e) {
e.printStackTrace();
}
return message;
}
}