<分区>
我需要使用 java 实现以下逻辑。
--> 当我点击一个按钮时,MS Outlook 需要打开收件人、抄送、主题和附件。
我们可以使用 mailto 来做这个,但是如果我们使用 mailto 就不能添加附件。
我需要将共享文件夹中的多个附件添加到 MS Outlook
请帮帮我。
使用 switched 可以有单个附件,但我需要打开带有 2+ 个附件的 outlook,并且发送按钮应该可用,以便用户可以发送邮件
<分区>
我需要使用 java 实现以下逻辑。
--> 当我点击一个按钮时,MS Outlook 需要打开收件人、抄送、主题和附件。
我们可以使用 mailto 来做这个,但是如果我们使用 mailto 就不能添加附件。
我需要将共享文件夹中的多个附件添加到 MS Outlook
请帮帮我。
使用 switched 可以有单个附件,但我需要打开带有 2+ 个附件的 outlook,并且发送按钮应该可用,以便用户可以发送邮件
最佳答案
使用 JavaMail 创建包含收件人、抄送、主题和附件的多部分 MIME 邮件。然后而不是传输消息调用 saveChanges和 writeTo并将电子邮件存储到文件系统。
有一个undocumented /eml
开关,可用于打开 MIME 标准格式。例如,outlook/eml filename.eml
有一个记录在案的 /f
开关,它将打开 msg
文件。例如outlook/f filename.msg
x-unsent
可用于切换发送按钮。
这是一个让你入门的例子:
public static void main(String[] args) throws Exception {
//Create message envelope.
MimeMessage msg = new MimeMessage((Session) null);
msg.addFrom(InternetAddress.parse("you@foo.com"));
msg.setRecipients(Message.RecipientType.TO,
InternetAddress.parse("support@bar.com"));
msg.setRecipients(Message.RecipientType.CC,
InternetAddress.parse("manager@baz.com"));
msg.setSubject("Hello Outlook");
//msg.setHeader("X-Unsent", "1");
MimeMultipart mmp = new MimeMultipart();
MimeBodyPart body = new MimeBodyPart();
body.setDisposition(MimePart.INLINE);
body.setContent("This is the body", "text/plain");
mmp.addBodyPart(body);
MimeBodyPart att = new MimeBodyPart();
att.attachFile("c:\\path to file.attachment");
mmp.addBodyPart(att);
msg.setContent(mmp);
msg.saveChanges();
File resultEmail = File.createTempFile("test", ".eml");
try (FileOutputStream fs = new FileOutputStream(resultEmail)) {
msg.writeTo(fs);
fs.flush();
fs.getFD().sync();
}
System.out.println(resultEmail.getCanonicalPath());
ProcessBuilder pb = new ProcessBuilder();
pb.command("cmd.exe", "/C", "start", "outlook.exe",
"/eml", resultEmail.getCanonicalPath());
Process p = pb.start();
try {
p.waitFor();
} finally {
p.getErrorStream().close();
p.getInputStream().close();
p.getErrorStream().close();
p.destroy();
}
}
您必须在电子邮件客户端关闭后进行清理。
您还必须考虑将电子邮件消息留在文件系统中的安全隐患。
关于java - 需要打开带附件的ms outlook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36769026/