1.新建一个Java工程,SendMail。
2.引入三个jar。
在工程中新建文件夹lib,拷入三个jar,在properties->java build path->librarys导入->order and export√上。
commons-email-1.2.jar
activation-1.1.jar
mail-1.4.jar(一开始没引入这个jar,结果报错,java.lang.NoClassDefFoundError: javax.mail.Authenticator)
3.新建一个类SendMail.java
package com.ibm.docs.viewer;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;
public class SendMail {
public SendMail() {
}
public static void main(String[] args) {
send();
System.out.println();
}
public static void send() {
SimpleEmail email = new SimpleEmail();
email.setTLS(true);
email.setHostName("d23m0037.cn.ibm.com");
email.setAuthentication("XXX@cn.ibm.com", "XXXX"); // 用户名和密码
try {
email.addTo("XXXX@qq.com"); // 接收方
email.setFrom("XXXX@cn.ibm.com"); // 发送方
email.setSubject("Java Mail Test"); // 标题
email.setMsg("Just a simple send test ."); // 内容
email.send();
} catch (EmailException e) {
e.printStackTrace();
}
}
}
4.运行。
之前用的163,gmail,新浪的邮件服务器均报错。
Sending the email to the following server failed
网上一查应该是公司的端口25被封了,
开始-运行-cmd- 键入命令 netstat -an 只能看到本机的开放端口测试的时候,发现 telnet d23m0037.cn.ibm.com 25是通的,说明服务器好使,成功收到邮件。
5.发送带附件的邮件。
package com.ibm.docs.viewer;
import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.MultiPartEmail;
public class SendAttachment {
public static void main(String[] args) throws EmailException {
MultiPartEmail email = new MultiPartEmail();
// 通过IBM Server 发送邮件
email.setTLS(true);
email.setHostName("d23m0037.cn.ibm.com"); // 设定smtp服务器
email.setAuthentication("XXX@cn.ibm.com", "XXX@2012"); // 用户名和密码
EmailAttachment attachment = new EmailAttachment();
attachment.setPath("C:\\Documents and Settings\\Administrator\\My Documents\\Downloads\\result.txt");
attachment.setDisposition(EmailAttachment.ATTACHMENT);// 设定附件的方式(内嵌,附件)
attachment.setDescription("result");
attachment.setName("result.txt"); // 附件的文件名
email.addTo("XXX@qq.com"); // 接收方
email.setFrom("XXX@cn.ibm.com"); // 发送方
email.setSubject("Java Mail Test"); // 标题
email.setMsg("Just a simple send test ."); // 内容
email.attach(attachment);
email.send();
}
}
之前也写过一个基于163的,一年前写的了,又忘了,该死!
现在记录下来,也许以后还可以用上。就可以代码重用了。O耶!