Java 如何在电子邮件模板中嵌入图像

Java 如何在电子邮件模板中嵌入图像,java,spring,spring-mvc,jakarta-mail,velocity,Java,Spring,Spring Mvc,Jakarta Mail,Velocity,我在java中的ClassPathResource中添加了图像路径。我的图像和velocity文件存储在src/main/resources中 这是我的java编码: @Autowired private JavaMailSender javamailsender; @Autowired private VelocityEngine velocityEngine; MimeMessage msg = javamailsender.createMimeMessage(); Mi

我在java中的
ClassPathResource
中添加了图像路径。我的图像和velocity文件存储在src/main/resources中

这是我的java编码:

@Autowired
private JavaMailSender javamailsender;
@Autowired
private VelocityEngine velocityEngine;

MimeMessage msg = javamailsender.createMimeMessage();

        MimeMessageHelper emailObject = new MimeMessageHelper(msg, true,"UTF-8");
emailObject.setTo("******");
emailObject.setFrom("******");



Object smileimage = new ClassPathResource("smiley.png");
File smfile = ((ClassPathResource) smileimage).getFile();
Map model = new HashMap();
model.put("smfile", smfile);
StringBuffer content = new StringBuffer();
content.append(VelocityEngineUtils.mergeTemplateIntoString(velocityEngine,
                "/velocity/Demo.vm", "UTF-8", model));



Multipart mp = new MimeMultipart("alternative");
        BodyPart htmlPart = new MimeBodyPart();
        htmlPart.setContent(content.toString(), "text/html");
        mp.addBodyPart(htmlPart);

        msg.setContent(mp);

        javamailsender.send(emailObject.getMimeMessage());
这是我的Velocity文件:

<html>
<head>
<meta charset="utf-8">
</head>
<body>
<img src='$smfile' alt="birthay img"  with="130" height="130" >
</body>
</html>


电子邮件接收我的本地系统非常完美…但未找到其他系统邮件接收图像。

该文件是由
$smfile
指向的本地文件还是http URL?在第一种情况下,您必须在邮件本身中包含文件内容的mime编码版本,velocity不应该是该部分的最佳工具…$smfile是我的本地路径…如何添加http URL您可以将文件复制到公共http服务器,并传递URL。或者,学习如何使用javamail将HTML邮件中使用的图像嵌入为mime。谷歌搜索javamail include图像提供了一些提示,包括参见此。