利用java发邮件

网站发送邮件是一个常用功能,现在有相当一部分网站用户注册都需要通过Email验证合法性,而用javamail比较繁琐,apache又做了一件好事:在javamail的基础上封装java发送邮件业务,让用户可以通过简单的调用几个方法就可以实现邮件发送与接收。
  首先,这篇文章的测试环境是:jdk 1.6+MyEclipse 5.5.1 GA+javamail 1.4(在控制台测试的,所以没用到应用服务器)。
  然后在apache官网上下载Commons Email,下面是几个用Commons Email发邮件的方法。


package com.zhutou.email;
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.HtmlEmail;
import org.apache.commons.mail.MultiPartEmail;
import org.apache.commons.mail.SimpleEmail;
/**
* 用apache的Commons Email发送邮件
*
* @author www.5ipig.com/blog
*/
public class JavaMail {
/**
* 用apache的Commons Email发送不含附件的邮件
*
* @return 发送结果,是否发送成功
*/
public String sendSingleMail() {
String resultmsg = "发信失败!";
SimpleEmail email = new SimpleEmail();
email.setHostName("smtp.163.com");
try {
email.addTo("ajonjun@163.com", "ajonjun");
email.setFrom("ajonjun@163.com", "ajonjun");
// 请修改成你的邮箱账号和密码。
email.setAuthentication("username", "password");
email.setSubject("发信测试标题");
email.setMsg("This is a simple test of commons-email");
resultmsg = email.send();
if (resultmsg != null) {
resultmsg = "发送成功!";
}
} catch (EmailException e) {
e.printStackTrace();
}
return resultmsg;
}
/**
* 发送单个带附件的邮件
*
* @return 发送结果,是否发送成功
*/
public String sendAttachmentsMail() {
String resultmsg = "发信失败!";
// 创建一个附件对象
EmailAttachment attachment = new EmailAttachment();
// 设置附件的地址,可以是本机地址(包括绝对地址和相对地址),
//也可以是internet地址,如:http://www.5ipig.com/blog/attachment.php?fid=2
attachment.setPath("E:\\1.jpg");
attachment.setDisposition(EmailAttachment.ATTACHMENT);
attachment.setDescription("Picture of gaylys");
attachment.setName("gaylys");
// 创建多文本邮件对象
MultiPartEmail email = new MultiPartEmail();
email.setHostName("smtp.163.com");
try {
email.addTo("ajonjun@163.com", "ajonjun");
email.setFrom("ajonjun@163.com", "ajonjun");
// 请修改成你的邮箱账号和密码。
email.setAuthentication("username", "password");
email.setSubject("带附件的邮件");
email.setMsg("Here is the picture you wanted");
// 将附件添加到邮件
email.attach(attachment);
// 发送邮件
resultmsg = email.send();
if (resultmsg != null && !"".equals(resultmsg)) {
resultmsg = "发送成功!";
}
} catch (EmailException e) {
e.printStackTrace();
}
return resultmsg;
}
/**
* 发送html邮件
*
* @return 发送结果,是否发送成功
*/
public String sendHtmlEmail() {
String resultmsg = "发信失败!";
// 创建邮件对象
HtmlEmail email = new HtmlEmail();
email.setHostName("smtp.163.com");
try {
email.addTo("ajonjun@163.com", "ajonjun");
email.setFrom("ajonjun@163.com", "ajonjun");
// 请修改成你的邮箱账号和密码。
email.setAuthentication("username", "password");
email.setSubject("发送html邮件的测试");
// 嵌入附件地址
URL url = new URL(
"http://www.5ipig.com/blog/attachment.php?fid=2");
String cid = email.embed(url, "3D桌面");
// 设置编码格式,不设置会出现中文乱码。
email.setCharset("GB2312");
// 写入html代码
email.setHtmlMsg("3D桌面 - <img src="\" alt="" />");
// 设置替代文字
email
.setTextMsg("Your email client does not support HTML messages");
// 发送邮件
resultmsg = email.send();
if (resultmsg != null && !"".equals(resultmsg)) {
resultmsg = "发送成功!";
}
} catch (EmailException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
}
return resultmsg;
}
public static void main(String args[]) {
JavaMail mail = new JavaMail();
System.out.println(mail.sendHtmlEmail());
}
}


  java发送邮件的基本方法也就这些,当然还有群发,我看了下,Commons Email好像没提供群发的功能,不过如果你有这个需要可以自己写一个:收信人是多个,用”,”分隔,根据收信人数循环发送邮件,也就是多次调用发邮件的方法。
  如果你是按照以上步骤写的代码,却不能发送邮件,看看是不是下面的错误:
Exception in thread “main” java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream或者javax.mail.NoSuchProviderException: smtp

解决方案: JavaEE版本和JavaMail的版本不一致,请将sun公司上下载最新版本.如果还报这个错,找到myeclipse环境中的javaee.jar 包,用winrar或者其他解压缩工具打开,删除mail跟activation包,因为javaee.jar中的mail与javamail冲突。

没问题了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值