【发布时间】:2015-04-08 16:00:24
【问题描述】:
我在 Outlook 中设置了两个邮箱。
我将它们称为“email1@mail.com”和“email2@mail.com”。
我想使用 Interop 创建约会并将其发送到特定的电子邮件地址日历,而不仅仅是默认的 Outlook 帐户。
using System;
using System.Diagnostics;
using System.Reflection;
using Outlook = Microsoft.Office.Interop.Outlook;
namespace Program
{
class Program
{
public static void Main(string[] args)
{
// Create the Outlook application.
Microsoft.Office.Interop.Outlook.Application oApp = new Microsoft.Office.Interop.Outlook.Application();
Outlook.Account account = oApp.Session.Accounts["email2@mail.com"];
// Get the NameSpace and Logon information.
Microsoft.Office.Interop.Outlook.NameSpace oNS = oApp.GetNamespace("mapi");
// Log on by using a dialog box to choose the profile.
oNS.Logon(Missing.Value, Missing.Value, true, true);
// Create a new mail item.
Microsoft.Office.Interop.Outlook.MailItem oMsg =(Microsoft.Office.Interop.Outlook.MailItem) oApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
// Set the subject.
oMsg.Subject = "test";
// Set HTMLBody.
oMsg.HTMLBody = "test";
oMsg.To = "test@gmail.com";
//oMsg.CC = _cc;
//oMsg.BCC = _bcc;
oMsg.Save();
oMsg.SendUsingAccount = account;
// Add a recipient.
//Microsoft.Office.Interop.Outlook.Recipients oRecips = (Microsoft.Office.Interop.Outlook.Recipients)oMsg.Recipients;
// TODO: Change the recipient in the next line if necessary.
//Microsoft.Office.Interop.Outlook.Recipient oRecip = (Microsoft.Office.Interop.Outlook.Recipient)oRecips.Add(_recipient);
//oRecip.Resolve();
// Send.
(oMsg as Microsoft.Office.Interop.Outlook._MailItem).Send();
// Log off.
oNS.Logoff();
// Clean up.
//oRecip = null;
//oRecips = null;
oMsg = null;
oNS = null;
oApp = null;
}
}
}
此代码可以完美地从我的电子邮件“email2@mail.com”自动向“test@gmail.com”发送电子邮件。
但是,我想为特定的电子邮件地址自动创建约会/会议。
这是我目前的尝试:
using System;
using System.Diagnostics;
using System.Reflection;
using Outlook = Microsoft.Office.Interop.Outlook;
namespace SendEventToOutlook
{
class Program
{
public static void Main(string[] args)
{
try
{
// Create the Outlook application.
Microsoft.Office.Interop.Outlook.Application oApp = new Microsoft.Office.Interop.Outlook.Application();
Outlook.Account account = oApp.Session.Accounts["email2@mail.com"];
// Get the nameSpace and logon information.
Microsoft.Office.Interop.Outlook.NameSpace oNS = oApp.GetNamespace("mapi");
// Log on by using a dialog box to choose the profile.
oNS.Logon(Missing.Value, Missing.Value, true, true);
// Create a new Appointment item.
Microsoft.Office.Interop.Outlook.AppointmentItem appt =
(Microsoft.Office.Interop.Outlook.AppointmentItem)
oApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olAppointmentItem);
appt.Start = DateTime.Now;
appt.End = DateTime.Now.AddDays(7);
appt.Location = "Test";
appt.Body = "Test";
appt.AllDayEvent = false;
appt.Subject = "Test";
appt.Save();
appt.SendUsingAccount = account;
// Log off.
oNS.Logoff();
appt = null;
oNS = null;
oApp = null;
}
catch (Exception ex)
{
Debug.WriteLine("The following error occurred: " + ex.Message);
}
}
}
}
此代码确实成功创建了约会,但它不断为“email1@mail.com”而不是“email2@mail.com”创建约会,这不应该发生,因为我已指定发送帐户为“email2@mail.com”来自以下行:
Outlook.Account account = oApp.Session.Accounts["email2@mail.com"];
然后
appt.SendUsingAccount = account;
这就是我在 Outlook 中设置两个电子邮件地址的方式:http://i.imgur.com/0eopV8A.png
两个电子邮件地址都有不同的用户名,并且来自不同的域/邮件服务器,如该屏幕截图所示。
有没有人能够看到我正在解决的问题,或者是否有其他解决方案?
谢谢。
【问题讨论】:
-
您是否在单个邮件配置文件中设置了两个帐户?还是每个帐户都有两个单独的个人资料?
-
我不太清楚你的意思是什么或如何检查。如果有帮助,这就是我在 Outlook 中设置两个电子邮件地址的方式:i.imgur.com/0eopV8A.png 这两个电子邮件地址都有不同的用户名,并且来自不同的域/邮件服务器,如该屏幕截图所示。希望对您有所帮助。
-
另外,电子邮件地址在控制面板 -> 邮件 (Microsoft Outlook 2013) -> 电子邮件帐户中的显示方式如下:i.imgur.com/mPTq3ll.png
-
谢谢。您可以找到所需的存储,然后调用 GetDefaultFolder 方法来获取特定帐户的日历文件夹。更多信息请参考我的回答。
标签: c# email outlook interop appointment