在下载使用javax.mail的jar包时候,注意:
有的jar没有包含sun的实现,只包含了api,这类jar名称通常为javax.mail-api-x.x.x.jar,在使用smtp协议发邮件过程中会报错:
- java.lang.ClassNotFoundException: com.sun.mail.util.MailLogger
另一种jar是包含了sun的实现的,名称通常为javax.mail-x.x.x.jar,使用smtp协议发邮件正常!
示例代码:
- package test.mail;
-
- import javax.mail.Message;
- import javax.mail.Session;
- import javax.mail.Transport;
- import javax.mail.internet.InternetAddress;
- import javax.mail.internet.MimeMessage;
- import java.util.Date;
- import java.util.Properties;
-
- public class TestMail {
- public static void sendMail(String fromMail, String user, String password,
- String toMail,
- String mailTitle,
- String mailContent) throws Exception {
- Properties props = new Properties();
-
- props.put("mail.smtp.host", "smtp.163.com");
- props.put("mail.smtp.auth", "true");
-
- Session session = Session.getInstance(props);
-
-
- MimeMessage message = new MimeMessage(session);
- message.setFrom(new InternetAddress(fromMail));
- message.setRecipient(Message.RecipientType.TO, new InternetAddress(toMail));
- message.setSubject(mailTitle);
-
-
- message.setContent(mailContent, "text/html;charset=gbk");
- message.setSentDate(new Date());
- message.saveChanges();
-
-
-
- Transport transport = session.getTransport();
- transport.connect(user, password);
- transport.sendMessage(message, message.getAllRecipients());
- transport.close();
- }
-
- public static void main(String[] args) throws Exception {
- sendMail("用户名@163.com", "用户", "密码",
- "xxxxxxx@qq.com",
- "Java Mail 测试邮件",
- "<a>html 元素</a>:<b>邮件内容</b>");
- }
- }
Apache Email基于javax.mail做了一个开源项目,参见:http://commons.apache.org/proper/commons-email/