var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-20738293-1']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script')"/>
jutleo
欢迎走进有风的地方~~
posts - 63,  comments - 279,  trackbacks - 0

 

今天在Apache网站上下载commons-lang jar文件时突然看到commons-email-1.1.jar这个项目jar文件,看了看user guide确实比JDK提供的好多了,简单的几行代码就实现了发邮件的功能,以前实现过一个纯JavaMail带附件发邮件功能,代码复杂不说,现在回过头来都懒得看(主要是WEB项目注释少)。

    贴上TEST代码看看,简单、清晰。只要稍加修改(邮件服务器地址、名称、密码)就可以了
 

简单邮件的发送:

package com.bulktree.mail;

import java.util.Date;

import org.apache.commons.mail.EmailException;

import org.apache.commons.mail.SimpleEmail;

publicclass SimpleMailTest {

    publicstaticvoid main(String[] args) throws EmailException {

       SimpleEmail email = new SimpleEmail();

       //设置发送主机的服务器地址

       email.setHostName("smtp.163.com");

       //设置收件人邮箱

       email.addTo("bulktree@126.com","bulktree");

       //发件人邮箱

       email.setFrom("bulktree@163.com", "bulktree");

       //如果要求身份验证,设置用户名、密码,分别为发件人在邮件服务器上注册的用户名和密码

       email.setAuthentication("bulktree", "123456");

       //设置邮件的主题

       email.setSubject("Hello, This is My First Email Application");

       //邮件正文消息

       email.setMsg("I am bulktree This is JavaMail Application");

       email.send();

       System.out.println("The SimpleEmail send sucessful!!!");

    }

}

带附件邮件发送:

package com.bulktree.mail;

import java.net.MalformedURLException;

import java.net.URL;

import org.apache.commons.mail.EmailAttachment;

import org.apache.commons.mail.EmailException;

import org.apache.commons.mail.MultiPartEmail;

publicclass AttachmentMailTest {

    publicstaticvoid main(String[] args) throws EmailException, MalformedURLException {

//     创建一个Email附件

       EmailAttachment emailattachment = new EmailAttachment();

       emailattachment.setPath("/biao_05.jpg");

//     emailattachment.setURL(new URL("http://www.blogjava.net/bulktree/picture/bulktree.jpg"));

       emailattachment.setDisposition(EmailAttachment.ATTACHMENT);

       emailattachment.setDescription("This is Smile picture");

       emailattachment.setName("bulktree");

//     创建一个email

       MultiPartEmail multipartemail = new MultiPartEmail();

       multipartemail.setHostName("smtp.163.com");

       multipartemail.addTo("bulktree@126.com", "bulktree");

       multipartemail.setFrom("bulktree@163.com", "bulktree");

       multipartemail.setAuthentication("bulktree", "123456");

       multipartemail.setSubject("This is a attachment Email");

       multipartemail.setMsg("this a attachment Eamil Test");

       //添加附件

       multipartemail.attach(emailattachment);

       //发送邮件

       multipartemail.send();

      

       System.out.println("The attachmentEmail send sucessful!!!");

    }

}

posted on 2008-04-07 09:47 凌晨风 阅读(24406) 评论(16)  编辑  收藏 所属分类: Java学习笔记

FeedBack:
# re: 用commons-email-1.1.jar实现发邮件功能:
2008-04-07 11:03 | Unmi
其实也 JDK 本身没有提供发邮件的功能,JavaMail 是 J2ee 应具有的。
用 commons-email 发邮件也是一样的,要注意发送中文时的乱码问题。

试着在英文系统环境下发带中文的标题和内容,commons-email 提供了相应的方法来设置字符集的。  回复  更多评论
  
# re: 用commons-email-1.1.jar实现发邮件功能:[未登录]
2008-04-07 14:52 | samad
好,我试试看。。。。  回复  更多评论
  
# re: 用commons-email-1.1.jar实现发邮件功能:
2008-04-07 15:01 | xdcsoft
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream

我试了,不知道是不是jdk版本问题?
  回复  更多评论
  
# re: 用commons-email-1.1.jar实现发邮件功能:
2008-04-07 15:03 | xdcsoft
我用的是6.0野马,我看啦mail.jar下有这个类啊
怎么就报java.lang.NoClassDefFoundError  回复  更多评论
  
# re: 用commons-email-1.1.jar实现发邮件功能:
2008-04-07 19:18 | 凌晨风
运行本例子程序需要commons-email-1.1.jar和mail.jar这两个包!  回复  更多评论
  
