У меня ошибка при попытке объявить новый общий адрес электронной почты ...
Объяснение:
Я разрабатываю службу Windows для получения общих сообщений электронной почты с использованием exchange EWS c # исохранить его содержимое в БД, а также его вложения и квитанции ... и т. д.
как следующий код
public void GetSPCallCenterEmails()
{
try
{
ExchangeService service = new ExchangeService();
EmailApprovalRequestBLL EmailApprovalRequest = new EmailApprovalRequestBLL();
string SPUserName ="UserName";
string SPPassword ="Password"
string SPDomain ="LocalDomain";
int EmailsToGetCount =50;
string SPEmail ="sharedemail@companyLocalDomain.com";
string RequestAttachPath ="Path";
service.Credentials = new WebCredentials(SPUserName, SPPassword, SPDomain);
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
service.Url = new Uri("https://CASURL/EWS/Exchange.asmx");
service.UseDefaultCredentials = false;
EmailApprovalRequest.GetNewEmails(service, SPEmail, RequestAttachPath, EmailsToGetCount);
}
catch (Exception ex)
{
ExceptionHandlerConstants.CreateException(ex, "Service1.cs", "GetSPCallCenterEmails", "Front Service");
}
}
===============================================================================
public bool GetNewEmails(ExchangeService service, string EmailToGetMails, string SaveAttachmentPath, int EmailsToGetCount)
{
try
{
List<EmailMessage> UnReadMessages = new List<EmailMessage>();
var IsNewEmails = EmailingService.GetSpecificSharedMailMessages(EmailToGetMails, service, EmailsToGetCount, out UnReadMessages);
if (IsNewEmails)
{
//Handle New Emails
return true;
}
else
{
return false;
}
}
catch (Exception ex)
{
ExceptionHandlerConstants.CreateException(ex, "EmailApprovalRequestBLL", "GetNewEmails", "GetNewEmails_BLL");
return false;
}
}
================================================================================
public static bool GetSpecificSharedMailMessages(string EmailAddress,ExchangeService service, int EmailsToGetCount,out List<EmailMessage> NewMessages)
{
try
{
FolderId SharedMailbox = new FolderId(WellKnownFolderName.Inbox, EmailAddress);
ItemView itemView = new ItemView(EmailsToGetCount);
var Emails = service.FindItems(SharedMailbox, itemView);
List<EmailMessage> FinalEmailsList = new List<EmailMessage>();
foreach (EmailMessage msg in Emails)
{
//Retrieve Additional data for Email
EmailMessage message = EmailMessage.Bind(service,(EmailMessage.Bind(service, msg.Id)).Id,new PropertySet(BasePropertySet.FirstClassProperties,new ExtendedPropertyDefinition(0x1013, MapiPropertyType.Binary)));
FinalEmailsList.Add(message);
}
//Get UnRead Messages Only
FinalEmailsList = FinalEmailsList.ToList();
if (FinalEmailsList.Count>0)
{
NewMessages = FinalEmailsList;
return true;
}
else
{
NewMessages = null;
return false;
}
}
catch (Exception ex)
{
ExceptionHandlerConstants.CreateException(ex, "EmailingService", "GetSpecificSharedMailMessages", "GetSpecificSharedMailMessages_EmailingService");
NewMessages = null;
return false;
}
}
=================================================
Ошибка: Исключение: --------- System.ArgumentNullException: значение не может быть нулевым.Имя параметра: s в System.Convert.FromBase64String (String s) в Microsoft.Exchange.WebServices.Data.MapiTypeConverter. <. Cctor> b__14 (String s)
Примечание: эта строка генерирует ошибку «FolderId SharedMailbox»= новый FolderId (WellKnownFolderName.Inbox, EmailAddress); "
**** Примечание 2: эта служба генерирует эту ошибку на Windows Server 2012 r2 и не создает эту проблему на Windows 10 ****