C# 互操作Outlook-从其他邮箱发送约会
我在Outlook中设置了两个邮箱 我将它们称为“email1@mail.com“和”email2@mail.com“ 我想使用Interop创建约会并将其发送到特定的电子邮件地址日历,而不仅仅是默认的outlook帐户C# 互操作Outlook-从其他邮箱发送约会,c#,email,outlook,interop,appointment,C#,Email,Outlook,Interop,Appointment,我在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 {
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;
}
}
}
这段代码完美地将电子邮件自动发送到“test@gmail.com“从我的电子邮件”email2@mail.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中设置我的两个电子邮件地址的方式:
这两个电子邮件地址都有不同的用户名,并且来自不同的域/邮件服务器,如该屏幕截图所示
是否有人能看到我正在制造的问题,或者是否有不同的解决方案
谢谢。不清楚您是在单一邮件配置文件中设置了两个帐户,还是在单独的配置文件中设置了两个帐户 AppointmentItem类的属性允许设置一个Account对象,该对象表示发送AppointmentItem的帐户。因此,SendUsingAccount属性可用于指定在调用send方法时应用于发送AppointmentItem的帐户。我想这不是你要找的 无论如何,您可以使用Store类的方法,该方法返回一个Folder对象,该对象表示存储中的默认文件夹,并且是FolderType参数指定的类型。此方法类似于命名空间对象的GetDefaultFolder方法。不同之处在于,此方法获取与帐户关联的传递存储上的默认文件夹,而NameSpace.GetDefaultFolder返回当前配置文件的默认存储上的默认文件夹 因此,您可以获取所需帐户的日历文件夹,并在其中添加新约会 您可能会发现MSDN中的以下文章很有帮助: