`
KuangYeYaZi
  • 浏览: 55889 次
文章分类
社区版块
存档分类
最新评论

appache common email

阅读更多

http://blog.163.com/sender@yeah/blog/static/127950071201001943836422/

^^

该blogdoc版本下载 126k

mail.jar下载 349k

commons-email-1.2.jar下载 32k

该java程序下载 MailService.java 9k

<!-- 01-22 更新 -->

Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream

如果你用myEclipse进行开发的话,运行时可能会出现以下的错误:
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
原因是jar包版本不统一,解决方法如下:

删除Java EE 5 Libraries/javaee.jar/mail里的包有东西.

具体方法如下:
用rar打开X:C:\Program Files\MyEclipse 6.5\myeclipse\eclipse\plugins\com.genuitec.eclipse.j2eedt.core_6.5.0.zmyeclipse650200806\data\libraryset\EE_5\javaee.jar
,然后删除mail,一切就ok了.

<!-- ^^  -->

最近在博友spark博客上发现一篇关于使用commons email 发邮件的帖子,很感兴趣,因为以前还真没做过这方面的功能。进去看了看,然后又到Apache官网上找了UserGuide看了看,居然发现发邮件这么简单~~

本文完全参考于Apache的用户指南,有价值的地方(用户指南没有的)为 邮件乱码问题,和主机方为Google邮箱问题处理,如果这些都知道,还是看Apacheuserguide.html,比我的简明多了

 

参考文档:http://commons.apache.org/email/userguide.html

运行程序截图:

Apache Commons Email - 水睡了 - L-javaBlog

真是战况喜人啊,第一次运行居然全部ok。

 

可点击进去却发现邮件中设置了中文的地方都出现了乱码

Apache Commons Email - 水睡了 - L-javaBlog

Apache Commons Email - 水睡了 - L-javaBlog

简单邮件测试中消息“你好,郵件測試,看到這,說明已經成功了”出现为????

但到带本地附件邮件中:附件名称为中文,没有显示,显示为 No name 2.jpg,但是消息 “你好,郵件測試,看到這,說明已經成功了”却又正常显示出来,纠结!!

 

Google一下,发现已经有很多帖子来解决它,随便挑了个,就ok了,就是给它设置编码

//设置编码

            email.setCharset("UTF-8");

附件Attachment没有setCharset方法,但可以用

    MimeUtility.encodeText(String str)来转换

 

 

      

简单邮件测试:

Apache Commons Email - 水睡了 - L-javaBlog

带本地附件的邮件

Apache Commons Email - 水睡了 - L-javaBlog

带网络附件的邮件

Apache Commons Email - 水睡了 - L-javaBlog

HTML EMAIL

Apache Commons Email - 水睡了 - L-javaBlog

 

 

 

需要jar mail.jar commons-email-1.2.jar

代码

package mail;

 

import java.io.UnsupportedEncodingException;

import java.net.MalformedURLException;

import java.net.URL;

 

import javax.mail.internet.MimeUtility;

 

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;

 

/**

 *  Apache Email Util

 * @description commons email 使用总结

 * @time 2010-1-19下午04:21:59

 */

public class MailService {

    public static void main(String[] args) {

       //以下参数,完全可以设置成一个JAVABEAN,但这得copyblog中就写成这样了

       String encoding = "UTF-8";

       //smtp.gmail.com   smtp.163.com  smtp.qq.com

       String hostName = "smtp.gmail.com";

       String addToEmail = "sloong@yeah.net";

       String addToName = "sloong";//接收方名称

       String fromEmail = "slg927@gmail.com";//发送方为gmail--对应的hostName="smtp.gmail.com";

       String fromName = "slg-gmail";//发送方名称

       String uname = "userName";

       String pwd = "userPassword";

       String subject = "邮件测试:";

       String msg = "你好,郵件測試,看到這,說明已經成功了";

       String textMsg = "對不起,您的郵件客戶端不支持HTML Email";

 

       //附件一参数

       String attachmentURL = "http://www.apache.org/images/asf_logo_wide.gif";

       String attachmentDesc = "Apache Logo";

       String attachmentName = "Apache Logo";

       //附件二参数

       String attachmentPath = "c:/TIMS_sub.jpg";

       String attachmentDesc1 = "附件描述--帅照";

       String attachmentName1 = "附件名称--本人照片";

       //html中的参数

       String urlName = "Apache logo";

       String urlPath = "http://www.apache.org/images/asf_logo_wide.gif";

      

 

       // 简单邮件方法测试

       simpleEmail(encoding,hostName, addToEmail, addToName, fromEmail, fromName,

              uname, pwd, subject + "简单文本邮件", msg);

 

       // 带附件邮件测试

       // 1 本地文件

       localAttachmentEmail(encoding,hostName, addToEmail, addToName, fromEmail, fromName,

              uname, pwd, subject + "带本地附件邮件", msg, attachmentPath,

              attachmentDesc1, attachmentName1);

       // 2网络文件

       netAttachmentEmail(encoding,hostName, addToEmail, addToName, fromEmail, fromName,

              uname, pwd, subject + "带网络附件邮件", msg, attachmentURL,

              attachmentDesc, attachmentName);

 

       // htmlEmail测试

       htmlEmail(encoding,hostName, addToEmail, addToName, fromEmail, fromName, uname,

              pwd, subject + "HTML 邮件", urlPath, urlName, textMsg);

 

    }

 

    /**

     * A simple text email

     *

     * @description 简单文本邮件

 

     * @time 2010-1-19下午02:06:23

     */

    public static boolean simpleEmail(String encoding ,String hostName, String addToEmail,

           String addToName, String fromEmail, String fromName, String uname,

           String pwd, String subject, String msg) {

       // 1、创建简单邮件

       SimpleEmail email = new SimpleEmail();

       // 2、设置邮件服务器(接收方的)

       email.setHostName(hostName);

       // 如果为Google邮箱,需要设置它的SSL端口

       if ("smtp.gmail.com".equals(hostName)) {

           email.setSSL(Boolean.TRUE); // 设定是否使用SSL

           email.setSslSmtpPort("465"); // 设定SSL端口

       }

       // 3、邮件内容

       try {

 

           // 发送至 addToEmail,email名称为addToName

           email.addTo(addToEmail, addToName);

           // 发送人fromEmail,发送人名称fromName

           email.setFrom(fromEmail, fromName);

           // 验证发送人 uname:用户名,pwd:密码

           email.setAuthentication(uname, pwd);

           //设置编码

            email.setCharset(encoding);

           // 主题设置

           email.setSubject(subject);

           // 消息设置

           email.setMsg(msg);

           // 发送

           email.send();

          

       } catch (EmailException e) {

           e.printStackTrace();

       }

       return true;

    }

 

    /**

     * Sending emails with attachments

     *

     * @description 如何要添加多个附件,最好建立一个JavaBeanAttachment {path,desc,name}

    

     * @param 参数不做过多解释 ,详见程序

     * @return

     * @time 2010-1-19下午01:58:36

     */

    public static boolean localAttachmentEmail(String encoding,String hostName,

           String addToEmail, String addToName, String fromEmail,

           String fromName, String uname, String pwd, String subject,

           String msg, String attachmentPath, String attachmentDesc,

           String attachmentName) {

 

       // 1、创建一个Email附件 EmailAttachment

       EmailAttachment attachment = new EmailAttachment();

       // 2、本地附件的添加示例

       attachment.setPath(attachmentPath);

       attachment.setDisposition(EmailAttachment.ATTACHMENT);

      

       try {

           attachment.setDescription(MimeUtility.encodeText(attachmentDesc));

           attachment.setName(MimeUtility.encodeText(attachmentName));

       } catch (UnsupportedEncodingException e1) {

           // TODO Auto-generated catch block

           e1.printStackTrace();

       }

 

       // 3、创建一个MultiPartEmail

       MultiPartEmail email = new MultiPartEmail();

       email.setHostName(hostName);

       if ("smtp.gmail.com".equals(hostName)) {

           email.setSSL(Boolean.TRUE); // 设定是否使用SSL

           email.setSslSmtpPort("465"); // 设定SSL端口

       }

       try {

           // 发送至 addToEmail,email名称为addToName

           email.addTo(addToEmail, addToName);

           // 发送人fromEmail,发送人名称fromName

           email.setFrom(fromEmail, fromName);

           // 验证发送人 uname:用户名,pwd:密码

           email.setAuthentication(uname, pwd);

          

           //设置编码

            email.setCharset(encoding);

           // 主题设置

           email.setSubject(subject);

           // 消息设置

           email.setMsg(msg);

 

           // 4、添加附件

           email.attach(attachment);

 

           // 发送邮件

           email.send();

       } catch (EmailException e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       }

       return true;

    }

 

    /**

     * @description 如果添加多个附件,可以把最后三个参数设置为JavaBean的属性,再传递一个附件JavaBean集合过来

 

     * @return

     * @time 2010-1-19下午02:50:05

     */

    public static boolean netAttachmentEmail(String encoding,String hostName,

           String addToEmail, String addToName, String fromEmail,

           String fromName, String uname, String pwd, String subject,

           String msg, String urlPath, String attachmentDesc, String attachmentName) {

       // 1、创建一个Email附件 EmailAttachment

       EmailAttachment attachment = new EmailAttachment();

 

       // 2、网络附件添加示例,参考ApacheUserGuide

       // 意思大致是指添加URL指向文件,该文件将被自动下载并添加到邮件的附件中

       attachment.setDisposition(EmailAttachment.ATTACHMENT);

       try {

           attachment.setDescription(MimeUtility.encodeText(attachmentDesc));

           attachment.setName(MimeUtility.encodeText(attachmentName));

       } catch (UnsupportedEncodingException e1) {

           // TODO Auto-generated catch block

           e1.printStackTrace();

       }

       URL url;

       try {

           url = new URL(urlPath);

           attachment.setURL(url);

       } catch (MalformedURLException e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       }

      

       // 3、创建一个MultiPartEmail

       MultiPartEmail email = new MultiPartEmail();

       email.setHostName(hostName);

       if ("smtp.gmail.com".equals(hostName)) {

           email.setSSL(Boolean.TRUE); // 设定是否使用SSL

           email.setSslSmtpPort("465"); // 设定SSL端口

       }

 

       try {

           // 发送至 addToEmail,email名称为addToName

           email.addTo(addToEmail, addToName);

           // 发送人fromEmail,发送人名称fromName

           email.setFrom(fromEmail, fromName);

           // 验证发送人 uname:用户名,pwd:密码

           email.setAuthentication(uname, pwd);

          

           //设置编码

            email.setCharset(encoding);

           // 主题设置

           email.setSubject(subject);

           // 消息设置

           email.setMsg(msg);

           // 4、添加附件

           email.attach(attachment);

           // 发送邮件

           email.send();

       } catch (EmailException e) {

           e.printStackTrace();

       }

       return true;

    }

 

    public static boolean htmlEmail(String encoding,String hostName, String addToEmail,

           String addToName, String fromEmail, String fromName, String uname,

           String pwd, String subject, String urlPath,

           String urlName, String textMsg) {

       // Create the email message

       HtmlEmail email = new HtmlEmail();

       email.setHostName(hostName);

       // 如果为Google邮箱,需要设置它的SSL端口

       if ("smtp.gmail.com".equals(hostName)) {

           email.setSSL(Boolean.TRUE); // 设定是否使用SSL

           email.setSslSmtpPort("465"); // 设定SSL端口

       }

       try {

           // 发送至 addToEmail,email名称为addToName

           email.addTo(addToEmail, addToName);

           // 发送人fromEmail,发送人名称fromName

           email.setFrom(fromEmail, fromName);

           // 验证发送人 uname:用户名,pwd:密码

           email.setAuthentication(uname, pwd);

           //设置编码

            email.setCharset(encoding);

           // 主题设置

           email.setSubject(subject);

 

           // embed the image and get the content id

           // 意思大致是指embed嵌入的是一个图片的标记,该方法返回随机生成的唯一标示字符串。

           URL url = new URL(urlPath);

           String cid = email.embed(url, urlName);

           // set the html message

           // 另外setMsg()方法在HtmlEmail中不推荐使用,相应用setHtmlMsg()setTextMsg()代替

           email.setHtmlMsg("<html> <img src=\"cid:" + cid + "\"></html>");

           // set the alternative message

           email.setTextMsg(textMsg);

           // send the email

           email.send();

       } catch (EmailException e) {

           e.printStackTrace();

       } catch (MalformedURLException e) {

           e.printStackTrace();

       }

       return true;

    }

}

 

 一切over了

分享到:
评论

相关推荐

    通过 Apache 的 Jarkata Common Email 来发送email

    Apache Jakarta Common Email 是一个强大的Java库,用于创建和发送电子邮件。这个库提供了丰富的功能,使得在Java应用程序中处理电子邮件变得更加简单。在这个项目中,我们将深入探讨如何使用Common Email库来发送...

    Java通过Apache提供的Commons Email工具类实现邮箱发送验证码

    Apache Commons Email库为Java开发者提供了一个便捷的方式来实现这个功能。本篇将深入讲解如何使用Apache Commons Email工具类来发送带有验证码的电子邮件。 首先,Apache Commons Email是Apache软件基金会的一个...

    Jarkata Common Email

    Jakarta Common Email 是 Apache 软件基金会下的一个开源项目,它为 Java 应用程序提供了一套全面的 API,使得发送、接收和处理电子邮件变得简单易行。在本文中,我们将深入探讨 Jakarta Common Email 的核心概念、...

    common email 附件发送

    `commons-email-1.2.jar`是Apache Commons Email库的一部分,它提供了一个高级接口来简化Java中的电子邮件发送。这个库包含了创建、配置和发送电子邮件的所有必要功能,包括添加附件、设置主题、正文以及处理抄送和...

    commons email 发送html邮件完整优化实例

    Apache Commons Email 是一个Java库,专门用于简化电子邮件的发送。这个库提供了丰富的API,使得开发者可以轻松地构建和发送各种类型的邮件,包括HTML格式的邮件。在这个“commons email 发送html邮件完整优化实例”...

    apache commons jar(commons所有的jar包,从官网下载提供.zip

    apache commons jar(commons所有的jar包,从官网下载提供给大家) 因为涉及jar太多,包括有src源代码,只需要3分,希望大家理解,我也是从官网花了很长时间才一个一个下完,需要的请自取。全部是zip文件,每个对应的...

    common-mail包

    在描述中提到的`commons-email-1.1-src.zip`,这是Apache Commons Email项目的源码包,它是`common-mail`的一个扩展,提供了一种更简单的方式来创建和发送电子邮件。Apache Commons Email库包含了多种实用方法,支持...

    commons-email jar

    org.apache.commons.mail org.apache.commons.mail.util org.apache.commons.mail.resolver apache commons包

    windows下Apache配置SSL安全连接.docx

    - Common Name (通常是域名或服务器的主机名) - Email Address #### 四、通过 CA 为网站服务器签署证书 1. **生成 CA 的 RSA 私钥** - 使用 OpenSSL 生成一个 1024 位的 RSA 私钥文件 `ca.key`: ```plaintext...

    最新common.apache.*.jar下载

    包括以下jar包: Attributes Beanutils Betwixt ...Email Exec FileUpload IO JCI Jelly JEXL JXPath Lang Launcher Logging Math Modeler Net Pool Primitives Proxy SCXML Transaction Validator VFS

    Apache Commons 所有包最新版本 含SRC (6/7)

    1.1-bin.zip commons-email-1.1-src.zip commons-fileupload-1.2.1-bin.zip commons-fileupload-1.2.1-src.zip commons-io-1.4-bin.zip commons-io-1.4-src.zip commons-jci-1.0-bin.zip ...

    testci-common-email:创建回购

    我们可以推测,testci-common-email库可能使用了Java的邮件API(JavaMail API)或者其他第三方库,如Apache Commons Email,来实现电子邮件的处理功能。 考虑到提供的压缩包子文件名"testci-common-email-main",这...

    apache+resin配置[定义].pdf

    1. **默认安装**:安装过程中设置Network Domain 和 Server Name 为localhost,并设置email地址。 2. **验证安装**:在浏览器中输入`http://localhost`,查看Apache的成功页面。 **安装Resin**: 1. **解压安装**:...

    commonmail

    在"common-email-1.1.jar"这个文件中,包含了Commons Email项目的1.1版本的类和方法。这个库依赖于Apache Commons Net和JavaMail API,提供了多种发送邮件的方式,包括HTML邮件、附件邮件、多部分邮件等。例如,...

    commons-lib

    9. **Email**:发送电子邮件的工具包,支持HTML邮件、附件等功能。 10. **Validator**:提供数据验证框架,可以自定义验证规则。 这些组件在实际开发中有着广泛的应用,如在构建Web应用、处理文件、网络通信、数据...

    solrj的使用

    import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.common.params.SolrParams; SolrParams params = new ModifiableSolrParams(); params.set("q", "name:张三"); // 查询条件 ...

    服务器部署1

    sudo apt-get install software-properties-common sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java8-installer ``` 接下来,为了运行Python应用,我们需要...

    大名鼎鼎的 java2s 静态网页打包下载

    大名鼎鼎的 java2s 静态网页打包下载 我只是知识的搬运工,版权归属原作者。 是全面学习java不可多得的素材,代码复制粘贴都可运行。 网友给的评论 这个网站非常好,分成三大...37. Apache Common 38. Ant 39. JUnit

    commons-dbutils-1.7.jar

    int rowsAffected = runner.update("INSERT INTO users(name, email) VALUES (?, ?)", "John Doe", "john@example.com"); ``` 四、DBUtils的实际应用场景 DBUtils适用于各种需要与数据库交互的Java应用程序,如Web...

Global site tag (gtag.js) - Google Analytics