java - 需要打开带附件的ms outlook

标签 java jakarta-mail mailto

<分区>

我需要使用 java 实现以下逻辑。

--> 当我点击一个按钮时,MS Outlook 需要打开收件人、抄送、主题和附件。

我们可以使用 mailto 来做这个,但是如果我们使用 mailto 就不能添加附件。

我需要将共享文件夹中的多个附件添加到 MS Outlook

请帮帮我。

使用 switched 可以有单个附件,但我需要打开带有 2+ 个附件的 outlook,并且发送按钮应该可用,以便用户可以发送邮件

最佳答案

使用 JavaMail 创建包含收件人、抄送、主题和附件的多部分 MIME 邮件。然后而不是传输消息调用 saveChangeswriteTo并将电子邮件存储到文件系统。

有一个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/

相关文章:

Java Mail Api 不返回所有邮件

java - 计算 Gmail 收件箱中的电子邮件数量

java - 如何检查 JMS 连接健康状况

java - 方法捕获异常后可以再次调用自身吗?

java - 运行/ curl 部署并公开到 AWS 上托管的 Kubernetes 集群的简单 Java 应用程序

带有附件的 C# MailTo?

html - Cordova iOS <a href ="mailto:"和 <a href ="tel:"仅适用于长按

jquery - 为什么我的图标在图像上的 "src"属性之后没有改变?

java - 从 Jenkins 更新 Docker 镜像和容器

java - 通过按下 ANDROID 按钮加载 Xml