# re: 用commons-email-1.1.jar实现发邮件功能:
2008-04-10 20:43 | taijh999
运行本例子程序需要commons-email-1.1.jar和mail.jar这两个包!

非常好用,谢谢楼主的分享

  回复  更多评论
  
# re: 用commons-email-1.1.jar实现发邮件功能:
2008-04-19 15:48 | 老太
确实很好用。前两天折腾javamail,真花时间。  回复  更多评论
  
# re: 用commons-email-1.1.jar实现发邮件功能:
2008-05-02 15:40 | jezz
那個mail.jar在哪找啊?我的JDK1.5不帶啊!  回复  更多评论
  
# re: 用commons-email-1.1.jar实现发邮件功能:
2008-05-02 20:46 | 凌晨风
@jezz
www.apache.org上不是有吗?  回复  更多评论
  
# re: 用commons-email-1.1.jar实现发邮件功能:[未登录]
2008-05-12 10:39 | swl
如果我的
email.setHostName("smtp.163.com");
email.addTo("bulktree@126.com","bulktree");
email.setFrom("bulktree@163.com", "bulktree");
email.setAuthentication("bulktree", "123456");
email.setSubject("Hello, This is My First Email Application");
email.setMsg("I am bulktree This is JavaMail Application");
email.send();
这些信息都要从数据库中取到应该怎么做?(具体讲解下)

  回复  更多评论
  
# re: 用commons-email-1.1.jar实现发邮件功能:
2009-01-09 15:16 | sds
Exception in thread "main" org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.qq.com:25
at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1138)
at org.apache.commons.mail.Email.send(Email.java:1163)
at com.rocwing.comm.SimpleMailTest.main(SimpleMailTest.java:39)
Caused by: javax.mail.AuthenticationFailedException
at javax.mail.Service.connect(Service.java:306)
at javax.mail.Service.connect(Service.java:156)
at javax.mail.Service.connect(Service.java:105)
at javax.mail.Transport.send0(Transport.java:168)
at javax.mail.Transport.send(Transport.java:98)
at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1128)
... 2 more  回复  更多评论
  
# re: 用commons-email-1.1.jar实现发邮件功能:[未登录]
2009-02-26 14:42 | cn-done
还需要两个额外的包mail.jar,activation.jar,这两个包可以在j2ee1.4里面找到  回复  更多评论
  
# re: 用commons-email-1.1.jar实现发邮件功能:[未登录]
2009-03-03 10:47 | cn-done
确实不错 但是不晓得大家遇到 发送中文、日文文件名的附件时,出现的文件名乱码问题没?
  回复  更多评论
  
# re: 用commons-email-1.1.jar实现发邮件功能:
2009-03-30 14:31 | qqqq
@凌晨风
  回复  更多评论
  
# re: 用commons-email-1.1.jar实现发邮件功能:
2009-05-19 10:15 | 676
Sending the email to the following server failed : smtp.163.com:25


jdk1.6 tomcat6.0


使用commons-email-1.1.jar出错



程序:


package javamial;

import java.util.Date;

import org.apache.commons.mail.EmailException;

import org.apache.commons.mail.SimpleEmail;

public class Sendmail {


public void sendMain(){

SimpleEmail email = new SimpleEmail();

//设置发送主机的服务器地址

email.setHostName("smtp.163.com");

//设置收件人邮箱

try {
email.addTo("lujianfei333@sina.com","bulktree");
} catch (EmailException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

//发件人邮箱

try {
email.setFrom("lujianfei33@163.com", "bulktree");
} catch (EmailException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

//如果要求身份验证,设置用户名、密码,分别为发件人在邮件服务器上注册的用户名和密码

email.setAuthentication("lujianfei33", "6227985");

//设置邮件的主题

email.setSubject("Hello, This is My First Email Application");

//邮件正文消息

try {
email.setMsg("I am bulktree This is JavaMail Application");
} catch (EmailException e) {
e.printStackTrace();
}

try {
email.send();
} catch (EmailException e) {
e.printStackTrace();
}
}

}
  回复  更多评论
  
# re: 用commons-email-1.1.jar实现发邮件功能:
2011-01-07 17:33 | afra.liu
jisdjl fjdshfclkhflshfsfcd  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 

<2008年4月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

常用链接

留言簿(11)

我参与的团队

随笔分类

随笔档案

文章分类

文章档案

新闻分类

新闻档案

收藏夹

围脖

最新随笔

搜索

  •  

最新评论

阅读排行榜

评论排行榜