spring发送Email

使用spring发送email,支持文件、html、txt等格式。

  • MailBean.java 发送email的格式类

    /**
     * 本类是主要进行发送E-mail信息。
     * @author Jerry
     * 如果是HTML :<html><head></head><body><h1>hello!!spring html Mail</h1><a href=\"http://www.sina.com\">超级链接</a></body></html>
     * 请加上http:// 否则URL会失效
     */
    public class MailBean {
        private String toEmail;//e-mail目的地
        private String fromEmail;//e-mail来源地
        private String emailTitle;//邮件标题
        private String emailContent;//邮件正文
        private File[] sendFiles;//添加附件
        //相关配置在properties里
        private PropertiesLoader propertiesLoder = new PropertiesLoader("ttcity.properties");
        public MailBean(String toEmail, String emailTitle,
                String emailContent) {
            super();
            this.toEmail = toEmail;
            this.fromEmail = propertiesLoder.getProperty("mail.username", "cuisongliu@163.com");
            this.emailTitle = emailTitle;
            this.emailContent = emailContent;
        }
        public MailBean(String toEmail, String emailTitle,
                String emailContent, File[] sendFiles) {
            super();
            this.toEmail = toEmail;
            this.fromEmail = propertiesLoder.getProperty("mail.username", "cuisongliu@163.com");
            this.emailTitle = emailTitle;
            this.emailContent = emailContent;
            this.sendFiles = sendFiles;
        }
        public String getToEmail() {
            return toEmail;
        }
        public void setToEmail(String toEmail) {
            this.toEmail = toEmail;
        }
        public String getFromEmail() {
            return fromEmail;
        }
        @SuppressWarnings("unused")
        private void setFromEmail(String fromEmail) {
            this.fromEmail = fromEmail;
        }
        public String getEmailTitle() {
            return emailTitle;
        }
        public void setEmailTitle(String emailTitle) {
            this.emailTitle = emailTitle;
        }
        public String getEmailContent() {
            return emailContent;
        }
        public void setEmailContent(String emailContent) {
            this.emailContent = emailContent;
        }
        public File[] getSendFiles() {
            return sendFiles;
        }
        public void setSendFiles(File[] sendFiles) {
            this.sendFiles = sendFiles;
        }
    
    }
  • 发送邮件接口

    public interface SendMail {
        public JavaMailSender getJavaMailSender();
        public MimeMessage getMimeMessage();
        /**
         * 发送普通的email
         * @param mailBean Email的实体类
         * @return  true/false 发送成功/失败
         * @throws BaseRuntimeException
         */
        public boolean sendSingleMail(MailBean mailBean)throws IitdevRuntimeException;
        /**
         * 发送HTML格式的email
         * @param mailBean Email的实体类
         * @return true/false 发送成功/失败
         * @throws BaseRuntimeException
         */
        public boolean sendHTMLMail(MailBean mailBean)throws IitdevRuntimeException;    
        /**
         * 发送带附件的email
         * @param mailBean Email的实体类
         * @return true/false 发送成功/失败
         * @throws BaseRuntimeException
         */
        public boolean sendAttachedFileMail (MailBean mailBean)throws IitdevRuntimeException;
    
    }
    
  • 发送邮件的实现类

    public class SendMailImpl implements SendMail {
        protected JavaMailSender javaMailSender;
        protected MimeMessage mimeMessage;
        private Logger log = Logger.getLogger(SendMailImpl.class);
    
        public JavaMailSender getJavaMailSender() {
            return javaMailSender;
        }
    
        public void setJavaMailSender(JavaMailSender javaMailSender) {
            this.javaMailSender = javaMailSender;
        }
    
        public MimeMessage getMimeMessage() {
            return mimeMessage;
        }
    
        public void setMimeMessage(MimeMessage mimeMessage) {
            this.mimeMessage = mimeMessage;
        }
    
        @Override
        public boolean sendSingleMail(MailBean mailBean)
                throws IitdevRuntimeException {
            SimpleMailMessage mailMessage = new SimpleMailMessage();
            try {
                mailMessage.setTo(mailBean.getToEmail());
                mailMessage.setFrom(mailBean.getFromEmail());
                mailMessage.setSubject(mailBean.getEmailTitle());
                mailMessage.setText(mailBean.getEmailContent());
                javaMailSender.send(mailMessage);
            } catch (Exception e) {
                log.error("发送失败", e);
                return false;
            }
            return true;
        }
    
        @Override
        public boolean sendHTMLMail(MailBean mailBean) throws IitdevRuntimeException {
            //MimeMessage mailMessage = javaMailSender.createMimeMessage();
            // 设置utf-8或GBK编码,否则邮件会有乱码
            MimeMessageHelper messageHelper = null;
    
            try {
                messageHelper = new MimeMessageHelper(mimeMessage, true, "utf-8");
                messageHelper.setTo(mailBean.getToEmail());
                messageHelper.setFrom(mailBean.getFromEmail());
                messageHelper.setSubject(mailBean.getEmailTitle());
                // 邮件内容,注意加参数true,表示启用html格式
                messageHelper.setText(mailBean.getEmailContent(), true);
                javaMailSender.send(mimeMessage);
            } catch (Exception e) {
                log.error("发送失败", e);
                return false;
            }
            return true;
        }
    
        @Override
        public boolean sendAttachedFileMail(MailBean mailBean)
                throws IitdevRuntimeException {
            //MimeMessage mailMessage = javaMailSender.createMimeMessage();
            // 设置utf-8或GBK编码,否则邮件会有乱码
            MimeMessageHelper messageHelper = null;
    
            try {
                messageHelper = new MimeMessageHelper(mimeMessage, true, "utf-8");
                messageHelper.setTo(mailBean.getToEmail());
                messageHelper.setFrom(mailBean.getFromEmail());
                messageHelper.setSubject(mailBean.getEmailTitle());
                // 邮件内容,注意加参数true,表示启用html格式
                messageHelper.setText(mailBean.getEmailContent(), true);
                // 遍历文件上传
                for (File file : mailBean.getSendFiles()) {
                    FileSystemResource fsr = new FileSystemResource(file);
                    messageHelper.addAttachment(file.getName(), fsr);
                }
                javaMailSender.send(mimeMessage);
            } catch (Exception e) {
                log.error("发送失败", e);
                return false;
            }
            return true;
        }
    
    }
    
  • 相关配置

    <!-- e-amil设置 -->
    <bean id="mimeMessage" class="javax.mail.internet.MimeMessage" factory-bean="javaMailSender"  
        factory-method="createMimeMessage" />
    <bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">   
        <property name="host"> <value>${mail.host}</value></property>   
        <property name="username"> <value>${mail.username}</value></property>    
        <property name="password"> <value>${mail.password}</value></property>   
        <property name="javaMailProperties">   
            <props>   
                <prop key="mail.smtp.auth">true</prop>   
                <prop key="mail.smtp.timeout">25000</prop>   
                <!-- <prop key="mail.smtp.port">25</prop>   
                <prop key="mail.smtp.socketFactory.port">25</prop>   
                <prop key="mail.smtp.socketFactory.fallback">false</prop>   
                <prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
                -->   
            </props>   
        </property>   
    </bean>
    <bean id="sendMail" class="com.base.mail.SendMailImpl">
        <property name="javaMailSender" ref="javaMailSender" /> 
        <property name="mimeMessage" ref="mimeMessage" /> 
    </bean>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值