2012-08-24 75 views
2

我有一個應用程序需要將格式化的消息和地址發送到電子郵件客戶端(例如Lotus Notes,Outlook等 - 最好是前者)。然後,客戶端應該在沒有任何干預的情況下在後臺發送該消息(即,沒有人應該按下發送客戶端)。如何通過指定的電子郵件客戶端發送消息?

我有信息,我有地址,我知道如何選擇一個默認的電子郵件客戶端。

如何發送預先格式化的消息和地址(我猜一些MAIL:TO)並讓客戶端自動發送消息?

該應用程序在C++和Qt中。我可能需要調用一些客戶端的API。他們揭露這些嗎?

+0

我很想看看這是怎麼完成的 – pyCthon

+0

爲什麼指定的客戶端需要發送消息,而不是僅僅從應用發送消息? Qt允許你這樣做:[docs](http://doc.qt.nokia.com/qtmobility/messaging.html) – sjwarner

+0

官方理由等等。官僚的東西。 – user1173240

回答

0

這與平臺有關,可以通過以下兩種方式之一處理:有一個郵件服務器進程,您可以使用它連接(使用 套接字);或者,將輸出傳遞給郵件客戶端(在Unix下爲mailmailx )。管道到郵件客戶端通常更簡單,但我不是 肯定Windows機器有一個隨時可用。 (你說你有一個 默認的電子郵件客戶端以什麼形式如果它是一個URL,你需要使用 插座;?如果它是一個本地程序,該管道的名稱)

在這兩種情況下, ,您可能需要創建一個streambuf來處理 的輸出,以便使用 std::ostream的所有格式化可能性。

如果你想這樣做的背景下,最可靠的方法是創建一個 獨立的過程:將數據寫入一個文件,然後使用system執行 郵件客戶端並刪除文件完成後(小批量生產腳本)。 或者,您可以在單獨的線程中執行此操作,如果您確定在發送郵件之前您的進程不會被殺死。

+0

我有要發送的信息,我會得到一個地址發送給,當然還有一個地址。我的下一個課程將是在我的系統中識別郵件的默認應用程序(就像當我右鍵單擊文件並單擊「Zip和通過電子郵件發送此文件」時,它會自動打開默認客戶端),然後自動填寫相關內容字段和發送。 所以這將是一個系統上的本地程序,我猜。我得到了關於streambuf的部分。請你提出最後一點?還有其他我應該留意的事情。我很缺乏經驗。 – user1173240

+0

@ user1173240最後一點只是關於你如何做「背景」的事情。歷史上,在後臺意味着一個單獨的進程,這意味着在較早的Unix上有'fork'和'exec',在Windows下有'spawn'(在現代Unix下有'posix_spawn')。通過在流程中啓動一個單獨的線程,您可以獲得基本相同的效果;這很簡單,但是如果你的進程退出了(例如通過從main返回),所有的線程都會被終止,無論他們是否完成了他們的工作。如果你分叉,子進程將繼續。 –

+0

@ user1173240當然,如果你想要一個單獨的進程,你也可以把所有的數據寫入磁盤,然後調用'system'。用'system(「(mailx

相關問題