C#使用Outlook DLL发送电子邮件

C#使用Outlook DLL发送电子邮件,c#,email,outlook-2010,C#,Email,Outlook 2010,在我的应用程序中,我需要发送电子邮件。我无法使用smtp,也无法选择以正常方式安装MS Outlook。我试过了 private Microsoft.Office.Interop.Outlook.Application oApp; private Microsoft.Office.Interop.Outlook._NameSpace oNameSpace; private Microsoft.Office.Interop.Outlook.MAPIFolder oOutboxFolder; oA

在我的应用程序中,我需要发送电子邮件。我无法使用smtp,也无法选择以正常方式安装MS Outlook。我试过了

private Microsoft.Office.Interop.Outlook.Application oApp;
private Microsoft.Office.Interop.Outlook._NameSpace oNameSpace;
private Microsoft.Office.Interop.Outlook.MAPIFolder oOutboxFolder;

oApp = new Outlook.Application();
oNameSpace = oApp.GetNamespace("MAPI");
oNameSpace.Logon(null, null, true, true);

Outlook._MailItem oMailItem = (Outlook._MailItem)oApp.
    CreateItem(Outlook.OlItemType.olMailItem);

    oMailItem.To = toValue;
    oMailItem.Subject = subjectValue;
    oMailItem.Body = bodyValue;
    oMailItem.Send();
如果在计算机上安装并运行Office 2010,则此代码运行良好。但我需要找出引用了哪些DLL。是否可以仅从Outlook获取所需的DLL并使用它们发送电子邮件


请提前感谢

关于如何使用Exchange Web服务通过Exchange服务器发送电子邮件的示例,请参见评论。大部分信息可从以下文件复制到答案中保存

创建并发送电子邮件的示例(在用户的“已发送邮件”文件夹中提供副本)

关于创建的更多代码

稍微复杂一点的是上面代码中使用的服务变量的实例化。哪个是可用的

将尝试从电子邮件地址自动发现exchange服务的url。但是,值得注意的是,除非附加回调方法以验证Exchange默认使用的自签名证书,否则对服务的调用将失败。更多信息


关于如何连接到exchange服务、发送电子邮件、创建会议和日历请求,有大量信息。我还没有亲自测试以上所有内容,但可能会给您一个不错的开始。

顺便说一句,这就是匈牙利符号不再流行的原因;因为一切都是一个对象,所以所有变量最后都以o作为前缀。这些
o
s被认为是Outlook的
o
s:)如果您试图使用Outlook DLL发送电子邮件,我假设在某个地方有一台Exchange server,您不能使用Exchange Web服务执行此任务吗?这可能也是一个选项,但我找不到任何示例或说明如何以这种方式使用它的内容。你能提供一些例子吗?@Alpay请看下面的答案,加入一些例子和我最初从哪里获得信息的链接。
// Create an email message and identify the Exchange service.
EmailMessage message = new EmailMessage(service);

// Add properties to the email message.
message.Subject = "Interesting";
message.Body = "The merger is finalized.";
message.ToRecipients.Add("user1@contoso.com");

// Send the email message and save a copy.
message.SendAndSaveCopy();
ExchangeService service = new ExchangeService();
service.Credentials = new WebCredentials("user1@contoso.com", "password");
service.AutodiscoverUrl("user1@contoso.com");