`

Spring 发送普通邮件、夹带附件的邮件、嵌入网页或图片的邮件 使用方法

 
阅读更多
在项目应用中,时常存在发送邮件的业务需求。比如:用户注册时的邮件确认;系统出错时的邮件提醒;用户系统邮件订阅;系统的广告邮件定时推广等等。本文根据spring开发文档,列举普通文件邮件,夹带附件的邮件、嵌入图片的邮件三种形式的邮件的使用方式。
实现过程中定义BaseMailDefined类,用于描述邮件发送过程中需要的参数:发送者、接受者、邮件标题、邮件文本内容。
定义MailSenderFactory类,用于对普通文件邮件,夹带附件的邮件、嵌入图片的邮件三种形式的邮件的发送。其中JavaMailSender 采用spring注入的其实现类org.springframework.mail.javamail.JavaMailSenderImpl。


public class MailSenderFactory {

    private JavaMailSender javaMailSender;

    public void setJavaMailSender(JavaMailSender javaMailSender) {
        this.javaMailSender = javaMailSender;
    }


    /**
     * 简单邮件发送
     * @param bmd
     */
    public void senderSimpleMail(BaseMailDefined bmd){
        SimpleMailMessage msg = new SimpleMailMessage();
            msg.setFrom(bmd.getFrom());
            msg.setText(bmd.getText());
            msg.setTo(bmd.getTo());
            msg.setSubject(bmd.getSubject());
            javaMailSender.send(msg);
    }
    
    /**
     * 发送添加附件的邮件
     * @param bmd
     * @throws MessagingException
     */
    public void senderMimeMail(BaseMailDefined bmd) throws MessagingException{
        MimeMessage msg = javaMailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(msg, true);
        helper.setTo(bmd.getTo());
        helper.setText(bmd.getText());
        helper.setFrom(bmd.getFrom());
        helper.setSubject(bmd.getSubject());
        helper.setSentDate(new Date());
        //夹带附件
         FileSystemResource file = new FileSystemResource(new File("E:/task/ip2.rar"));
        helper.addAttachment("ip2.rar", file);
        javaMailSender.send(msg);
    }
    
    /**
     * 发送内嵌图片或html的邮件
     * @param bmd
     * @throws MessagingException
     */
    public void senderHtmlMail(BaseMailDefined bmd) throws MessagingException{
        MimeMessage msg = javaMailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(msg, true);
        helper.setTo(bmd.getTo());
        helper.setText(bmd.getText());
        helper.setFrom(bmd.getFrom());
        helper.setSubject(bmd.getSubject());
        helper.setSentDate(new Date());
        //内嵌式图片或html样式
        helper.setText("<html><body><img src='cid:identifier1235'></body></html>", true);
        FileSystemResource res = new FileSystemResource(new File("E:/task/ip2.png"));
        helper.addInline("identifier1235", res);
        javaMailSender.send(msg);
    }
}

public class BaseMailDefined {
         protected String to;  
         protected String from;  
         protected String subject;  
         protected String text;  
       
         public String getText() {
            return text;
        }

        public String getTo() {
            return to;
        }

        public String getFrom() {
            return from;
        }

        public String getSubject() {
            return subject;
        }

        public void setText(String text) {
            this.text = text;
        }

        public void setTo(String to) {  
             this.to = to;  
         }  
       
         public void setFrom(String from) {  
             this.from = from;  
         }  
       
         public void setSubject(String subject) {  
             this.subject = subject;  
         }  
       
}
测试方法:
public static void main(String[] args) throws Exception {

        ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(
                new String[] { "ApplicationContext.xml" });
        
        MailSenderFactory factory = (MailSenderFactory) ctx.getBean("mailFactory");
        BaseMailDefined bmd = (BaseMailDefined) ctx.getBean("baseMail");
        
        factory.senderSimpleMail(bmd);
        factory.senderMimeMail(bmd);
        factory.senderHtmlMail(bmd);
        
    }
XML配置:
<bean id="sender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <property name="host">
            <value>smtp.sina.com</value>
        </property>
        <property name="username">
            <value>handouName</value>
        </property>
        <property name="password">
            <value>handouPassword</value>
        </property>
        <property name="javaMailProperties">
            <props>
                <prop key="mail.smtp.auth">true</prop>
            </props>
        </property>
    </bean>

    <bean id="mailFactory" class="com.handou.mail.MailSenderFactory">
        <property name="javaMailSender">
            <ref bean="sender" />
        </property>
    </bean>

    <bean id="baseMail" class="com.handou.mail.BaseMailDefined">
        <property name="to">
            <value>handouName@sina.com</value>
        </property>
        <property name="from">
            <value>handouName@sina.com</value>
        </property>
        <property name="subject">
            <value>test</value>
        </property>
        <property name="text">
            <value>this is a test mail !!</value>
        </property>
    </bean>
分享到:
评论
1 楼 wsj0051 2016-11-18  
很好,一致纠结图片路径问题

相关推荐

    Spring Boot整合邮件发送并保存历史发送邮箱

    我们封装一个 MailService 类来实现普通的邮件发送方法。 Spring Boot整合邮件发送并保存历史发送邮箱 from,即为邮件发送者; to,邮件接收者; subject,邮件主题; content,邮件的主体。 邮件发送者 from ...

    spring boot发送普通文本邮件/HTML邮件/附件邮件/图片邮件完整代码.zip

    本教程将详细讲解如何利用Spring Boot实现四种类型的邮件服务:发送普通文本邮件、HTML邮件、附件邮件以及嵌入图片的邮件。我们将主要依赖Spring Boot的`spring-boot-starter-mail`模块来完成这些操作。 首先,你...

    使用Spring Boot 开发支持多附件邮件发送微服务平台代码

    本项目聚焦于使用Spring Boot来开发一个支持多附件邮件发送的微服务平台。这个平台可以方便地集成到各种业务场景中,例如发送报告、通知或者用户验证邮件。 首先,我们需要了解Spring Boot的邮件服务模块——`...

    Spring 使用163发邮件带附件

    标题 "Spring 使用163发邮件带附件" 涉及到的是在Java开发中,使用Spring框架发送电子邮件,特别是包含附件的邮件。这通常在系统需要自动化通知、报告发送或者用户验证过程中非常常见。Spring提供了JavaMailSender...

    spring boot定时任务接收邮件并且存储附件的方法讲解

    关于 Spring Boot 定时任务接收邮件并且存储附件的方法讲解 Spring Boot 是一个基于 Java 的框架,它提供了许多实用的功能,包括定时任务。在 Spring Boot 中实现定时任务非常简单,只需要使用两个注解:`@...

    java 发送邮件 spring发送邮件Mail

    Java发送邮件是软件开发中常见的需求,特别是在企业级应用中,用于发送通知、报表或验证用户的电子邮件地址。Spring框架提供了一种优雅的方式来处理这个任务,它整合了JavaMailSender接口和JavaMail API,使得在Java...

    java发送邮件 spring发送邮件

    在这个场景中,我们将深入探讨如何使用Spring框架发送邮件,以及涉及到的相关知识点。 首先,我们需要在项目中引入Spring的核心库以及JavaMail相关的依赖。通常,Spring框架的`spring-context`模块包含了`...

    spring发送邮件demo

    下面将详细介绍如何使用Spring发送邮件。 首先,我们需要在项目中引入Spring的邮件支持。这通常通过添加`spring-context-support`依赖来完成,该依赖包含了处理邮件发送所需的类。在Maven项目中,可以在pom.xml文件...

    使用springMail发送带附件的email

    在本项目中,我们将深入探讨如何使用SpringMail发送带有附件的电子邮件。首先,我们需要了解几个核心概念: 1. **JavaMail API**: 这是Java平台上的一个标准API,用于处理邮件相关任务,如创建、发送和接收邮件。它...

    struts2+spring3.0+mybatis3.0.4集成的邮件发送实例(可上传附件)

    在这里,`MailService`可能会提供`sendEmail`方法,用于发送邮件,并可能包含`uploadAttachment`方法用于处理附件上传。Spring的依赖注入(DI)特性使得我们可以轻松地在Action和Service之间传递数据。 Mybatis...

    spring各种邮件发送

    在IT行业中,Spring框架是Java开发中的一个关键组件,它提供了丰富的...对于那些需要发送大量或定期邮件的应用,还可以考虑使用邮件队列服务,如Amazon SES或SendGrid,配合Spring进行集成,实现高效、可靠的邮件发送。

    spring velocity 发邮件(单发,群发,图片,附件)

    标题 "spring velocity 发邮件(单发,群发,图片,附件)" 涉及到的是在Java开发中使用Spring框架集成Velocity模板引擎来发送电子邮件的功能。这个话题涵盖了多个知识点,包括Spring的邮件服务、Velocity模板引擎的应用...

    springboot发送邮件(含带附件的邮件,定时任务等功能)

    至此,你已经学会了如何在Spring Boot中使用邮件服务发送普通邮件和带附件的邮件,以及如何设置定时任务。请确保根据实际情况调整配置参数,并处理可能出现的异常情况。通过这些功能,你可以轻松构建出满足各种需求...

    Spring 高效批量邮件发送

    它提供了send()方法,可以用来发送简单的文本邮件或者带有附件的复杂邮件。为了实现批量邮件发送,我们需要创建一个邮件服务类,该类将利用MailSender接口,并通过适当的方式管理邮件的队列和发送过程。 批量邮件...

    Spring邮件发送源码

    Spring提供了一套完整的邮件服务支持,通过其`org.springframework.mail`包,我们可以方便地实现发送各种类型的邮件,包括纯文本、HTML格式、带有附件以及嵌入图片的邮件。 首先,让我们来了解如何配置Spring邮件...

    Spring2.0邮件的发送 附件 图片 HTML格式

    在Spring 2.0版本中,它引入了对发送邮件的支持,这使得开发者能够轻松地实现邮件服务,包括发送带有附件、图片以及HTML格式的邮件。下面将详细介绍这个功能及其相关知识点。 1. **Spring Mail支持**: - Spring...

    spring定时发送邮件

    实现这一功能,你需要在Spring配置文件中定义一个`TaskScheduler`或`ThreadPoolTaskScheduler`,然后创建一个实现了`Runnable`接口的任务类,最后在任务类中定义你的邮件发送逻辑。 接下来,我们来看Spring Mail。...

    Spring邮件发送

    **Spring邮件发送** 在Java开发中,Spring框架提供了一种简单而强大的方式来发送电子邮件。Spring的`JavaMailSender`接口以及其实现类`SimpleMailMessage`和`MailMessage`,使得开发者能够轻松地集成邮件服务到应用...

    JAVA 发送HTML格式并带图片的邮件实例

    通过上述步骤,你就可以使用Java成功发送HTML格式的邮件,并且可以附加图片或在邮件正文中嵌入图片。这在发送包含丰富格式和视觉元素的营销邮件或者通知邮件时非常有用。记得在实际项目中,根据具体需求调整代码,...

Global site tag (gtag.js) - Google Analytics