如何通过Outlook Interop Library使用第二个账户或指定文件夹发送邮件?
关于Outlook Interop Library的两个发送/创建项目问题解答
嘿,让我来帮你搞定这两个关于Outlook Interop的问题:
1. 是否可以通过仅与Outlook Interop Library共享的第二个账户发送邮件?
当然可以!核心是要先获取到这个共享账户的Account对象,然后在创建的MailItem上指定SendUsingAccount属性,就能用这个账户发送邮件了。
举个简单的示例代码:
// 获取Outlook应用实例 Outlook.Application outlookApp = new Outlook.Application(); Outlook.NameSpace ns = outlookApp.GetNamespace("MAPI"); // 找到目标共享账户(这里可以通过账户名称或索引定位) Outlook.Account targetAccount = null; foreach (Outlook.Account account in outlookApp.Session.Accounts) { if (account.DisplayName == "你的共享账户名称") { targetAccount = account; break; } } // 创建邮件并指定发送账户 if (targetAccount != null) { Outlook.MailItem mail = (Outlook.MailItem)outlookApp.CreateItem(Outlook.OlItemType.olMailItem); mail.Subject = "测试邮件"; mail.To = "收件人邮箱"; mail.Body = "这是通过共享账户发送的邮件"; mail.SendUsingAccount = targetAccount; // 关键:指定发送账户 mail.Send(); }
2. 是否可以通过Microsoft Interop Outlook Library,使用指定的第二个邮件文件夹发送邮件?
你原来的代码问题出在这里:folder.Application.CreateItem()是从全局Outlook应用层面创建项目,默认会放到你的标准默认文件夹里,和你选中的folder没有关联。要在指定文件夹里创建项目(不管是邮件还是约会),应该用该文件夹的Items.Add()方法。
另外注意:你代码里创建的是AppointmentItem(约会项目),如果是要处理邮件文件夹,应该创建MailItem(邮件项目),我分开给你示例:
示例1:在指定邮件文件夹创建并发送邮件
Outlook.Application outlookApp = new Outlook.Application(); Outlook.Folder targetFolder = (Outlook.Folder)outlookApp.ActiveExplorer().Session.Folders[1]; // 直接在目标文件夹的Items集合里创建邮件 Outlook.MailItem mail = (Outlook.MailItem)targetFolder.Items.Add(Outlook.OlItemType.olMailItem); mail.Subject = "从指定文件夹发送的测试邮件"; mail.To = "收件人邮箱"; mail.Body = "这封邮件会保存在你指定的文件夹(发送后在该文件夹的已发送里)"; // 如果需要指定发送账户,同样可以设置SendUsingAccount属性 mail.Send();
示例2:如果是要在指定日历文件夹创建约会(纠正你原代码的问题)
Outlook.Application outlookApp = new Outlook.Application(); Outlook.Folder targetCalendarFolder = (Outlook.Folder)outlookApp.ActiveExplorer().Session.Folders[1]; // 在目标日历文件夹创建约会 Outlook.AppointmentItem agendaMeeting = (Outlook.AppointmentItem)targetCalendarFolder.Items.Add(Outlook.OlItemType.olAppointmentItem); agendaMeeting.Subject = "测试会议"; agendaMeeting.Start = DateTime.Now.AddHours(1); agendaMeeting.End = DateTime.Now.AddHours(2); agendaMeeting.Save(); // 保存后就会出现在你指定的日历文件夹里
这样修改后,创建的项目就会关联到你选中的目标文件夹,而不是默认文件夹啦。
内容的提问来源于stack exchange,提问作者user3636659
相关产品推荐
相关产品推荐

