在C#Windows Forms应用程序上从许多不同的电子邮件平台读取邮件

时间:2018-11-14 19:14:50

标签: c# visual-studio-2017 mailmessage

我正在尝试从c#上的不同邮件平台读取邮件。很多人说:

Microsoft.Office.Interop.Outlook.NameSpace nameSpace = 
application.GetNamespace("MAPI");
nameSpace.Logon("", "", Missing.Value, Missing.Value);

inboxFolder = 
NameSpace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFo
lders.olFolderInbox);
Console.WriteLine("Folders: {0}", inboxFolder.Folders.Count);

尽管这对我没有用。 告诉我     Microsoft.Interop.Outlook 不存在。 我想知道怎么做

谢谢

2 个答案:

答案 0 :(得分:1)

似乎您尚未添加对Microsoft.Office.Interop命名空间的引用。您需要在访问Outlook之前下载Microsoft.Office.Interop.Outlook.dll。这是访问收件箱文件夹的示例代码:

using System;
using System.Collections.Generic;
using Outlook = Microsoft.Office.Interop.Outlook;
   public static class OutlookMailF
    {
        public static Outlook.ApplicationClass application = new Outlook.ApplicationClass();
        static Outlook.NameSpace nameSpace = application.GetNamespace("MAPI");
        static Outlook.MAPIFolder inbox = nameSpace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
        static Outlook.MAPIFolder sent = nameSpace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail);

    public static List<Outlook.MailItem> GetInbox()
    {
        List<Outlook.MailItem> allMails = new List<Outlook.MailItem>();
        //inbox u tüm maillere ekle.
        foreach (object item in inbox.Items)
        {
            if (item is Outlook.MailItem)
            {
                allMails.Add(item as Outlook.MailItem);
            }
        }
    }
}

答案 1 :(得分:0)

仅当您仅使用Exchange / Office帐户时,MAPI / Office.Interop.Outlook才真正有用。如果是这种情况,则需要将此名称空间添加为引用。 如果您的计算机上没有此功能,则可以下载并安装Office.Interop程序包。

对于其他电子邮件提供商,大多数情况下;检索电子邮件是使用POP3或IMAP协议完成的。 您可以将几个包和/或项目添加到项目中=>搜索C#IMAP或C#POP3

要发送电子邮件,您将使用SMTP协议,该协议在Net Framework中可用。