现在的位置: 首页 > 综合 > 正文

java 发邮件小结——commons-email

2018年01月24日 ⁄ 综合 ⁄ 共 3045字 ⁄ 字号 评论关闭

       Java开发中,对于发送邮件,Sun给出了JavaMail框架。但是这个框架调用比较复杂。现在 apache 站点有一个 jarkata/commons/email 子项目,也为我们实现了发送 Email 的功能,这个包的大小只有23K ,也就是9 个类而已。(commons-email  apache 提供的一个开源的API ,是对javamail 的封装

commons-email 主要包括SimpleEmail,MultiPartEmail,HtmlEmail,EmailAttachment 四个类。 
SimpleEmail:
 发送简单的email, 不能添加附件
MultiPartEmail:
 文本邮件,可以添加多个附件
HtmlEmail:HTML
 格式邮件,同时具有MultiPartEmail 类所有 功能
EmailAttchment:
 附件类,可以添加本地资源,也可以指定网络上资源,在发送时自动将网络上资源下载发送。

发送基本(普通)邮件:

public static void sendSimpleEmail() {
SimpleEmail email = new SimpleEmail();
email.setHostName("smtp.126.com"); // 设置发送端服务器
email.setAuthentication("test", "密码"); // 用户名和密码
email.setCharset("UTF-8"); // 设置字符集
email.setSSL(true); // gmail邮箱必须设置为true
try {
email.setFrom("test@126.com", "发件人"); // 发件人
email.addTo("abc@163.com", "收件人"); // 收件人1
// email.addTo("test@qq.com", "哈哈"); // 收件人2
// email.addCc("test@gmail.com", "test"); // 抄送
// email.addBcc("test@sina.com", "test"); // 密送
email.setSubject("测试简单邮件"); // 主题
email.setMsg("这里是测试简单邮件内容"); // 发送内容
email.send();
System.out.println("success!");
} catch (EmailException e) {
System.out.println("failure!");
e.printStackTrace();
}
}

发送文本格式,带附件邮件

public static void sendMultiPartEmail() {
MultiPartEmail email = new MultiPartEmail();
email.setHostName("smtp.126.com"); // 设置发送端服务器
email.setAuthentication("test", "密码"); // 用户名和密码
email.setCharset("UTF-8"); // 设置字符集
email.setSSL(true); // gmail邮箱必须设置为true
try {
email.setFrom("test@126.com", "发件人"); // 发件人
email.addTo("test@163.com", "收件人");// 收件人1 email.addTo("631843071@qq.com", "收件人")
email.setSubject("测试附件邮件"); // 主题
email.setMsg("这里是测试附件邮件内容"); // 发送内容

setAttach(email, Arrays.asList("d:/test.js", "d:/test1.js")); // 设置附件
email.send();
System.out.println("success!");
} catch (EmailException e) {
System.out.println("failure!");
e.printStackTrace();
}
}

发送HTML格式带附件邮件:

public static void sendHtmlEmail() {
HtmlEmail email = new HtmlEmail();
email.setHostName("smtp.126.com"); // 设置发送端服务器
email.setAuthentication("test", "密码"); // 用户名和密码
email.setCharset("UTF-8"); // 设置字符集
email.setSSL(true); // gmail邮箱必须设置为true
try {
email.setFrom("test@126.com", "发件人"); // 发件人
email.addTo("test@163.com", "收件人");
email.setSubject("测试HTML邮件"); // 主题

URL url = new URL("http://www.apache.org/images/asf_logo_wide.gif");
String cid = email.embed(url, "Apache logo");
email.setHtmlMsg("<html>这里是测试HTML邮件内容---<img src=\"cid:" + cid
+ "\"></html>"); // 发送内容

setAttach(email, Arrays.asList("d:/test.js", "d:/test1.js")); // 设置附件
email.send();
System.out.println("success!");
} catch (Exception e) {
System.out.println("failure!");
e.printStackTrace();
}
}

//设置附件

public static void setAttach(MultiPartEmail email, List<String> list)
throws EmailException {
for (String aPath : list) {
String aName = aPath.substring(aPath.lastIndexOf("/") + 1, aPath
.length());
EmailAttachment attach = new EmailAttachment();
attach.setName(aName); // 设置附件名
attach.setDisposition(EmailAttachment.ATTACHMENT);
attach.setDescription("attach");

attach.setPath(aPath); // 设置附件路径
// attach.setURL(new URL(
// "http://www.apache.org/images/asf_logo_wide.gif"));
email.attach(attach);
}
}


注:1、一定要开启邮箱的smtp服务,具体的进入邮箱进行设置就可以了。一般都很简单。

2、gmail跟其他的邮箱的不同之处在于它的默认端口不是普通的25,而是465,所以需要在程序中动态设置一下,设置的具体方法就是:

   email.setSSL(Boolean.TRUE); // 设定是否使用SSL

   email.setSslSmtpPort("465"); // 设定SSL端口

【上篇】
【下篇】

抱歉!评论已关闭.