2012-02-01 144 views
3

我有一個C#程序,我將每天運行(通過Windows計劃程序)。該計劃將向我的團隊發送每日報告。 我寫了以下內容來發送電子郵件,它的工作原理。唯一的問題是,Outlook顯示一個消息框「一個程序試圖以您的名義發送電子郵件,如果這是意外......」。有三個按鈕「允許」「拒絕」「幫助」,看起來像我的程序在這一點停止,直到我點擊允許或拒絕按鈕,該程序不會發送電子郵件。 我知道我可以通過進入工具 - >信任中心 - >程序化訪問來更改選項,但我真的不想使用它,因爲此程序最終將從另一臺機器運行,用戶可能訪問或不訪問改變信任中心的設置。 有沒有辦法以編程方式禁用此警告? ..或有另一種方式來發送郵件,而不必此警告彈出通過MS Outlook發送電子郵件並禁用警告

這裏被用來發送它工作正常的email..and的代碼..

Application olook = new Application(); 
     NameSpace ns = olook.GetNamespace("MAPI"); 
     ns.Logon(null, null, true, true); 

     _MailItem msg = (_MailItem)olook.CreateItem(OlItemType.olMailItem); 

     msg.To = "[email protected]"; 
     msg.Subject = "test"; 

     msg.HTMLBody = strHTML; 

     msg.Send(); 
     ns.Logoff(); 
+0

我懷疑你可以禁用這個。在他不知情或不批准的情況下可以從用戶地址發送電子郵件的程序將是一個主要的安全漏洞。 – millimoose 2012-02-01 18:42:53

+2

這實際上與Exchange無關,並且與Outlook安全性有關。 – jrummell 2012-02-01 18:43:25

回答

1

有幾種方法可以做到這 您可以禁用像@DJ KRAZE彈出描述

,或者你可以通過SMTP發送郵件時,如果多數民衆贊成在可能的環境 看到:http://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.aspx

那麼你可以使用我使用過的「贖回圖書館」並沒有任何信息,因爲贖回抑制了它們(或者在它們附近工作),但圖書館通過com使用,這並不是那麼舒服.. 雖然你必須爲此付費: http://www.dimastr.com/redemption/home.htm

的錫爾另一種方法是使用託管Exchange Web服務 http://www.microsoft.com/download/en/details.aspx?id=13480 這是非常簡單的和有趣的使用。你也可以通過NuGet獲得。 :)

編輯:

我忘了提,即Exchange Web服務僅在Exchange 2007 SP1或更高版本中提供。 ,這就是它看起來像發送郵件(後連接到服務器)

EmailMessage message = new EmailMessage(service); 
message.Subject = "Hello from the EWS Managed API"; 
message.Body = "Now that's easy!"; 
message.ToRecipients.Add("[email protected]"); 
message.Save(); 

看看這裏的介紹:http://msdn.microsoft.com/en-us/library/dd637749(v=exchg.80).aspx

1

一個最簡單的解決辦法是使用Exchange的SMTP服務器。這裏有一個來自MSDN的例子。

string to = "[email protected]"; 
string from = "[email protected]"; 
MailMessage message = new MailMessage(from, to); 
message.Subject = "Using the new SMTP client."; 
message.Body = @"Using this new feature, you can send an e-mail message from an application very easily."; 

SmtpClient client = new SmtpClient(server); 
// Credentials are necessary if the server requires the client 
// to authenticate before it will send e-mail on the client's behalf. 
client.UseDefaultCredentials = true; 
client.Send(message); 

當然,您必須與您的Exchange管理員確認是否已啓用SMTP。

相關問題