java发送带附件的HTML类型邮件(apache.commons)

使用 apache的commons发送邮件

package com.email;

import com.email.pojo.EmailConfig;

import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
import org.apache.commons.mail.SimpleEmail;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.Date;

public enum EmailUtil {
    /**
     * 邮件发送服务单例
     */
    INSTANCE;
    /**
     * 自定义的服务配置实体类
     */
    private EmailConfig config = null;

    private final Logger LOGGER = LoggerFactory.getLogger(EmailUtil.class);

    EmailUtil() {
        try {
            init();
        } catch (Throwable e) {
            LOGGER.error("邮箱配置初始化异常", e);
        }
    }

    /**
     * 初始化邮件发送配置
     */
    private void init() {
        config = new EmailConfig();
        config.setServerHost("smtp.163.com");
        config.setServerName("xxxxx@163.com");
        config.setServerPwd("xxxxx");
        config.setSender("test@163.com");
        LOGGER.info("EmailService config{}", config);
    }

    /**
     * 发送邮件消息
     */
    public void push() {
        if (config == null) {
            init();
        }
        SimpleEmail mail = new SimpleEmail();
        // 设置邮箱服务器信息
        mail.setSslSmtpPort("25");
        mail.setHostName(config.getServerHost());
        // 设置密码验证器
        mail.setAuthentication(config.getServerName(), config.getServerPwd());
        try {
            // 防止成为垃圾邮件
            mail.addHeader("X-Mailer", "Microsoft Outlook Express 6.00.2900.2869");
            // 设置邮件发送者
            mail.setFrom(config.getServerName());
            // 设置邮件接收者
            mail.addTo("xxx@qq.com");
            // 设置邮件编码
            mail.setCharset("UTF-8");
            // 设置邮件主题
            mail.setSubject("A story");
            // 设置邮件内容
            mail.setContent("Little Red Riding Hood", "text/html;charset=utf-8");
            // 设置邮件发送时间
            mail.setSentDate(new Date());
            // 发送邮件
            mail.send();
            LOGGER.debug("发送邮件成功");
        } catch (EmailException e) {
            LOGGER.error("发送邮件失败{}", e);
        }
    }

    /**
     * 发送带附件邮件(该方法支持发送HTML消息和附件)
     * 如果只是需要附件和文本也可以把HtmlEmail替换为MultiPartEmail
     *
     * @param strAttachFile 附件路径
     * @param strAttachName 附件名称
     */
    public void push(String strAttachFile, String strAttachName) {
        if (config == null) {
            init();
        }

        HtmlEmail mail = new HtmlEmail();
        // 设置邮箱服务器信息
        mail.setSslSmtpPort("25");
        mail.setHostName(config.getServerHost());
        // 设置密码验证器
        mail.setAuthentication(config.getServerName(), config.getServerPwd());
        try {
            // 防止成为垃圾邮件
            mail.addHeader("X-Mailer", "Microsoft Outlook Express 6.00.2900.2869");
            // 设置邮件发送者
            mail.setFrom(config.getServerName());
            // 设置邮件接收者
            mail.addTo("xxx@qq.com");
            // 设置邮件编码
            mail.setCharset("UTF-8");
            // 设置邮件主题
            mail.setSubject("A Link");
            // 设置邮件内容
            mail.setHtmlMsg("<a href=\"www.baidu.com\">百度一下,月入过万</a>");
            // 设置邮件发送时间
            mail.setSentDate(new Date());
            // 添加附件
            EmailAttachment attachment = new EmailAttachment();
            attachment.setPath(strAttachFile);
            attachment.setName(strAttachName);
            attachment.setDisposition(EmailAttachment.ATTACHMENT);
            mail.attach(attachment);

            // 发送邮件
            mail.send();
        } catch (EmailException e) {
            LOGGER.error("发送邮件失败{}", e);
        }

    }

    /**
     * 获取服务配置
     *
     * @return 服务配置
     */
    public EmailConfig getConfig() {
        return config;
    }

    public void setConfig(EmailConfig config) {
        this.config = config;
    }

    /**
     * 刷新邮件配置
     */
    public void refreshConfig() {
        config = null;
        init();
    }
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值