3gipnet 发表于 2017-1-13 09:21:19

关于使用Apache 的common-email-1.2.jar 包写发送Email

  前段时间有个哥们问我,发送Java发送邮件,总是发送不成功,想让我帮忙看看。我以前用.NET的时候写过发送邮件,做了些整理,现在把用java发送邮件的方法也放在这里,仅供参考。
  首先是准备阶段,在项目中需要引入:activation-1.1.jar、mail-1.4.jar、commons-email-1.2.jar。如果使用的是J2EE5的,需要找到javaee.jar,在MyEclipse中,用压缩工具打开删除mail包和activation包,如果是jar包,直接删除mail.jar和activation.jar,删除之前先做备份哦。之所以删除是因为apache 下的activation.jar 和mail-1.4.jar 和sun内置的那两个不一致,如果不删除会出现:Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStreamat javax.mail.internet.MimeUtility.<clinit>(MimeUtility.java:1161)at javax.mail.internet.InternetAddress.setPersonal(InternetAddress.java:196)at org.apache.commons.mail.Email.createInternetAddress(Email.java:596)at org.apache.commons.mail.Email.setFrom(Email.java:668)at com.hhwy.email.EmailSend.main(EmailSend.java:33)
  下面将测试发送邮件代码给大家晒一下:
  package com.hhwy.email;import org.apache.commons.mail.Email;import org.apache.commons.mail.SimpleEmail;/**发邮件* 创建日期:2011-3-9* <br />Description:对本文件的详细描述,原则上不能少于50字* @author ZHK* @mender:(文件的修改者,文件创建者之外的人)* @version 1.0* Remark:认为有必要的其他信息*/public class EmailSend {public static void main(String[] args) throws Exception {Email email = new SimpleEmail();email.setCharset("UTF-8");email.setSSL(true);/*安全性*/email.setHostName("smtp.gmail.com");/* Gmail POP 服务器 */email.setSmtpPort(587);/* 服务器端口号 */email.setFrom("******@gmail.com", "****", "UTF-8");email.addTo("*******@qq.com");email.setMsg("Hello World");/* 消息 */email.setAuthentication("*****0214@gmail.com", "****");/* 登录票据即:发送邮件的用户名和密码 */email.send();}}
  如果还不成功,你在检查下你的邮箱是不是开启了POP3和SMTP的服务。
  想测试其他的邮件服务器的同志可以参考我的System.Net.Mail 发送邮件 SMTP协议之二【常用邮箱的SMTP的配置】来设置端口号。
  这个仅仅是简单的发邮件的例子,更多功能自己来好好改进吧
页: [1]
查看完整版本: 关于使用Apache 的common-email-1.2.jar 包写发送Email