簡體   English   中英

啟動帶有附件的Mail-Client?

[英]Start Mail-Client with Attachment?

我目前正在尋找一種方法(用Java),用定義的接收者,主題和正文以及預定義的附件啟動默認郵件客戶端。

由於RFC的限制,java.awt.Desktop.mail-Method無法使用附件。 在構建過程中,JDIC項目已失效,而JMAPI項目則相當模糊。 (需要1.4 Mozilla-Sources)而且我必須自己為64位系統構建它。

還有其他選擇嗎? 我已經在這里閱讀了文章,但是使用rundl32.dll和這樣的“解決方案”不是我想要放入生產代碼中的東西。

在Java中,似乎沒有任何與操作系統無關的方法來執行此操作,因為並非所有操作系統都提供了一種標准方法來啟動默認電子郵件應用程序,而該應用程序除了提供新電子郵件的基本字段外,還提供了更多其他方法。

在Windows上,可以對MAPI使用JNI接口,這將提供對在郵件應用程序中打開電子郵件的更多控制。 如您所提到的,JMAPI是這樣的一個庫-但是,看來有許多這樣的庫,其名稱具有相似的用途。 我發現了一個最近維護的表,看起來很簡單。 它包括一個預構建的二進制dll和一個隨附的基於Java JNI的庫。

https://github.com/briandealwis/jmapi

使用此代碼,您似乎只需要構造一個消息對象並調用一種方法即可在郵件應用程序中啟動它:import jmapi。*; ...

    if (JMAPI.isMapiSupported()) {
        Message msg = new Message();
        msg.setSubject("test!");
        msg.setBody("Hello world");

        List<String> toAddresses = new LinkedList<String>();
        toAddresses.add("example@example.com");
        msg.setToAddrs(toAddresses);

        List<String> attachPaths = new LinkedList<String>();
        //Must be absolute paths to file
        attachPaths.add("C:\Users\Documents\file.jpg");
        msg.setAttachments(attachPaths);

        JMAPI.open(msg);
    }

對於Windows和Mac(以及可能的其他操作系統)而言,另一種可行的方法是生成一個“ .eml”或“ .msg”文件,其中包含您希望包含已編碼為電子郵件一部分的內容和附件。 然后可以使用相應電子郵件文件格式的默認處理程序啟動該文件。 但是,不能保證打開默認的電子郵件處理程序,也不保證文件格式將與每個電子郵件客戶端兼容。

可能現在為時已晚,但以防萬一仍然有人發現此問題:

Desktop.getDesktop().mail(new URI("mailto:email@example.com?subject=attachment_example&body=see_attached_file&attachment=/path/to/attachment"));

應該以與平台無關的方式完成任務。

(據我所知)目前尚無法添加預定義的附件,但是您可以使用java.awt.Desktop.mail做您提到的其他事情(使用定義的接收者,主題和正文啟動默認的郵件客戶端)。我相信您已經在這里檢查 不過,這將非常有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM