#c# #outlook #office365
#c# #outlook #office365
Вопрос:
Я настроил свою учетную запись Outlook Office 365 и хочу получать электронные письма из своего почтового ящика Outlook, ранее мы использовали службу Exchange в нашем коде, но теперь мы больше не можем использовать службу Exchange из-за того, что EWS his больше не доступен в Microsoft.
Не могли бы вы помочь мне, как я могу получить свои электронные письма из учетной записи Outlook office 365.
Я прилагаю образец кода, который я создал, но я не могу прочитать электронные письма.
В приведенном ниже коде я попытался получить электронную почту через сервер протокола IMAP4. Когда я запускаю код, я получаю эту ошибку — ReceiveOutlookMail.exe ‘ вышел с кодом 0 (0x0).
class Program
{
// Generate an unqiue email file name based on date time
static string _generateFileName(int sequence)
{
DateTime currentDateTime = DateTime.Now;
return string.Format("{0}-{1:000}-{2:000}.eml",
currentDateTime.ToString("yyyyMMddHHmmss", new CultureInfo("en-US")),
currentDateTime.Millisecond,
sequence);
}
static void Main(string[] args)
{
try
{
// Create a folder named "inbox" under current directory
// to save the email retrieved.
string localInbox = string.Format("{0}\inbox", Directory.GetCurrentDirectory());
// If the folder is not existed, create it.
if (!Directory.Exists(localInbox))
{
Directory.CreateDirectory(localInbox);
}
// Hotmail/MSN IMAP4 server is "imap-mail.outlook.com"
//MailServer oServer = new MailServer("imap-server-name",
// "liveid@hotmail.com", "yourpassword", ServerProtocol.Imap4);
// For office 365 user, please change server to:
MailServer oServer = new MailServer("imap-server-name",
"test@gmail.com", "password", ServerProtocol.Imap4);
// Enable SSL connection.
oServer.SSLConnection = true;
// Set 993 SSL port
oServer.Port = 993;
MailClient oClient = new MailClient("TryIt");
oClient.Connect(oServer);
// retrieve unread/new email only
oClient.GetMailInfosParam.Reset();
oClient.GetMailInfosParam.GetMailInfosOptions = GetMailInfosOptionType.NewOnly;
MailInfo[] infos = oClient.GetMailInfos();
Console.WriteLine("Total {0} unread email(s)rn", infos.Length);
for (int i = 0; i < infos.Length; i )
{
MailInfo info = infos[i];
Console.WriteLine("Index: {0}; Size: {1}; UIDL: {2}",
info.Index, info.Size, info.UIDL);
// Receive email from IMAP4 server
Mail oMail = oClient.GetMail(info);
Console.WriteLine("From: {0}", oMail.From.ToString());
Console.WriteLine("Subject: {0}rn", oMail.Subject);
// Generate an unqiue email file name based on date time.
string fileName = _generateFileName(i 1);
string fullPath = string.Format("{0}\{1}", localInbox, fileName);
// Save email to local disk
oMail.SaveAs(fullPath, true);
// mark unread email as read, next time this email won't be retrieved again
if (!info.Read)
{
oClient.MarkAsRead(info, true);
}
// if you don't want to leave a copy on server, please use
// oClient.Delete(info);
// instead of MarkAsRead
}
// Quit and expunge emails marked as deleted from IMAP4 server.
oClient.Quit();
Console.WriteLine("Completed!");
}
catch (Exception ep)
{
Console.WriteLine(ep.Message);
}
}
}
}
Комментарии:
1. См . Следующее : emailarchitect.net/eagetmail/kb/csharp.aspx?cat=1
2. @jdweng да, я взял код только из этой ссылки, когда я запускаю код, я получаю это сообщение об ошибке — «Сбой операции сокета, потому что хост назначения не работает»
3. Работает ли код с вашего домашнего компьютера? Сбой происходит только в сети вашей компании? Я думаю, что это может быть проблема с номером порта. Проверьте с помощью своего MIS номер порта. Некоторые компании используют разные номера портов. Возможно, у вас есть брандмауэр или средство проверки на вирусы, которое блокирует порт. Также проверьте правильность URL-адреса сервера.
4. EWS очень доступен и поддерживается. Они только что сказали, что будут инвестировать в новые функции в Graph. Но EWS все еще существует, и сама MS использует его внутри для некоторых функций (например, OOF)
5. @DmitryStreblechenko Я согласен, но они удалили базовую аутентификацию из EWS. Итак, как мы можем выполнить проверку подлинности при использовании EWS?