2010-11-20 36 views
3

我有一個Windows窗體應用程序,我添加了一個請求支持窗體,並希望用戶能夠輸入值並按下按鈕。一旦按下按鈕,我可以:C#:通過電子郵件發送支持請求的最佳方法是什麼?

  1. 打開一封新郵件並自動填充該郵件。 (不知道如何做到這一點)
  2. 通過我的網站上的http表單提交請求。 (我知道如何做到這一點)
  3. 直接從應用程序的代碼發送電子郵件。 (我知道如何做到這一點)

我想知道什麼是最好的方法來使用?我認爲選項1是最透明的,用戶會準確看到發送的內容,但我不確定如何確保它可以正常工作,而不管他們使用哪種電子郵件客戶端。

我發現潛在的問題與選項二,特別是防火牆可能會停止提交。但選項2將允許我爲他們的請求提供一個門票號碼。

感謝您的幫助。

+0

您可以使用System.Net.Mail對象發送郵件,請參閱http://www.systemnetmail.com以獲取更多信息。不確定在選項上推薦什麼。 – 2010-11-20 19:46:15

+0

@布萊恩:我認爲這是選項3) – 2010-11-20 19:52:04

回答

2

對於選項1,建議使用mailto處理程序。

設置您的字符串的格式如下:string.Format("mailto:[email protected]?subject={0}&body={1}", subject, body)。不要忘記UrlEncode主題和正文值。

然後在您的字符串中使用System.Diagnostics.Process.Start()。

這將啓動系統上的註冊郵件處理程序(Outlook,Windows Live Mail,Thunderbird等)。

0

選項2)最好避免企業防火牆問題,因爲HTTP端口可能未被阻止。

選項2)最適合簡單配置。唯一的配置密鑰是服務/頁面url。然後您的SMTP配置將保留在您的網絡服務器上。

現在您將不得不選擇使用網頁(如果已經存在)或web服務(最適合您的功能)。

0

對於選項(1)準備處理Outlook版本問題。但是,這並不難(再次,如果我們談論的是Outlook中,最後一個版本)自動支持請求我計劃在我的當前項目「微軟企業日誌支持塊」的電子郵件發送功能使用

 //using Microsoft.Office.Interop.Outlook;  
     private void OutlookMail(string Subject, string Body) 
     { 

     ApplicationClass app = new ApplicationClass(); 
     NameSpaceClass ns = (NameSpaceClass)app.GetNamespace("mapi"); 
     ns.Logon("", "", true, true); 
     MailItem mi = 
      (MailItem)app.CreateItem(OlItemType.olMailItem); 
     mi.Subject = Subject; 

     int EOFPos = Body.IndexOf(char.Parse("\0")); 
     if (EOFPos != -1) 
     { 
      log.Error("EOF found in Mail body"); 
      ErrorDialog ed = new ErrorDialog(TietoEnator.Common.ErrorDialog.ErrorDialog.Style.OK, "Export Error", "File could not be exported correctly, please inform responsible person", "", "EOF char detected in the body of email message."); 
      ed.ShowDialog(); 
     Body=Body.Replace("\0", ""); 
     } 
     mi.HTMLBody = "<html><head><META content='text/html; charset=CP1257' http-equiv=Content-Type></head><body><table>"+Body+"</table></body></html>"; 

     mi.BodyFormat = OlBodyFormat.olFormatHTML;//.olFormatPlain; 
     mi.Display(0); // show it non - modally 
     ns.Logoff(); 
    } 

BTW 。

+0

別忘了添加正確的參考 – 2010-11-21 13:40:48

1

對於選項1:如果消息正文很短,那麼從代碼中調用mailto處理程序不再要求它們使用outlook。這有點廉價,但它對於本地郵件客戶端來說是完全跨平臺的。 (如果他們使用類似Gmail的東西,你仍然是SOL)

相關問題