我们通过Java程序制作邮件是件十分繁琐的事情,因此可以考虑使用Microsoft Outlook制作好一封规范的邮件,使用程序发送。
下面的例子演示怎样直接发送一封现有的邮件:
package javamail;
import java.io.FileInputStream;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
/**
* 使用其他方式创建邮件并发送
*/
public class Demo2 {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
//创建session
Properties props = new Properties();
//下面这两行是必须的,必须添加认证和协议
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.transport.protocol", "smtp");
//设置主机名,不用设置端口,因为端口是默认的
props.setProperty("mail.host", "smtp.163.com");
//new SubAuthenticator("************","abc123")
Session session = Session.getInstance(props,
//这里用到策略模式,用上面一行代码也可以
new Authenticator(){
protected PasswordAuthentication
getPasswordAuthentication() {
return new PasswordAuthentication
("**********@163.com","abc123");
}
}
);
session.setDebug(true);
//发送已经存在的邮件
Message msg = new MimeMessage(session,
new FileInputStream(
"D:\\JAVAWEB\\MyeclipseCode\\javamail2\\resource\\demo3.eml"));
Transport.send(msg, InternetAddress.parse(
"************@qq.com"));
}
}
上述测试讲师测试成功了,我个人测试并未成功,邮件服务器经常会把正常的邮件当做垃圾邮件处理。会报如下错误:
554 DT:SPM 发送的邮件内容包含了未被许可的信息,或被系统识别为垃圾邮件。请检查是否有用户发送病毒或者垃圾邮件。
参考书籍:《Java邮件开发详解》
参考视频:《传智播客_张孝祥_Java邮件开发教程》