C#Outlook Interop从文件夹发送

时间:2011-06-29 04:06:56

标签: c# outlook sendmail

我正在尝试从列为文件夹的电子邮件地址发送电子邮件。基本上我有一个分配了电子邮件地址的文件夹。每当有什么内容发送到该电子邮件时,它都会转到该文件夹电子邮件地址不是分配给我的帐户。我会使用SMTP但我们的公司网络不允许这样做。

如何从此文件夹的电子邮件中以C#发送电子邮件?

我的代码设置如下。

Outlook.Application oApp = new Outlook.Application();

Outlook.NameSpace oNS = oApp.GetNamespace("mapi");
oNS.Logon(Missing.Value, Missing.Value, true, true);

Outlook.MailItem oMsg = (Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);

oMsg.Subject = subject;

string html;
html = message;

html = html.Replace("\n","<br/>");
oMsg.HTMLBody = html;
Outlook.Recipients oRecips = (Outlook.Recipients)oMsg.Recipients;
Outlook.Recipient oRecip = (Outlook.Recipient)oRecips.Add(to);


//Rest of my closing stuff here.

2 个答案:

答案 0 :(得分:0)

如果您已经拥有该文件夹的电子邮件地址(您没有提及这是否是问题的一部分,但听起来不是这样),则您不必使用Outlook互操作。试试System.Net.Mail中的课程。 This site有一些很好的例子,但这里有一些快速的东西:

const string PR_SMTP_ADDRESS =
    "http://schemas.microsoft.com/mapi/proptag/0x39FE001E";
...

var msg = new MailMessage();
msg.From = new MailAddress(recipient.PropertyAccessor.GetProperty(PR_SMTP_ADDRESS).ToString());
msg.To.Add(new MailAddress(folderAddress));
msg.Subject = subject;
msg.IsBodyHtml = true;
msg.Body = html;

var smtpClient = new SmtpClient("{SMTP server address or IP}");
smtpClient.Send(msg);

我只猜测我收到收件人地址的部分,它基于this MSDN page

答案 1 :(得分:0)

在我看来,整个文件夹里的东西与你的问题无关(如果我错了,请纠正我),所有这一切都归结为你想通过Outlook发送一封带有特定回复地址的电子邮件。您可以将MailItem.SenderEmailAddress用于此目的:

oMsg.SenderEmailAddress = "my.special.address@domain.com"

作为替代方案,您可以将回复地址添加到MailItem.ReplyRecipients集合。