javamail创建带图片和附件的邮件

本文介绍了一个使用Java实现的复杂邮件构造实例,包括如何设置邮件发送者、接收者、主题及内容,同时展示了如何添加内联图片和附件,并解决了附件名称可能出现的乱码问题。

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

import java.io.FileOutputStream;
import java.util.Properties;
 
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
 
public class ComplexMail {
 
    /**
     * 复杂的邮件
     * @throws MessagingException
     * @throws AddressException
     */
    public static void main(String[] args) throws Exception {
         
        MimeMessage message = new MimeMessage(Session.getInstance(new Properties()));
        message.setFrom(new InternetAddress("aa@sina.com"));
        message.setRecipient(Message.RecipientType.TO, new InternetAddress("aa@sina.com"));
        message.setSubject("这是邮件");
         
         
        //封装正文
        MimeBodyPart text = new MimeBodyPart();
        text.setContent("这是我的邮件xxx<br><img src='cid:3.jpg'>", "text/html;charset=UTF-8");
         
        //封装图片
        MimeBodyPart image = new MimeBodyPart();
        image.setDataHandler(new DataHandler(new FileDataSource("src\\3.jpg")));
        image.setContentID("3.jpg");
         
        //封装附件
        MimeBodyPart attach = new MimeBodyPart();
        DataHandler dh = new DataHandler(new FileDataSource("src\\灰色.mp3"));
        attach.setDataHandler(dh);
        String filename = dh.getName();
        attach.setFileName(MimeUtility.encodeText(filename));  //附件的乱码问题
         
         
        //描述正文和图片的关系
        MimeMultipart content = new MimeMultipart();
        content.addBodyPart(text);
        content.addBodyPart(image);
        content.setSubType("related");
         
        //描述正文和附件的关系
        MimeMultipart mm = new MimeMultipart();
        mm.addBodyPart(attach);
        MimeBodyPart bp = new MimeBodyPart();
        bp.setContent(content);
        mm.addBodyPart(bp);
        mm.setSubType("mixed");
         
        message.setContent(mm);
        message.saveChanges();
         
        message.writeTo(new FileOutputStream("c:\\3.eml"));
 
    }
 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值