Отправка электронной почты через MS Outlook и отключение предупреждения - PullRequest
4 голосов
/ 01 февраля 2012

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

вот код, используемый для отправки электронного письма .. и он работает нормально ..

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

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

        msg.To = "xxx@xxx.com";
        msg.Subject = "test";

        msg.HTMLBody = strHTML;

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

Ответы [ 2 ]

1 голос
/ 01 февраля 2012

Одним из самых простых решений является использование SMTP-сервера Exchange. Вот пример из MSDN .

string to = "jane@contoso.com";
string from = "ben@contoso.com";
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 включен.

1 голос
/ 01 февраля 2012

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

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

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

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

РЕДАКТИРОВАТЬ:

я забыл упомянуть, что веб-службы Exchange доступны только в 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("someone@fabrikam.com");
message.Save();

здесь вы найдете введение: http://msdn.microsoft.com/en-us/library/dd637749(v=exchg.80).aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...