http://blog.163.com/sender@yeah/blog/static/127950071201001943836422/
^^
mail.jar下载 349k
<!-- 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邮箱问题处理,如果这些都知道,还是看Apache的userguide.html,比我的简明多了
参考文档:http://commons.apache.org/email/userguide.html
运行程序截图:
真是战况喜人啊,第一次运行居然全部ok。
可点击进去却发现邮件中设置了中文的地方都出现了乱码
简单邮件测试中消息“你好,郵件測試,看到這,說明已經成功了”出现为?????
但到带本地附件邮件中:附件名称为中文,没有显示,显示为 No name 2.jpg,但是消息 “你好,郵件測試,看到這,說明已經成功了”却又正常显示出来,纠结!!
Google一下,发现已经有很多帖子来解决它,随便挑了个,就ok了,就是给它设置编码
//设置编码
email.setCharset("UTF-8");
附件Attachment没有setCharset方法,但可以用
MimeUtility.encodeText(String str)来转换
简单邮件测试:
带本地附件的邮件
带网络附件的邮件
HTML EMAIL
需要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,但这得copy到blog中就写成这样了
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 如何要添加多个附件,最好建立一个JavaBean:Attachment {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、网络附件添加示例,参考Apache的UserGuide,
// 意思大致是指添加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 Jakarta Common Email 是一个强大的Java库,用于创建和发送电子邮件。这个库提供了丰富的功能,使得在Java应用程序中处理电子邮件变得更加简单。在这个项目中,我们将深入探讨如何使用Common Email库来发送...
Apache Commons Email库为Java开发者提供了一个便捷的方式来实现这个功能。本篇将深入讲解如何使用Apache Commons Email工具类来发送带有验证码的电子邮件。 首先,Apache Commons Email是Apache软件基金会的一个...
Jakarta Common Email 是 Apache 软件基金会下的一个开源项目,它为 Java 应用程序提供了一套全面的 API,使得发送、接收和处理电子邮件变得简单易行。在本文中,我们将深入探讨 Jakarta Common Email 的核心概念、...
`commons-email-1.2.jar`是Apache Commons Email库的一部分,它提供了一个高级接口来简化Java中的电子邮件发送。这个库包含了创建、配置和发送电子邮件的所有必要功能,包括添加附件、设置主题、正文以及处理抄送和...
Apache Commons Email 是一个Java库,专门用于简化电子邮件的发送。这个库提供了丰富的API,使得开发者可以轻松地构建和发送各种类型的邮件,包括HTML格式的邮件。在这个“commons email 发送html邮件完整优化实例”...
apache commons jar(commons所有的jar包,从官网下载提供给大家) 因为涉及jar太多,包括有src源代码,只需要3分,希望大家理解,我也是从官网花了很长时间才一个一个下完,需要的请自取。全部是zip文件,每个对应的...
在描述中提到的`commons-email-1.1-src.zip`,这是Apache Commons Email项目的源码包,它是`common-mail`的一个扩展,提供了一种更简单的方式来创建和发送电子邮件。Apache Commons Email库包含了多种实用方法,支持...
org.apache.commons.mail org.apache.commons.mail.util org.apache.commons.mail.resolver apache commons包
- Common Name (通常是域名或服务器的主机名) - Email Address #### 四、通过 CA 为网站服务器签署证书 1. **生成 CA 的 RSA 私钥** - 使用 OpenSSL 生成一个 1024 位的 RSA 私钥文件 `ca.key`: ```plaintext...
包括以下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
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库可能使用了Java的邮件API(JavaMail API)或者其他第三方库,如Apache Commons Email,来实现电子邮件的处理功能。 考虑到提供的压缩包子文件名"testci-common-email-main",这...
1. **默认安装**:安装过程中设置Network Domain 和 Server Name 为localhost,并设置email地址。 2. **验证安装**:在浏览器中输入`http://localhost`,查看Apache的成功页面。 **安装Resin**: 1. **解压安装**:...
在"common-email-1.1.jar"这个文件中,包含了Commons Email项目的1.1版本的类和方法。这个库依赖于Apache Commons Net和JavaMail API,提供了多种发送邮件的方式,包括HTML邮件、附件邮件、多部分邮件等。例如,...
9. **Email**:发送电子邮件的工具包,支持HTML邮件、附件等功能。 10. **Validator**:提供数据验证框架,可以自定义验证规则。 这些组件在实际开发中有着广泛的应用,如在构建Web应用、处理文件、网络通信、数据...
import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.common.params.SolrParams; SolrParams params = new ModifiableSolrParams(); params.set("q", "name:张三"); // 查询条件 ...
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 静态网页打包下载 我只是知识的搬运工,版权归属原作者。 是全面学习java不可多得的素材,代码复制粘贴都可运行。 网友给的评论 这个网站非常好,分成三大...37. Apache Common 38. Ant 39. JUnit
int rowsAffected = runner.update("INSERT INTO users(name, email) VALUES (?, ?)", "John Doe", "john@example.com"); ``` 四、DBUtils的实际应用场景 DBUtils适用于各种需要与数据库交互的Java应用程序,如Web...