Apache Commons Email使用心得

来源:互联网 发布:淘宝服装招商加盟代理 编辑:程序博客网 时间:2024/06/03 19:10

最近在项目中开发中需要用到发送邮件功能,当后台定时任务处理完毕后通知调用者。Java Mail API使用比较麻烦,所以这里采用的是Apache Commons Email,官网地址:http://commons.apache.org/proper/commons-email/,Commons Email API比较简洁高效,学习起来也很快。写篇文章跟大家分享一下,有问题的可以留言!

1、发送简单文本邮件

Email email = new SimpleEmail();email.setHostName("smtp.googlemail.com");email.setSmtpPort(465);email.setAuthenticator(new DefaultAuthenticator("username", "password"));email.setSSLOnConnect(true);email.setFrom("user@gmail.com");email.setSubject("TestMail");email.setMsg("This is a test mail ... :-)");email.addTo("foo@bar.com");email.send();

2、发送带附件的邮件

// Create the attachment  EmailAttachment attachment = new EmailAttachment();  attachment.setPath("mypictures/john.jpg");  attachment.setDisposition(EmailAttachment.ATTACHMENT);  attachment.setDescription("Picture of John");  attachment.setName("John");  // Create the email message  MultiPartEmail email = new MultiPartEmail();  email.setHostName("mail.myserver.com");  email.addTo("jdoe@somewhere.org", "John Doe");  email.setFrom("me@apache.org", "Me");  email.setSubject("The picture");  email.setMsg("Here is the picture you wanted");  // add the attachment  email.attach(attachment);  // send the email  email.send();

另外还可以通过任意的链接来将网络上的文件添加到附件中,例如:

// Create the attachment  EmailAttachment attachment = new EmailAttachment();  attachment.setURL(new URL("http://www.apache.org/images/asf_logo_wide.gif"));  attachment.setDisposition(EmailAttachment.ATTACHMENT);  attachment.setDescription("Apache logo");  attachment.setName("Apache logo");  // Create the email message  MultiPartEmail email = new MultiPartEmail();  email.setHostName("mail.myserver.com");  email.addTo("jdoe@somewhere.org", "John Doe");  email.setFrom("me@apache.org", "Me");  email.setSubject("The logo");  email.setMsg("Here is Apache's logo");    // add the attachment  email.attach(attachment);  // send the email  email.send();

3、发送HTML格式的邮件

// Create the email message  HtmlEmail email = new HtmlEmail();  email.setHostName("mail.myserver.com");  email.addTo("jdoe@somewhere.org", "John Doe");  email.setFrom("me@apache.org", "Me");  email.setSubject("Test email with inline image");    // 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, "Apache logo");    // set the html message  email.setHtmlMsg("<html>The apache logo - <img src=\"cid:"+cid+"\"></html>");  // set the alternative message  email.setTextMsg("Your email client does not support HTML messages");  // send the email  email.send();


4、发送带图片的HTML格式邮件

// load your HTML email template  String htmlEmailTemplate = ....  // define you base URL to resolve relative resource locations  URL url = new URL("http://www.apache.org");  // create the email message  HtmlEmail email = new ImageHtmlEmail();  email.setDataSourceResolver(new DataSourceResolverImpl(url));  email.setHostName("mail.myserver.com");  email.addTo("jdoe@somewhere.org", "John Doe");  email.setFrom("me@apache.org", "Me");  email.setSubject("Test email with inline image");    // set the html message  email.setHtmlMsg(htmlEmailTemplate);  // set the alternative message  email.setTextMsg("Your email client does not support HTML messages");  // send the email  email.send();



另外,在使用过程中发现Email.addTo一次只能添加一个联系人,如果想发送给多个人的话,需要使用for循环嵌套来实现,以下是一个简单的例子:

public static void main(String[] args){        String mailList = "abc@163.com;tt@qq.com";        String[] list = mailList.split(";");        for(int i=0;list!=null && i<list.length;i++){   //嵌套调用            sendEmail(list[i]);        }    }    public static void sendEmail(String target) {        try{            Email email = new SimpleEmail();            email.setHostName("smtp.163.com");            email.setSmtpPort(465);            email.setAuthenticator(new DefaultAuthenticator("abc@163.com","abc"));            email.setSSLOnConnect(true);            email.setFrom("abc@163.com");            email.addTo(target);            email.setSubject("Test Mail");            email.setMsg("This is a test mail");            email.send();        }catch (Exception e){            e.printStackTrace();        }    }



详细教程可以参考官网UserGuide,链接:http://commons.apache.org/proper/commons-email/userguide.html




0 0
原创粉丝点击