Java HtmlEmail 邮件发送的简单实现代码

网友投稿 450 2023-07-15


Java HtmlEmail 邮件发送的简单实现代码

java 项目中常常回遇到发送邮件

Java 发送邮件有几种,今天先给大家介绍用 HtmlEmail 来发送邮件,我这里是用 Maven 来搭建的

HtmlEmail 可以抄带HTML

首先 需要导入jar 包

org.apache.commons

commons-email

1.4

然后我们来建立一个发送邮件的 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 to;

// 抄送人的邮箱(key)和名称(value)

private Map cc;

// 秘密抄送人的邮箱(key)和名称(value)

private Map 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 HSXnhsmqsetReceiverName(String receiverName) {

this.receiverName = receiverName;

}

public Map getTo() {

retuHSXnhsmqrn to;

}

public void setTo(Map to) {

this.to = to;

}

public Map getCc() {

return cc;

}

public void setCc(Map cc) {

this.cc = cc;

}

public Map getBcc() {

return bcc;

}

public void setBcc(Map 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 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 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 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 = " ";

html += "

html += "

html += "

html += "

html += "

html += "

下面是通过该协议可以创建一个指向电子邮件地址的超级链接,通过该链接可以在Internet中发送电子邮件

html += "send mail";

html += "

html += "";

mail.setMessage(html);

new MailUtil().send(mail);

}

赶紧登录邮箱看看吧

来看看这里 主题 内容,发送人名称和收件人名称是否和代码写的一样呢,如果一样的话,恭喜你成功啦

到这,其实发送邮件就算完了!!!

这里在啰嗦最后一个小知识点 mailto

mailto: 通过该协议可以创建一个指向电子邮件地址的超级链接,通过该链接可以在Internet中发送电子邮件

我们点击 send mail 会打开你邮件客户端一个发送界面,如果你有写抄带信息,也会给你带上


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SSH框架网上商城项目第19战之订单信息级联入库以及页面缓存问题
下一篇:SSH框架网上商城项目第17战之购物车基本功能
相关文章

 发表评论

暂时没有评论,来抢沙发吧~