发送邮件的工具类以及发送邮件的示例代码,支持发送html标签,和发送附件。依赖commons-email和mail两个jar包。
/** * 发送邮件Util */ public final class MailUtil { //发送邮件的主机 private static String mailServerHost = "smtp.126.com"; //发件人邮箱 private static String mailSenderAddress = "发件邮箱地址@126.com"; //发件人昵称 private static String mailSenderNick = "发件人昵称"; //发件人使用的账号 private static String mailSenderUsername = "发件邮箱地址@126.com"; //登陆发件主机的密码(或授权码) private static String mailSenderPassword = "授权码"; /** * 发送 邮件方法 (Html格式,支持附件) * * @return void */ public static final boolean sendEmail(MailInfo mailInfo) { try { HtmlEmail email = new HtmlEmail(); // 配置发送邮件的主机 email.setHostName(mailServerHost); // 配置发送者地址和昵称 email.setFrom(mailSenderAddress,mailSenderNick); // 配置用于登陆发送邮件主机的账号和登陆密码(或授权码) email.setAuthentication(mailSenderUsername,mailSenderPassword); // 配置邮件使用的字符集 email.setCharset("UTF-8"); // 设置启用SSL连接 email.setSSLOnConnect(true); //设置邮件主题 email.setSubject(mailInfo.getSubject()); //设置邮件内容 email.setHtmlMsg(mailInfo.getContent()); //设置当邮件客户端不能显示HTML标签时的提示语句 email.setTextMsg("您的邮件客户端不支持HTML标签(Your email client does not support HTML messages)"); // 添加附件 List<EmailAttachment> attachments = mailInfo.getAttachments(); if (!attachments.isEmpty()) { for (EmailAttachment emailAttachment : attachments) { email.attach(emailAttachment); } } // 添加收件人 Set<String> toAddress = mailInfo.getToAddress(); if (!toAddress.isEmpty()) { System.out.print("收件人:"); for (String string : toAddress) { email.addTo(string); System.out.print(string+" "); } System.out.println(); } // 添加抄送人 Set<String> ccAddress = mailInfo.getCcAddress(); if (!ccAddress.isEmpty()) { for (String string : ccAddress) { email.addCc(string); } } //发送邮件 email.send(); System.out.println("邮件发送成功!"); return true; } catch (Exception e) { e.printStackTrace(); } return false; } /** * 根据邮件主题和收件人,创建一封邮件对象 * @param subject 邮件主题 * @param toAddress 收件人 * @return */ public static final MailInfo createEmail(String subject,String toAddress) { return new MailInfo(subject,toAddress); } /** * 封装一封邮件信息的类 */ public static class MailInfo { // 收件人 private Set<String> toAddress = new HashSet<>(); // 抄送人地址 private Set<String> ccAddress = new HashSet<>(); // 附件信息 private List<EmailAttachment> attachments = new ArrayList<>(); // 邮件主题 private String subject; // 邮件的文本内容 private StringBuffer content = new StringBuffer(); private MailInfo(String subject,String toAddress) { this.subject = subject; this.toAddress.add(toAddress.trim()); } /** * 添加收件人 * @param toAddress */ public void addToAddress(String... toAddress) { for (String string : toAddress) { this.toAddress.add(string.trim()); } } /** * 添加抄送人 * @param ccAddress */ public void addCcAddress(String... ccAddress) { for (String string : ccAddress) { this.ccAddress.add(string.trim()); } } /** * 添加本地文件为附件 * @param aPath:附件路径 * @param aName:附件名字 * @param description:附件描述 */ public void addAttachment(String aPath,String aName,String description) { EmailAttachment attachment = new EmailAttachment(); attachment.setDisposition(EmailAttachment.ATTACHMENT); attachment.setName(aName); attachment.setPath(aPath); attachment.setDescription(description); this.attachments.add(attachment); } /** * 添加远程文件为附件 * @param aUrl:附件资源的路径 * @param aName:附件的名字 * @param description:附件的描述 */ public void addAttachment(URL aUrl,String aName,String description) { EmailAttachment attachment = new EmailAttachment(); attachment.setDisposition(EmailAttachment.ATTACHMENT); attachment.setName(aName); attachment.setURL(aUrl); attachment.setDescription(description); this.attachments.add(attachment); } public void setSubject(String subject) { this.subject = subject; } public void addContent(String content) { this.content.append(content); } public Set<String> getToAddress() { return toAddress; } public Set<String> getCcAddress() { return ccAddress; } public List<EmailAttachment> getAttachments() { return attachments; } public String getSubject() { return subject==null?"快学大数据":subject; } public String getContent() { return content.toString(); } } }
发送邮件的测试类:
import java.net.MalformedURLException; import java.net.URL; import com.kuaixueit.utils.MailInfo; import com.kuaixueit.utils.MailUtil; public class EmailTest { public static void main(String[] args) throws MalformedURLException { //创建一个MailInfo对象,用来表示要发送的邮件 MailUtil.MailInfo mail = MailUtil.createEmail("这是一封测试邮件","收件邮箱");//设置邮件内容 mail.addContent("<h1 style='color:red'>这是一封来自快学大数据的生日问候!</h1>"); //往邮件中添加一个超链接 mail.addContent("<a href="http://www.baidu.com/s?wd=%E7%BE%8E%E5%A5%B3&rsv_spt=1&rsv_iqid=0xec7ce4b000048f84&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&rqlang=cn&tn=baiduhome_pg&rsv_enter=1&oq=126%25E9%2582%25AE%25E7%25AE%25B1%25E7%2599%25BB%25E9%2599%2586&rsv_t=15dbsR8%2FkP5G1qSGIPgK0dFaQC5SrqmpqaBpPsEYpnYTWNvfPcPZtSwSJjhtxQq5c4po&inputT=2167&rsv_pq=ca7998930006803d&rsv_sug3=9&rsv_sug1=9&rsv_sug7=101&bs=126%E9%82%AE%E7%AE%B1%E7%99%BB%E9%99%86">点我查看美女</a><br>"); mail.addContent("<img src="https://www.baidu.com/img/bd_logo1.png?where=super">"); //往邮件中添加一个附件,附件是本地文件 mail.addAttachment("F:\pic\3c560cf458034c21b54c5b6a77120045.jpg", "美女图片.jpg", "这是送给你的生日福利"); //往邮件中添加一个附件,附件是一个远程图片 mail.addAttachment(new URL("https://www.baidu.com/img/bd_logo1.png?where=super"), "美女图片2.jpg", "这是送给你的生日福利"); //调用工具类发送邮件 MailUtil.sendEmail(mail); } }
收件箱收到的邮件: