我需要在visual studio中创建一个应用程序来检索收件箱,从交换电子邮件帐户发送邮件和附件,以及能够标记为已读和删除所述邮件(如果您愿意,可以使用类似Outlook的应用程序)
我有代码从outlook中检索收件箱和附件,但我需要将它与outlook分开,或者至少我需要它才能在向我显示消息之前询问凭据。这是我的代码:
Outlook.Application Application = new Outlook.Application();
Outlook.NameSpace OutlookNameSpace = Application.GetNamespace("MAPI");
Outlook.MAPIFolder inbox = OutlookNameSpace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
items = inbox.Items;
//Fills a listbox with the inbox messages
public void fillInboxListBox()
{
for (int i = 1; i <= inbox.Items.Count; i++)
{
//lsbxMessages is a ListBox control
lsbxMessages.Items.Add(((Outlook.MailItem)inbox.Items[i]).Subject);
}
}
//When an item on the listbox is selected, it loads the mail on a separate rich text box
private void lsbxMessages_SelectedIndexChanged(object sender, EventArgs e)
{
//lblSubject is a label where I put the subject of the message
lblSubject.Text = ((Outlook.MailItem)inbox.Items[(lsbxMessages.SelectedIndex + 1)]).Subject;
//lblSender this is where I put the sender name and email adress
lblSender.Text = ((Outlook.MailItem)inbox.Items[(lsbxMessages.SelectedIndex + 1)]).SenderName + " <" + ((Outlook.MailItem)inbox.Items[(lsbxMessages.SelectedIndex + 1)]).SenderEmailAddress + ">";
//I put the body of the email in a richtextbox
rtbBody.Text = ((Outlook.MailItem)inbox.Items[(lsbxMessages.SelectedIndex + 1)]).Body;
//lblDateSent shows the date the message was sent
lblDateSent.Text = ((Outlook.MailItem)inbox.Items[(lsbxMessages.SelectedIndex + 1)]).SentOn.ToString();
//rtbReceiver is a rich text box where I show all the adresses the email was sent to
rtbReceiver.Text = ((Outlook.MailItem)inbox.Items[(lsbxMessages.SelectedIndex + 1)]).To;
}
有关如何询问用户名和密码的任何想法?
答案 0 :(得分:0)
您可以通过任何要设计的对话框询问,然后必须通过NameSpace.LogOn
方法将参数传递给Outlook。默认情况下,您将打开当前用户的默认配置文件。
这是一个很好的教程(虽然它只显示登录默认配置文件而不需要用户名,但是添加自己的对话框以获取用户名/密码很简单):
https://msdn.microsoft.com/en-us/library/office/ff462097.aspx
另外要注意的是,如果Outlook已经运行,则无法创建另一个Outlook实例,您必须获取正在运行的应用程序的实例。 (好吧,你可以创建另一个“实例”,但它不会创建一个新的进程,它将使用现有的进程和加载的配置文件)。即便如此,我认为你不能加载多个一次配置文件。