ysoren 发表于 2017-1-4 11:22:55

apache commons-email 发邮件功能

浅试一下apache commons-email.jar 发邮件的功能,代码暂时记录在此,代码还没有整理过,只是弄了几个方法测试了一下。包和文档可以在此找到
http://commons.apache.org/email/
图如下:



package com.mail.test;
import java.net.MalformedURLException;
import java.net.URL;
import org.apache.commons.mail.DefaultAuthenticator;
import org.apache.commons.mail.Email;
import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
import org.apache.commons.mail.MultiPartEmail;
import org.apache.commons.mail.SimpleEmail;
public class TestSendMail {
//发送文本邮件
public static void sendTextMail(){
Email email = new SimpleEmail();
email.setHostName("smtp.qq.com");
// email.setHostName("smtp.163.com");
email.setSmtpPort(25);
email.setAuthenticator(new DefaultAuthenticator("123456@qq.com", "*******"));
email.setTLS(true);
try {
email.setFrom("123456@qq.com");
email.setMsg("This is a test mail__common_email");
email.addTo("bill@126.com");
email.setSubject("TestMail文本邮件");
email.send();
} catch (EmailException e) {
e.printStackTrace();
}
}
//发送带附件的邮件
public static void sendAttachmentMail(){
// Create the attachment
EmailAttachment attachment = new EmailAttachment();
attachment.setPath("D://lib/activation.jar");
//也可以以网络的方式
//      attachment.setURL(new URL("http://www.apache.org/images/asf_logo_wide.gif"));
attachment.setDisposition(EmailAttachment.ATTACHMENT);
attachment.setDescription("发给你的jar包");
attachment.setName("jar包");
// Create the email message
MultiPartEmail email = new MultiPartEmail();
email.setHostName("smtp.qq.com");
email.setSmtpPort(25);
email.setAuthenticator(new DefaultAuthenticator("123456@qq.com", "******"));
email.setTLS(true);
try {
//发件人地址   发件人昵称
email.setFrom("123456@qq.com","发件人昵称");   //也可以不要第二个参数
email.addTo("bill@126.com","收件人昵称");
email.setSubject("The jar");                   //标题
email.setMsg("Here is the jar you wanted");    //邮件内容
// add the attachment
email.attach(attachment);                      //附件
email.send();
} catch (EmailException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//发送HTML的邮件
public static void sendHtmlEmail(){
// Create the email message
HtmlEmail email = new HtmlEmail();
email.setHostName("smtp.qq.com");
email.setSmtpPort(25);
email.setAuthenticator(new DefaultAuthenticator("123456@qq.com", "*******"));
email.setTLS(true);
try {
email.addTo("bill@126.com", "收件人昵称");
// 发件人地址 发件人昵称
email.setFrom("123456@qq.com", "发件人昵称"); // 也可以不要第二个参数
email.setSubject("The jar");                   //标题
email.setMsg("This is a test mail__common_email");
// embed the image and get the content id
URL url = new URL("http://www.apache.org/images/asf_logo_wide.gif");
String cid = email.embed(url, "appach logo");
// set the html message
email.setHtmlMsg("<html><a href='http://www.baidu.com'>baidu.com</a> <img src=\"cid:" + cid
+ "\"></html>");
// set the alternative message
email.setTextMsg("Your email client does not support HTML messages");
// send the email
email.send();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (EmailException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
publicstatic void main(String[] args) {
sendTextMail();
//sendAttachmentMail();
//sendHtmlEmail();
}

}


有两个小问题还没整就要睡觉了:1,我用163作发送,总是验证不通过,还没抽空找原因,用QQ就可以发送,但我不用appach的邮件的功能,用其他就可以发过去,当然不会是用户名密码等没有输对,也不是什么服务没开的问题。
2,发送内容的编码还没整。如果发送带附件的邮件,下载时附件没有默认的后辍名,保存时要手功改保存类型。不知道怎么整。
如果有大侠路过指点一下。
页: [1]
查看完整版本: apache commons-email 发邮件功能