我正在尝试使用javamail创建电子邮件,我可以在其中附加许多文件,还可以配置正文消息,目标和许多设置...最后,我将此电子邮件保存在一个临时文件中以在Outlook 2016中使用现在,我可以在其中打开Outlook,并使用Outlook命令行和/ eml开关来传递eml文件。 问题是尝试使用开关/ a将一个文件与Outlook附加在一起,我可以在正文消息的页脚中看到签名,但是当我使用创建的eml文件时,我看不到任何签名。
我试图做的是将预先保存的签名从txt文件以不同格式(htm,rtf和txt)加载到漫游文件夹中,没有问题,可以将其放入eml文件中的消息中,但是使用rtf我不能可视化内容,就像我在ms word中看到的那样,使用htm文件,图像(如果存在)仍然不可见。
我想知道如何使用两者之一(html或rtf文件)将签名自动包含在正文消息的底部。 希望有人已经在同一主题上工作。
答案 0 :(得分:0)
我认为您可以拍摄签名的快照并将其保存在特定目录中,并通过插入图像来发送HTML电子邮件。您可以找到here的内容,以了解如何在邮件正文中发送内联HTML图像。希望对您有所帮助。
答案 1 :(得分:0)
问题主要出在htm文件中包含的路径图像中,所以我用绝对路径解析了原始路径,因此我可以正确地可视化图像
public static String getSignature() throws IOException {
String content ="";
String appDataPath = System.getenv("APPDATA")+"\\Microsoft\\Signatures\\";
System.out.println(appDataPath);
File folder = new File(appDataPath);
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++) {
File file = listOfFiles[i];
if (file.isFile() && file.getName().endsWith(".htm")) {
content = FileUtils.readFileToString(file , "windows-1252");
content =content.replaceAll("src=\"", "src=\"" +appDataPath.replace("\\", "/"));
}
}
return content;
}
然后我重新整理内容,并将其放入要发送的邮件中。
MimeBodyPart body = new MimeBodyPart();
body.setDisposition(MimePart.INLINE);
body.setContent(signature, "text/html");
mmp.addBodyPart(body);
我在代码上添加了一些增强功能:
public static String[] getSignature() throws IOException {
String content = "";
String appDataPath =System.getenv("APPDATA") + "\\Microsoft\\Signatures\\";
System.out.println(appDataPath);
File folder = new File(appDataPath);
File[] listOfFiles = folder.listFiles();
String imagePath ="";
for (int i = 0; i < listOfFiles.length; i++) {
File file = listOfFiles[i];
if (file.isFile() && file.getName().endsWith(".htm")) {
content = FileUtils.readFileToString(file, "windows-1252");
content = content.replaceAll("src=\"", "src=\"" + appDataPath.replace("\\", "/"));
}else if(file.isDirectory()){
File[] listOfHtmlFiles = file.listFiles();
for (File f : listOfHtmlFiles) {
if(Files.probeContentType(f.toPath()).contains("image")) {
imagePath = f.getPath();
}
}
}
}
return new String[]{content,imagePath};
}
此新代码将从html检索签名,并从html文件夹检索图像路径。
然后我创建了一个图像作为联合文件图像(附加到电子邮件中) 然后我按如下所示修改签名中的src:
MimeBodyPart imgBP = new MimeBodyPart();
DataSource fds = new FileDataSource(imgPath);
imgBP.setDataHandler(new DataHandler(fds));
imgBP.setHeader("Content-ID", "<image>");
mmp.addBodyPart(imgBP);
signature = signature.replaceFirst("(src=)([\"|\'])(.*)([\"|\'])",
"$1$2cid:image$4");
MimeBodyPart body = new MimeBodyPart();
body.setDisposition(MimePart.INLINE);
body.setContent("<br><br><br>" + signature, "text/html");
mmp.addBodyPart(body);