通过MS Outlook发送电子邮件并禁用警告

本文关键字:警告 电子邮件 MS Outlook 通过 | 更新日期: 2023-09-27 18:22:04

我有一个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();

通过MS Outlook发送电子邮件并禁用警告

有几种方法可以做到这一点你可以禁用弹出窗口,如@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("someone@fabrikam.com");
message.Save();

请在此处查看介绍:http://msdn.microsoft.com/en-us/library/dd637749(v=exchg.80).aspx

最简单的解决方案之一是使用Exchange的SMTP服务器。下面是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已启用。