从asp.net中的其他服务器读取Outlook电子邮件

时间:2014-01-14 11:12:53

标签: c# asp.net outlook

我想使用我的asp.net应用程序阅读来自其他服务器的outlook电子邮件。我能够从我的系统中读取outlook电子邮件。我正在使用以下代码,我还添加了一个DLL的参考Microsoft.Office.Interop.Outlook。我的代码: -

Microsoft.Office.Interop.Outlook.Application myApp = new Microsoft.Office.Interop.Outlook.Application();
Microsoft.Office.Interop.Outlook.NameSpace mapiNameSpace = myApp.GetNamespace("MAPI");
Microsoft.Office.Interop.Outlook.MAPIFolder myInbox = mapiNameSpace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox);
Microsoft.Office.Interop.Outlook.MAPIFolder mySend = mapiNameSpace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderSentMail);

int count = myInbox.Items.Count;
string sub = ((Microsoft.Office.Interop.Outlook.MailItem)myInbox.Items[count]).Subject;

请告诉我我需要在代码中进行的更改,以便我可以从其他服务器读取Outlook邮件。

由于

2 个答案:

答案 0 :(得分:1)

使用Interop API无法完成此操作,您需要在同一台计算机上安装Outlook。相反,您应该使用IMAP / POP协议直接从Exchange服务器进行阅读。

MailSystem.NET是一个免费的库(开源)库,支持各种协议(包括IMAP4 / POP3)。

根据评论,如果您向上运行Exchange 2007,推荐的阅读电子邮件的方法是使用Exchange Web Services

答案 1 :(得分:0)

private void BindData()
{ 
    OutLook._Application _app = new OutLook.Application();
    OutLook._NameSpace _ns = _app.GetNamespace("MAPI");
    OutLook.MAPIFolder inbox = _ns.GetDefaultFolder(OutLook.OlDefaultFolders.olFolderInbox);
    _ns.SendAndReceive(true);
    dt = new DataTable("Inbox");
    dt.Columns.Add("Sender", typeof(string));
    dt.Columns.Add("Emails", typeof(string));
    dt.Columns.Add("Subject", typeof(string));
    dt.Columns.Add("Date", typeof(DateTime));        
    dt.Columns.Add("Body", typeof(string));
    int counter = 0;
    int noofemail = 0;
    for (counter = inbox.Items.Count; counter >= 1; counter--)
    {  OutLook.MailItem item = (OutLook.MailItem)inbox.Items[counter];           
            string Reply="";
            string ReplyAll = "";
            string Forward="";
            string Subject="";             
            Reply = string.Format("<a href = 'mailto:{1}' class='btn' style='color:white'>{0}</a>", "Reply", item.SenderEmailAddress);
            ReplyAll = string.Format("<a href = 'mailto:{1},{2}' class='btn' style='color:white'>{0}</a>", "ReplyAll", item.SenderEmailAddress, item.CC);
            Forward = string.Format("<a href = 'mailto:{1}' class='btn' style='color:white'>{0}</a>", "Forward", "");
            Subject = string.Format("<b><span style='color:#000000'>{0}</span></b><b style='float:right;color:#000000'>{1}</b><br><span style='color:#999999'>{2}</span>", item.SenderName, item.SentOn.ToLongTimeString(), item.Subject);           
            dt.Rows.Add(new object[] { item.SenderName,item.SenderEmailAddress,Subject, item.SentOn.ToLongDateString() + " " + item.SentOn.ToLongTimeString(), Reply, ReplyAll, Forward, item.HTMLBody });             
    }
    EnumerableRowCollection<DataRow> rows = null;
    rows = (from row in dt.AsEnumerable()
            where row.Field<DateTime>("Date") > DateTime.Now.AddDays(-30)
            orderby row["Date"] descending
            select row);
    dt.Rows.Add(rows);
   gvEmail.DataSource = dt;
   gvEmail.DataBind();
    }