Apache Commons Email使用心得详解编程语言

最近在项目中开发中需要用到发送邮件功能,当后台定时任务处理完毕后通知调用者。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("[email protected]"); 
email.setSubject("TestMail"); 
email.setMsg("This is a test mail ... :-)"); 
email.addTo("[email protected]"); 
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("[email protected]", "John Doe"); 
  email.setFrom("[email protected]", "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("[email protected]", "John Doe"); 
  email.setFrom("[email protected]", "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("[email protected]", "John Doe"); 
  email.setFrom("[email protected]", "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("[email protected]", "John Doe"); 
  email.setFrom("[email protected]", "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 = "[email protected];[email protected]"; 
 
        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("[email protected]","abc")); 
            email.setSSLOnConnect(true); 
            email.setFrom("[email protected]"); 
            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

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/10548.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论