import javax.mail.*;
import java.util.*;
import javax.mail.internet.*;
/**
* @author caoyx
*
*/
public class MailTest {
/**
* 构造方法
*/
public MailTest() {
}
/**
*
*javamail发送测试
*/
public void SendEmailTest() {
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.163.com");
// 允许smtp校验
props.put("mail.smtp.auth", "true");
Session sendMailSession = Session.getInstance(props, null);
try {
Transport transport = sendMailSession.getTransport("smtp");
// 邮箱服务器 登陆邮箱用户名 登陆密码
transport.connect("smtp.163.com", "xxx", "xxx");
Message newMessage = new MimeMessage(sendMailSession);
// 设置mail主题
String mail_subject = "邮件发送测试(mail标题)";
newMessage.setSubject(mail_subject);
// 设置发信人地址
String strFrom = "xiangzi551@163.com";
strFrom = new String(strFrom.getBytes(), "8859_1");
newMessage.setFrom(new InternetAddress(strFrom));
Address addressFrom[] = {
new InternetAddress("xiangzi551@163.com"),
new InternetAddress("xiangzi551@163.c dfgdom") };
// 改变发件人地址
newMessage.addFrom(addressFrom);
// 设置收件人地址
Address addressTo[] = { new InternetAddress("cyx_shzu@163.com") };
newMessage.setRecipients(Message.RecipientType.TO, addressTo);
// 设置mail正文
newMessage.setSentDate(new java.util.Date());
String mail_text = "邮件发送测试.来自: "+strFrom;
newMessage.setText(mail_text);
// 保存发送信息
newMessage.saveChanges();
// 发送邮件
transport.sendMessage(newMessage, newMessage
.getRecipients(Message.RecipientType.TO));
transport.close();
System.out.println("OK");
} catch (Exception e) {
System.out.println(e);
}
}
public static void main(String args[]) throws Exception {
MailTest SEmail = new MailTest();
SEmail.SendEmailTest();
}
}
测试:
在eclipse中创建一个Java Application
引入mail.jar activation.jar
注:
在用户名和密码都没有问题的情况下,如果代码抛出javax.mail.AuthenticationFailedException异常,先用OutLook测试一下看能否进行正常的收发邮件,
有时信箱如果是新注册的话,邮件的服务商默认刚注册的帐号是不能使用pop3的。例如163.com在我进行代码测试时,刚刚注册的帐号是没有权限使用该功能的,所以就会抛出上述的异常。
还有,要注意from的email地址和Authenticator类中验证的用户名是一致的,要不也会出错.
|