javaMail中除了可以通过Transport.connect(host,user,password)方法连接smtp服务器时直接传递用户认证信息,还可以借助Authenticatorl类获得用户认证信息。
Authenticator类用于代表一个可以对外提供用户认证信息的对象,它提供的用户认证信息封装在一个PasswordAuthentication类型的对象中。调用getInstance(java.util.Properties props,Authenticator authenticator)方法创建Session对象时,将把作为第二个参数传入的Authenticator对象注册到该Session对象中。以后,使用这个Session对象的javaMail客户端程序要向邮件服务器提交认证信息时,将调用改Session对象中注册的Authenticator对象,从中获得用户认证信息后传递给邮件服务器。
提前导入javamail.jar 和JAF 两个包
import java.util.Date;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class TextMessage {
public static void main(String[] args) throws AddressException, MessagingException, FileNotFoundException, IOException {
// TODO Auto-generated method stub
String from = "XXXXXXx@sina.com";
String to = "XXXXXXXX@qq.com";
String subject = "test";
String body = "test!!!";
//创建Session实例对象
Session session = Session.getDefaultInstance(new Properties());
//创建MimeMessage实例对象
MimeMessage msg = new MimeMessage(session);
//设置发件人
msg.setFrom(new InternetAddress(from));
//设置收件人
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
//设置发送日期
msg.setSentDate(new Date());
//设置邮件主题
msg.setSubject(subject);
//设置纯文本内容的邮件正文
msg.setText(body);
//保存并生成最终的邮件内容
msg.saveChanges();
//把MimeMessage 对象中的内容写入到文件中
msg.writeTo(new FileOutputStream("D:\\Eclipse\\test.eml"));
}
}