下载commons-email-1.1.jar,并下载mail.jar和activation.jar(它们可以从sun的网站上下载,从下载的javamail和jaf中找到)。
如果没有mail.jar,则会有:Exception in thread "main" java.lang.NoClassDefFoundError: javax/mail/Message 这样的错误提示。
如果没有activation.jar,则会有:Exception in thread "main" java.lang.NoClassDefFoundError: javax/activation/DataSource 这样的错误提示。
下面是一个简单的测试。
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;
public class Send
{
public Send()
{
}
public static void main(String[] args)
{
send();
}
public static void send()
{
SimpleEmail email = new SimpleEmail();
email.setTLS(true);
email.setHostName("smtp.gmail.com");
email.setAuthentication("username@gmail.com", "password"); //用户名和密码
try
{
email.addTo("username@163.com"); //接收方
email.setFrom("username@gmail.com"); //发送方
email.setSubject("Java Mail Test"); //标题
email.setMsg("Just a simple send test ."); //内容
email.send();
} catch (EmailException e) {
e.printStackTrace();
}
}
}
上面的邮件标题和内容用的都是英文,如果改为中文呢?我试了一下,结果邮件标题不是乱码,而邮件内容则中文部分是乱码。设置其charSet为GB2312或者UTF-8后就可以发送中文邮件了,显示正常了。如下面的代码。
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;
public class Send
{
public Send()
{
}
public static void main(String[] args)
{
send();
}
public static void send()
{
SimpleEmail email = new SimpleEmail();
email.setTLS(true);
email.setHostName("smtp.gmail.com");
email.setAuthentication("username@gmail.com", "password");
try
{
email.addTo("username@163.com");
email.setFrom("username@gmail.com"); //我方
email.setSubject("Java发送邮件测试"); //标题
email.setCharset("GB2312"); //设置Charset
email.setMsg("这是一封Java程序发出的测试邮件。"); //内容
email.send();
} catch (EmailException e) {
e.printStackTrace();
}
}
}