![](/img/trans.png)
[英]Call a function to get the Sent Date when an e-mail is sent and that works with all types of connected e-mail - Outlook - VSTO
[英]Generate an e-mail to be downloaded by client and sent from their outlook account
我正在處理的應用程序的一個要求是使用戶能夠向我們的服務台提交調試報告以查找致命錯誤(非常類似於Windows錯誤報告)。
我被告知電子郵件必須來自客戶的郵件帳戶,以防止服務台收到垃圾郵件和大量重復的電話。
為了實現這一點,我正在嘗試在服務器上撰寫郵件消息,在幫助台的正文中添加一條好消息,並將錯誤報告作為附件,然后將其添加到響應中,以便用戶可以下載,打開並發送。
我已經嘗試過,但沒有成功地使用Outlook互操作性組件,這是一個沒有實際意義的因素,因為我在googling的最后6個小時內發現,創建多個Application實例是非常耗費資源的。
如果您希望用戶發送電子郵件客戶端,我不會看到System.Net.Mail將如何幫助您。
您有兩種選擇:
mailto:support@domain.com?subject=Error&body=Error message here...
讓用戶以某種格式下載電子郵件,在客戶端打開並發送
選項1可能會與復雜的機構分解。 使用選項2,您需要找到所有郵件客戶端(您的用戶使用)支持的格式。
使用選項1,您可以在服務器上本地存儲電子郵件詳細信息以防止出現錯誤ID,只需在主題中發送帶有錯誤ID的電子郵件:
mailto:support@domain.com?subject=Error 987771 encountered
簡單的答案是,您嘗試實現的目標並非在所有平台和郵件客戶端上實現。 當被要求做不可能時,提出替代方案並提出建議是明智之舉。
假設您的故障報告只能從錯誤頁面訪問,那么您已經遇到了垃圾郵件的障礙 - 除非垃圾郵件發送者可以強制例外。
我總是通過將故障和文本記錄到數據庫中並將其與票務系統集成來處理這個問題。 也許還有一個mailto:正如Bruce建議使用subject = ID&body = text來允許用戶通過電子郵件發送內容。
我認為.eml格式文件不會有任何幫助 - 因為他們需要轉發它,大多數用戶可能會感到困惑。
.eml實際上是消息的純文本,包括符合RFC-5322的標頭。
在我們的一個應用程序中,用戶點擊生成按鈕,它在Outlook中創建並打開電子郵件。 他們只需點擊發送按鈕即可。 功能如下。
public static void generateEmail(string emailTo, string ccTo, string subject, string body, bool bcc)
{
Outlook.Application objOutlook = new Outlook.Application();
Outlook.MailItem mailItem = (Outlook.MailItem)(objOutlook.CreateItem(OlItemType.olMailItem));
/* Sets the recipient e-mails to be either sent by 'To:' or 'BCC:'
* depending on the boolean called 'bcc' passed. */
if (!(bcc))
{
mailItem.To = emailTo;
}
else
{
mailItem.BCC = emailTo;
}
mailItem.CC = ccTo;
mailItem.Subject = subject;
mailItem.Body = body;
mailItem.BodyFormat = OlBodyFormat.olFormatPlain;
mailItem.Display(mailItem);
}
正如您所看到的那樣,目前正以純文本形式輸出電子郵件,因為它需要黑莓友好。 如果需要一些格式選項,可以輕松地將格式更改為HTML或richtext。 對於HTML,請使用mailItem.HTMLBody
希望這可以幫助。
編輯:
我應該注意,這是在C#應用程序中使用的,並且它引用了Microsoft.Office.Core並在函數所在的Email類中using Outlook
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.