Spring Multipart email 的基本使用

本文深入解析MultipartEmail在发送邮件时如何高效地整合附件与内部资源,通过JavaMailSender与MimeMessageHelper的配合,实现邮件中包含图像或样式表而不作为附件,同时展示配置文件及测试过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Multipart Email允许添加附件和内部资源,内部资源可能是你在信件中希望使用的图像或样式表,但又不想把它们作为附件

一、附件:

接口:见MailSender和SimpleMailMessage的基本用法

实现类:

package com.mail.sender;

import com.mail.service.OrderManager;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.MailException;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.mail.javamail.MimeMessagePreparator;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.lang.management.MonitorInfo;

/** Multipart Email-添加附件
 * Created by IntelliJ IDEA.
 * User: Administrator
 * Date: 12-6-13
 * Time: 上午11:19
 * To change this template use File | Settings | File Templates.
 */
public class MimeHelper implements OrderManager {

    private JavaMailSender javaMailSender;

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

    public void placeOrder() throws MessagingException {

        MimeMessage message = javaMailSender.createMimeMessage();
        MimeMessageHelper helper = null;
        try {
            helper = new MimeMessageHelper(message,true); //使用Multipart格式
        } catch (MessagingException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }

        FileSystemResource file = new FileSystemResource(new File("C:\\Users\\Administrator\\Pictures\\1.png"));

        try {
            helper.setTo("240609256@qq.com");//toXXX邮箱
            helper.setFrom("hanxiaoying@iplamp.com"); //from XXX邮箱
            helper.setSubject("helper");
            helper.setText("hello");
            helper.addAttachment("1.png",file);        //添加附件
            javaMailSender.send(message);
        } catch (MessagingException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }

    }
}

 配置文件见:MimeMessageHelper的基本用法 的配置文件

测试没有异常就成功了

效果如下:


 

 

二、内部资源

实现类:

package com.mail.sender;

import com.mail.service.OrderManager;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;

/**
 * Created by IntelliJ IDEA.
 * User: Administrator
 * Date: 12-6-13
 * Time: 下午1:51
 * To change this template use File | Settings | File Templates.
 */
public class InResource implements OrderManager {

    private JavaMailSender javaMailSender;

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

    public void placeOrder() throws MessagingException {

        MimeMessage message = javaMailSender.createMimeMessage();
        MimeMessageHelper helper = null;
        try {
            helper = new MimeMessageHelper(message, true); //使用Multipart格式
        } catch (MessagingException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }

        FileSystemResource file = new FileSystemResource(new File("C:\\Users\\Administrator\\Pictures\\1.png"));

        try {
            helper.setTo("240609256@qq.com");//toXXX邮箱
            helper.setFrom("hanxiaoying@iplamp.com"); //from XXX邮箱
            helper.setSubject("helper");
            helper.setText("hello,看图:<html><body><img src='cid:identifier1234'></body></html>", true);//true 表示启动HTML格式的邮件
            helper.addInline("identifier1234", file);       //添加附件
            javaMailSender.send(message);
        } catch (MessagingException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }

    }

}
 

配置文件:

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <property name="host" value="smtp.exmail.qq.com"/>
        <property name="defaultEncoding" value="UTF-8"/>
        <property name="username" value="hanxiaoying@iplamp.com"/>
        <property name="password" value="hanxiaoying0303"/>
        <property name="javaMailProperties">
            <value>
                mail.smtp.auth=true
            </value>
        </property>
    </bean>
    <bean id="inResource" class="com.mail.sender.InResource">
        <property name="javaMailSender" ref="mailSender"/>
    </bean>

 测试一下,看下有没有成功:

 


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值