我想使用我的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邮件。
由于
答案 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();
}