2012-02-01 8 views
3

У меня есть программа на C#, которую я буду запускать ежедневно (через Windows Scheduler). Программа предназначена для отправки ежедневного отчета моей команде. Я написал следующее, чтобы отправить электронное письмо, и оно работает. единственная проблема заключается в том, что Outlook показывает окно сообщения «Программа пытается отправить сообщение от вашего имени, если это неожиданно ...». есть три кнопки «разрешить» «отрицать» «помощь», и кажется, что моя программа остановлена ​​в этот момент и до тех пор, пока я не нажму кнопку «Разрешить или запретить», программа не отправит электронное письмо. Я знаю, что я могу изменить параметры, перейдя в инструменты -> центр доверия -> программный доступ, но мне бы очень хотелось не использовать это, потому что эта программа в конечном итоге будет запущена с другого компьютера, на котором пользователь может или не может получить доступ для изменения настройки в центре доверия. Есть ли способ программно отключить это предупреждение? ..or есть другой способ, чтобы отправить по электронной почте, не имея это предупреждение всплывающее окноОтправка электронной почты через 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

+2

Это фактически не имеет ничего общего с Exchange, и все, что связано с безопасностью Outlook. – jrummell

ответ

1

Есть несколько способов сделать что вы можете отключить всплывающее окно, как @DJ Kraze описано

или вы можете отправить сообщение через SMTP, если то возможно в вашей среде увидеть это: http://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.aspx

, то вы могли бы использовать «библиотека погашения», которую я использовал, и сообщений не будет, потому что погашение их подавляет (или работает вокруг них), но библиотека используется через com, это не так удобно .. , хотя вам нужно заплатить за это: http://www.dimastr.com/redemption/home.htm

thir альтернативой является использование управляемых веб-служб Exchange http://www.microsoft.com/download/en/details.aspx?id=13480 это довольно прямо вперед, и интересно использовать. вы можете получить это через NuGet. :)

EDIT:

я забыл упомянуть, что Exchange Web Services доступны только в Exchange 2007 с пакетом обновления 1 или выше. и это то, что он выглядит как отправить сообщение (после подключения к серверу)

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

Один из самых простых решений является использование SMTP сервера Exchange. Вот пример от 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 включен.

Смежные вопросы