使用Java代码发送邮件的工具类:
废话不多说直接上代码:
package org.springblade.utils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.HtmlEmail;
import org.apache.commons.mail.MultiPartEmail;
import java.io.File;
public class EmailUtil {
private static final Log log = LogFactory.getLog(EmailUtil.class);
private static final String MAIL_HOST = "邮箱服务的host(网上可以查到)";
private static final String MAIL_USERNAME = "你的邮箱地址";
private static final String MAIL_PASSWORD = "你的邮箱密钥(注意不是你的邮箱密码)";
private static final String MAIL_FROMNAME = "一般是你的姓名";
private static final int MAIL_PORT = 587;
public static void sendHtmlEmail(String addr, String subject, String htmlMsg) {
try {
HtmlEmail email = new HtmlEmail();
email.setHostName(MAIL_HOST);
email.setSmtpPort(MAIL_PORT);
email.setAuthentication(MAIL_USERNAME, MAIL_PASSWORD);
email.addTo(addr, "reciever");
email.setFrom(MAIL_USERNAME, MAIL_FROMNAME);
email.setSubject(subject);
email.setHtmlMsg(htmlMsg);
email.setCharset("utf-8");
log.debug("准备给[" + addr + "]发送邮件,主题[" + subject + "]内容[" + htmlMsg + "]");
email.send();
log.debug("邮件发送成功,收件人: " + addr + ", 邮件内容: " + htmlMsg);
} catch (Exception e) {
log.error("发送邮件给: " + addr + "时出现了异常: " + e.getMessage());
e.printStackTrace();
}
}
public static void sendMultipartEmail(String[] addrs, String subject, String msg, String... filePath) {
StringBuffer addressTo = new StringBuffer();
try {
MultiPartEmail email = new MultiPartEmail();
email.setHostName(MAIL_HOST);
email.setSmtpPort(MAIL_PORT);
email.setAuthentication(MAIL_USERNAME, MAIL_PASSWORD);
if (addrs != null && addrs.length > 0) {
for (String addr : addrs) {
addressTo.append(addr + ", ");
email.addTo(addr, "reciever");
}
}
email.setFrom(MAIL_USERNAME, MAIL_FROMNAME);
email.setSubject(subject);
email.setMsg(msg);
email.setCharset("utf-8");
if (filePath != null && filePath.length > 0) {
for (String path : filePath) {
File f = new File(path);
EmailAttachment attachment = new EmailAttachment();
attachment.setPath(path);
attachment.setDisposition(EmailAttachment.ATTACHMENT);
attachment.setDescription(f.getName());
attachment.setName(f.getName());
email.attach(attachment);
}
}
log.debug("准备给[" + addressTo.toString() + "]发送邮件,主题[" + subject + "]内容[" + msg + "]");
email.send();
log.info("邮件发送成功,收件人: " + addressTo.toString() + ", 邮件内容: " + msg);
} catch (Exception e) {
log.info("发送邮件给: " + addressTo.toString() + "时出现了异常: " + e.getMessage());
e.printStackTrace();
}
}
public static void sendMultipartEmail(Object[] addrs, String subject, String msg) {
StringBuffer addressTo = new StringBuffer();
try {
MultiPartEmail email = new MultiPartEmail();
email.setHostName(MAIL_HOST);
email.setSmtpPort(MAIL_PORT);
email.setAuthentication(MAIL_USERNAME, MAIL_PASSWORD);
if (addrs != null && addrs.length > 0) {
for (Object addr : addrs) {
addressTo.append(addr + ", ");
email.addTo(String.valueOf(addr), "reciever");
}
}
email.setFrom(MAIL_USERNAME, MAIL_FROMNAME);
email.setSubject(subject);
email.setMsg(msg);
email.setCharset("utf-8");
log.debug("准备给[" + addressTo.toString() + "]发送邮件,主题[" + subject + "]内容[" + msg + "]");
email.send();
log.info("邮件发送成功,收件人: " + addressTo.toString() + ", 邮件内容: " + msg);
} catch (Exception e) {
log.info("发送邮件给: " + addressTo.toString() + "时出现了异常: " + e.getMessage());
e.printStackTrace();
}
}
}
测试demo:
@GetMapping("/sendEmail")
@ApiOperationSupport(order = 3)
@ApiOperation(value = "发送邮件", notes = "发送邮件")
public R<String> sendEmail() {
try {
String address = "3303298665@qq.com";
String subject = "测试主题!";
String message = "测试内容!";
EmailUtil.sendHtmlEmail(address, subject, message);
return R.data("发送成功!");
} catch (Exception e) {
e.printStackTrace();
return R.fail("发送失败!");
}
}
以QQ邮箱为例:
private static final String MAIL_HOST = "smtp.qq.com";
private static final String MAIL_USERNAME = "xxx@qq.com";
private static final String MAIL_PASSWORD = "xhgjqsliwidyhbji";
private static final String MAIL_FROMNAME = "健康管理系统";
private static final int MAIL_PORT = 587;