Java HtmlEmail 邮件发送的简单实现代码
程序员文章站
2024-03-12 08:47:08
java 项目中常常回遇到发送邮件
java 发送邮件有几种,今天先给大家介绍用 htmlemail 来发送邮件,我这里是用 maven 来搭建的
htmlemail...
java 项目中常常回遇到发送邮件
java 发送邮件有几种,今天先给大家介绍用 htmlemail 来发送邮件,我这里是用 maven 来搭建的
htmlemail 可以抄带html
首先 需要导入jar 包
<dependency> <groupid>org.apache.commons</groupid> <artifactid>commons-email</artifactid> <version>1.4</version> </dependency>
然后我们来建立一个发送邮件的 mail 类 javabean
public class mail implements serializable{ private static final long serialversionuid = -6390720891150157552l; public static final string encodeing = "utf-8"; // 服务器地址 private string host; // 发件人的邮箱 private string sender; // 发件人昵称 private string name; // 账号 private string username; // 密码 private string password; // 收件人的邮箱 private string receiver; // 收件人的名称 private string receivername; // 收件人的邮箱(key)和名称(value) private map<string, string> to; // 抄送人的邮箱(key)和名称(value) private map<string, string> cc; // 秘密抄送人的邮箱(key)和名称(value) private map<string, string> bcc; // 主题 private string subject; // 信息(支持html) private string message; public string gethost() { return host; } public void sethost(string host) { this.host = host; } public string getsender() { return sender; } public void setsender(string sender) { this.sender = sender; } public string getreceiver() { return receiver; } public void setreceiver(string receiver) { this.receiver = receiver; } public string getname() { return name; } public void setname(string name) { this.name = name; } public string getusername() { return username; } public void setusername(string username) { this.username = username; } public string getpassword() { return password; } public void setpassword(string password) { this.password = password; } public string getsubject() { return subject; } public void setsubject(string subject) { this.subject = subject; } public string getmessage() { return message; } public void setmessage(string message) { this.message = message; } public string getreceivername() { return receivername; } public void setreceivername(string receivername) { this.receivername = receivername; } public map<string, string> getto() { return to; } public void setto(map<string, string> to) { this.to = to; } public map<string, string> getcc() { return cc; } public void setcc(map<string, string> cc) { this.cc = cc; } public map<string, string> getbcc() { return bcc; } public void setbcc(map<string, string> bcc) { this.bcc = bcc; } }
然后再来创建一个发送邮件的工具类 mailutil
public class mailutil { public boolean send(mail mail){ htmlemail email = new htmlemail(); try { // 这里是smtp发送服务器的名字:163的如下:"smtp.163.com" email.sethostname(mail.gethost()); // 字符编码集的设置 email.setcharset(mail.encodeing); // 发送人的邮箱 email.setfrom(mail.getsender(), mail.getname()); // 如果需要认证信息的话,设置认证:用户名-密码。分别为发件人在邮件服务器上的注册名称和密码 email.setauthentication(mail.getusername(), mail.getpassword()); // 设置收件人信息 setto(email, mail); // 设置抄送人信息 setcc(email, mail); // 设置密送人信息 setbcc(email, mail); // 要发送的邮件主题 email.setsubject(mail.getsubject()); // 要发送的信息,由于使用了htmlemail,可以在邮件内容中使用html标签 email.sethtmlmsg(mail.getmessage()); // 发送 email.send(); if (log.isdebugenabled()) { log.info(mail.getsender() + " 发送邮件到 " + mail.getreceiver()); } return true; } catch (exception e) { e.printstacktrace(); log.info(mail.getsender() + " 发送邮件到 " + mail.getreceiver() + " 失败"); return false; } } /** * 设置收件人信息 * * @param email * @param mail * @throws emailexception */ private void setto(htmlemail email, mail mail) throws emailexception{ // 收件人不为空 if (stringutils.isnotempty(mail.getreceiver())) { // 收件人名称不为空 if (stringutils.isnotempty(mail.getreceivername())) { email.addto(mail.getreceiver(), mail.getreceivername()); } else { email.addto(mail.getreceiver()); } } // 收件人 map 不为空 if (mail.getto() != null) { for (map.entry<string, string> entry : mail.getto().entryset()) { // 收件人名称不为空 if (stringutils.isnotempty(entry.getvalue())) { email.addto(entry.getkey(), entry.getvalue()); } else { email.addto(entry.getkey()); } } } } /** * 设置抄送人信息 * * @param email * @param mail * @throws emailexception */ private void setcc(htmlemail email, mail mail) throws emailexception{ // 抄送人 map 不为空 if (mail.getcc() != null) { for (map.entry<string, string> entry : mail.getcc().entryset()) { // 抄送人名称不为空 if (stringutils.isnotempty(entry.getvalue())) { email.addcc(entry.getkey(), entry.getvalue()); } else { email.addcc(entry.getkey()); } } } } /** * 设置密送人信息 * * @param email * @param mail * @throws emailexception */ private void setbcc(htmlemail email, mail mail) throws emailexception{ // 密送人 map 不为空 if (mail.getbcc() != null) { for (map.entry<string, string> entry : mail.getbcc().entryset()) { // 密送人名称不为空 if (stringutils.isnotempty(entry.getvalue())) { email.addbcc(entry.getkey(), entry.getvalue()); } else { email.addbcc(entry.getkey()); } } } } }
写到这里,大概也就差不多了,万里长征只有最后一步了
测试,测试,测试
这里编写一个 junit 方法来测试
@test public void sendmail(){ mail mail = new mail(); // 设置邮件服务器 mail.sethost("smtp.exmail.qq.com"); // 发件人邮件地址 mail.setsender("chenhao@kezhanbang.cn"); // 发件人名称 mail.setname("java.小学生"); // 登录账号,一般都是和邮箱名一样吧 mail.setusername("chenhao@kezhanbang.cn"); // 发件人邮箱的登录密码 mail.setpassword("xxxxxxxx"); // 接收人 mail.setreceiver("huntertochen@163.com"); mail.setreceivername("我要女票"); mail.setsubject("万里长征最后一步测试"); string html = "<!doctype html>"; html += "<html><head><meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">"; html += "<title>insert title here</title>"; html += "</head><body>"; html += "<div style=\"width:600px;height:400px;margin:50px auto;\">"; html += "<h1>我来看看邮件是否发送成功呢</h1><br/><br/>"; html += "<p>下面是通过该协议可以创建一个指向电子邮件地址的超级链接,通过该链接可以在internet中发送电子邮件</p><br/>"; html += "<a href=\"mailto:huntereagle@foxmail.com?subject=test&cc=huntertochen@163.com&body=use mailto sample\">send mail</a>"; html += "</div>"; html += "</body></html>"; mail.setmessage(html); new mailutil().send(mail); }
赶紧登录邮箱看看吧
来看看这里 主题 内容,发送人名称和收件人名称是否和代码写的一样呢,如果一样的话,恭喜你成功啦
到这,其实发送邮件就算完了!!!
这里在啰嗦最后一个小知识点 mailto
mailto: 通过该协议可以创建一个指向电子邮件地址的超级链接,通过该链接可以在internet中发送电子邮件
我们点击 send mail 会打开你邮件客户端一个发送界面,如果你有写抄带信息,也会给你带上
以上这篇java htmlemail 邮件发送的简单实现代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。