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

时间:2012-02-01 18:38:16

标签: c# outlook exchange-server

我有一个C#程序,我将每天运行(通过Windows Scheduler)。该计划是向我的团队发送每日报告。 我写了以下内容来发送电子邮件,它的工作原理。唯一的问题是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 个答案:

答案 0 :(得分: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("someone@fabrikam.com");
message.Save();

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

答案 1 :(得分:1)

最简单的解决方案之一是使用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。