0
아래 코드는 매우 저조합니다. .Net StopWatch 클래스를 사용하여 어떤 코드가 느려졌는지 확인했습니다. 20 이메일매우 느린 EWS API로 이메일 보내기
message.SendAndSaveCopy();
예컨대 배치 : 이 줄은 문제가 될 것으로 보인다 첫번째 이메일을 보내 약 2 초 정도이 시간이 점차-18 초가 걸립니다 20 이메일까지 증가한다.
public int SendBulkMarketing(bool CheckDelivery)
{
int iCounter = 0;
DataTable dt = null;
try
{
DeliveryReportDAL myDeliveryReportDAL = new DeliveryReportDAL();
dt = myDeliveryReportDAL.GetListMessageToSend('E');
if (dt == null) return iCounter;
iCounter = dt.Rows.Count;
}
catch (Exception ex)
{
new Util().LogError(ex, "SMTP:: SendBulkMarketing 1st catch");
return 0;
}
if (iCounter > 0)
{
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013_SP1);
service.Credentials = new WebCredentials(Account_UserName, Account_Password, Account_Domain);
service.Url = new Uri(Service_URL);
for (int I = 0; I < iCounter; ++I)
{
try
{
string myGUID = "{" + dt.Rows[I]["GUID"].ToString() + "}";
if (IsValidEmailAddress(dt.Rows[I]["OwnerEmail"].ToString()) == false)
{
DeliveryReportDAL myReport = new DeliveryReportDAL();
myReport.SaveSentStatus(myGUID, 'G', 3);
continue;
}
EmailMessage message = new EmailMessage(service);
message.Subject = dt.Rows[I]["TemplateSubject"].ToString();
message.Body = dt.Rows[I]["TemplateText"].ToString().Replace("\0", " ");
message.ToRecipients.Add(dt.Rows[I]["OwnerEmail"].ToString());
message.IsDeliveryReceiptRequested = true;
Guid myPropertySetId = new Guid(myGUID);
ExtendedPropertyDefinition myExtendedPropertyDefinition = new ExtendedPropertyDefinition(myPropertySetId, "blablabla", MapiPropertyType.String);
ServicePointManager.ServerCertificateValidationCallback =
delegate(object sender1,
System.Security.Cryptography.X509Certificates.X509Certificate certificate,
System.Security.Cryptography.X509Certificates.X509Chain chain,
System.Net.Security.SslPolicyErrors sslPolicyErrors)
{ return true; };
message.SendAndSaveCopy();
DeliveryReportDAL myReport1 = new DeliveryReportDAL();
myReport1.SaveSentStatus(dt.Rows[I]["GUID"].ToString(), 'G', 1);
}
catch (Exception ex)
{
new Util().LogError(ex, "SMTP:: SendBulkMarketing 2nd catch");
}
}
}
return iCounter;
}
필자는 코드 성능 향상에 큰 도움을 주셔서 감사합니다.
나는 정확한 문제를 잘 모릅니다하지만 링크가 더 디버깅에 당신을 위해 도움이 될 수 아래 이를 읽고 더 로깅을 확인하려고 LINK 추적하십시오 https://blogs.msdn.microsoft.com/를 webdav_101/2015/05/03/ews-best-practices-tracing-and-logging/ 모범 사례를 보려면 여기를 읽어보십시오. https://blogs.msdn.microsoft.com/webdav_101/2016/04/12/ews -managed-api-coding-for-exchange/ 결과가 알려 주시면 알려주세요. –
@SivakrishnaDonepudi 귀하의 도움에 감사드립니다. 그러나 로깅/추적 기능을 이미 활용했지만 어떤 답변도 제공하지 못했으며 모범 사례도 완전히 알고 있습니다. 이 문제는 Exchange 서버의 정책, 특히 MessageRateLimit 정책의 제한으로 인한 것일 수 있습니다. 나는 이것을 조사 중이다. – MadDev