`
aqbbsxiao
  • 浏览: 46069 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

使用commons-email-1.2发邮件的一点总结

 
阅读更多
今天用到commons-email-1.2.jar来发邮件
先导入commons-email-1.2.jar包,类如下:
import org.apache.commons.mail.SimpleEmail;

public class SendEmail {

	public static void main(String args[]) {

		System.out.println("Begin Send email");
		// TODO Auto-generated method stub
		try {
			SimpleEmail email = new SimpleEmail();
			email.setHostName("mail.xxx.com.cn");
			email.addTo("xxx@xxx.com.cn", "xxx");
			email.setFrom("xxx@xxx.com.cn", "testMe");
			email.setSubject("hello");
			email.setMsg("hello");
			email.send();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}


但是却一直抛异常:
org.apache.commons.mail.EmailException: Sending the email to the following server failed : mail.xxx.com.cn:25
	at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1242)
	at org.apache.commons.mail.Email.send(Email.java:1267)
	at SendEmail.main(SendEmail.java:18)
Caused by: javax.mail.NoSuchProviderException: smtp
	at javax.mail.Session.getService(Session.java:768)
	at javax.mail.Session.getTransport(Session.java:708)
	at javax.mail.Session.getTransport(Session.java:651)
	at javax.mail.Session.getTransport(Session.java:631)
	at javax.mail.Session.getTransport(Session.java:686)
	at javax.mail.Transport.send0(Transport.java:166)
	at javax.mail.Transport.send(Transport.java:98)
	at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1232)
	... 2 more

首先是jar包的问题,因为不是只下载commons-mail的jar包,如果是jdk1.5或者1.5以下的版本,还需要下载sun的mail.jar和jaf的jar包,如果是jdk6的话只需要mail.jar就可以了。具体下载地址去sun网站自己找找就行了,
然后就是要开启邮箱的smtp服务,具体的进入邮箱进行设置就可以了。一般都很简单。

我用的是jdk1.6,所以只用导入mail.jar就行,导入mail.jar后问题又来了,
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
	at javax.mail.internet.MimeUtility.<clinit>(MimeUtility.java:1161)
	at javax.mail.internet.InternetAddress.setPersonal(InternetAddress.java:216)
	at org.apache.commons.mail.Email.createInternetAddress(Email.java:589)
	at org.apache.commons.mail.Email.addTo(Email.java:727)
	at org.apache.commons.mail.Email.addTo(Email.java:710)
	at SendEmail.main(SendEmail.java:14)


不要看到NoClassFound就以为是缺少包,如果是包的冲突,也会有这种错误的。
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
当出现以上错误时,恭喜您已经离接收邮件不远了,否则请您解决好所有的异常后再来看这个帖子。

javax.mail和javax.activation这两个包已经在javaEE5当中属于基础包了,就是JDK中自带了已经,但是里面的方法与现在外面的mail.jar和activation.jar有一些出入,所以初学者在直接copy别人代码的时候往往会出现上面的错误。
废话不多说下面是解决方法
进到

C:\myeclipse6.0\eclipse\plugins\com.genuitec.eclipse.j2eedt.core_6.0.1.zmyeclipse601200710\data\libraryset\EE_5

这个路径里,可以看到javaee.jar,用rar把这个文件打开,然后进到javax文件夹里,删除mail和activation两个文件夹(删掉就OK,不过要注意备份一下)

删掉之后运行上面的代码,经行简单的修改以后就可以实现接收邮件的功能了!

以下是163, yahoo和gmail的例子,以供参考
163和yahoo的类似,只需要改smtp服务器就行
SimpleEmail email = new SimpleEmail();
  try {
   email.setHostName("smtp.163.com"); //Yahoo的服务器地址是:smtp.mail.yahoo.com
   email.addTo("发送到的地址", "John Doe"); 
   email.setFrom("发送的邮件地址", "Mr Smith");
   email.setAuthentication("用户名", "密码");
   email.setSubject("Test message");
   email.setMsg("This is a simple test of commons-email");
   email.send();
  } catch (EmailException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

gmail跟其他的邮箱的不同之处在于它的默认端口不是普通的25,而是465,所以需要在程序中动态设置一下,设置的具体方法就是:
   email.setSSL(Boolean.TRUE); // 设定是否使用SSL
   email.setSslSmtpPort("465"); // 设定SSL端口

SimpleEmail email = new SimpleEmail();
  try {
   email.setHostName("smtp.gmail.com");
   email.setSSL(Boolean.TRUE); // 设定是否使用SSL
   email.setSslSmtpPort("465"); // 设定SSL端口
   email.addTo("发送到的地址", "John Doe"); 
   email.setFrom("发送的邮件地址", "Mr Smith");
   email.setAuthentication("用户名", "密码");
   email.setSubject("Test message");
   email.setMsg("This is a simple test of commons-email");
   email.send();
  } catch (EmailException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }


如果gmail出了这种错误基本上就是没设置端口的原因:
org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.gmail.com:25
 at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1242)
 at org.apache.commons.mail.Email.send(Email.java:1267)
 at SendEmail.main(SendEmail.java:24)
Caused by: com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. 21sm7388726ywh.46
 at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1829)
 at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1368)
 at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:886)
 at javax.mail.Transport.send0(Transport.java:191)
 at javax.mail.Transport.send(Transport.java:120)
 at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1232)
 ... 2 more


希望对大家能有所帮助
分享到:
评论

相关推荐

    用commons-email-1.2.jar实现发邮件功能

    总结,Apache Commons Email库提供了一套强大且易于使用的API,使得在Java中发送电子邮件变得简单。通过`TestCommonEMail.java`这样的示例代码,开发者可以快速上手并掌握邮件发送的核心步骤,同时根据项目需求灵活...

    activation.jar commons-email-1.2.jar mail.jar免费下载

    标题中的"activation.jar commons-email-1.2.jar mail.jar免费下载"涉及到的是Java邮件处理相关的库文件,这些在Java开发中用于实现电子邮件的发送和处理。让我们逐一解析这三个jar文件: 1. **activation.jar**:...

    mail.jar、commons-email-1.2.jar 、activation.jar下载

    "mail.jar、commons-email-1.2.jar、activation.jar下载"这个标题暗示了我们正在处理用于处理电子邮件功能的Java库。这些库对于使用Java编程语言构建邮件发送功能至关重要。 1. **JavaMail API**(mail.jar): ...

    commons-email-1.2

    commons-email-1.2commons-email-1.2commons-email-1.2commons-email-1.2commons-email-1.2commons-email-1.2commons-email-1.2commons-email-1.2

    最新commons-email-1.2.jar

    commons-email封装了邮件发送权限处理,AuthenticationFailedException错误可以解决了

    Java Mail和Commons-email发简单的邮件所用到的jar包

    使用Commons Email,开发者可以轻松地设置邮件主题、正文、收件人、发件人等信息,并能方便地添加附件。 `mail.jar`是JavaMail的主要库,包含了发送、接收邮件所需的所有核心组件。它实现了SMTP、POP3、IMAP等邮件...

    commons-email-1.2.jar/email.jar/activation.jar

    在Java编程领域,发送电子邮件是一项常见的任务,而`commons-email-1.2.jar`和`activation.jar`这两个库文件在其中扮演着至关重要的角色。Apache Commons Email是Apache Commons项目的一部分,提供了一个简单、直观...

    apache开源项目源码commons-email-1.2-src(全部高质量开发邮件的java源程序)

    apache开源项目源码commons-email-1.2-src 全部高质量开发邮件的java源程序 各种操作邮件的工具类源码,你会从中得到意想不到的效果! apache开源组织开发的开源项目源码,其优良的代码风格和高质量的源码是学习者...

    activation/commons-email/mail.jar

    3. 使用`Email`类(来自`commons-email`)创建一个邮件实例,设置发件人、收件人、主题和正文。 4. 如果需要,可以添加附件、设置优先级或者使用HTML格式的邮件内容。 5. 创建一个`MimeMessage`对象(来自`JavaMail ...

    ant发邮件所需的jar(activation.jar+javax.mail.jar+mail.jar+commons-email-1.2.jar)

    4. **commons-email-1.2.jar**:这是Apache Commons Email库,提供了一组高级API,简化了使用JavaMail发送电子邮件的过程。这个库包含了丰富的功能,如添加附件、设置HTML内容、发送多部分邮件等,使邮件发送更加...

    commons-email jar

    首先,`commons-email-1.2.jar`是Apache Commons Email项目的主库,它包含了创建和发送电子邮件所需的所有核心类和方法。Apache Commons项目是Apache软件基金会的一部分,致力于提供一系列通用的Java工具和库,以...

    commons-email-jar

    `commons-email`是Apache Commons组件之一,它的目标是为Java开发者提供一个易于使用的邮件API。这个库支持多种复杂的邮件功能,包括HTML邮件、多部分邮件、附件、SMTP身份验证、SSL/TLS加密等。 ### 2. 主要功能 ...

    common email 附件发送

    电子邮件是日常工作中常见的...总结来说,Java中的电子邮件发送涉及到多个库和API的协同工作,通过理解并熟练运用`activation.jar`、`commons-email-1.2.jar`和`mail.jar`,可以轻松地实现常见的电子邮件附件发送功能。

    JavaMail邮件发送程序所需JAR包

    JavaMail邮件发送程序所需JAR包,包含:commons-email-1.2.jar, activation.jar, mail.jar, commons-email-1.2-sources.jar, commons-email-1.2-javadoc.jar。

    OSChina 所有jar

    8 commons-email-1.2.jar 邮件发送包 9 commons-httpclient-3.1.jar HTTP客户端 10 commons-io-1.4.jar IO处理包 11 commons-lang-2.4.jar 语言处理包 12 commons-logging-1.1.1.jar 日志包 13 cos.jar 文件...

    commons_mail.jar

    使用`commons-email-1.2.jar`,开发者可以轻松地实现复杂邮件功能,例如HTML邮件、多部分邮件(包含文本和HTML版本)、添加附件、设置抄送和密送收件人等。`HtmlEmail`是Apache Commons Email库中的一个关键类,它...

    javamail 发送邮件需要的两个jar包,activation.jar和mail.jar

    2. **构建邮件**:通过`Message`类,你可以设置发件人、收件人、抄送人、主题和正文。同时,还可以添加附件、设置优先级、创建多部分消息(例如,包含文本和图片)等。 3. **发送邮件**:使用`Transport`类的`send...

    用javamail发邮件必须的三个jar包.7z

    4. **commons-email-1.2-javadoc.jar**: 这是Apache Commons Email的API文档,开发者可以通过这个文件查看关于如何使用这个库的各种方法和类的详细说明,便于开发和调试。 5. **commons-email-1.2-sources.jar**: ...

    ant发email需要jar

    要使用Ant发送邮件,我们需要依赖一些特定的JAR文件,这些文件在你提供的列表中已经包含:`mail.jar`、`activation.jar`以及`commons-email-1.2.jar`。 1. **mail.jar**: 这个JAR文件包含了JavaMail API,它是Java...

    java 发送Email 需要的包

    再者,`commons-email-1.2.jar`是Apache Commons Email项目的一部分,它为JavaMail提供了一个更高级、更易于使用的封装。Apache Commons Email提供了一些便利的类和方法,使得编写邮件发送代码更加直观。例如,你...

Global site tag (gtag.js) - Google Analytics