01.04.2020, 17:15 | #1 |
Участник
|
D365FO отправка email сбивает batch
D365FO, установлен модуль SKS TAS (на него и грешу ибо до последнего апдейта все было хорошо).
Раз в неделю пользователь запускает batch на рассылку писем клиентам. Если в это время кто то отправляет подтверждение Payment Journal батч рассылающий письма перестает работать и его надо перезапускать. Просмотрел код, все смотриться нормально. MS говорит что это не на их стороне проблема, SKS говорит то же самое )) Подскажиет какие могут быть причины подобного сбоя. Любые идеи приветствуются Код: System.Net.Mail.SmtpException: Failure sending mail. ---> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) --- End of inner exception stack trace --- at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) at System.Net.FixedSizeReader.ReadPacket(Byte[] buffer, Int32 offset, Int32 count) at System.Net.Security._SslStream.StartFrameBody(Int32 readBytes, Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security._SslStream.StartFrameHeader(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security._SslStream.StartReading(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security._SslStream.ProcessRead(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.TlsStream.Read(Byte[] buffer, Int32 offset, Int32 size) at System.Net.PooledStream.Read(Byte[] buffer, Int32 offset, Int32 size) at System.Net.Mail.SmtpPooledStream.Dispose(Boolean disposing) at System.IO.Stream.Close() at System.Net.ConnectionPool.Destroy(PooledStream pooledStream) at System.Net.ConnectionPool.PutConnection(PooledStream pooledStream, Object owningObject, Int32 creationTimeout, Boolean canReuse) at System.Net.Mail.SmtpConnection.GetConnection(ServicePoint servicePoint) at System.Net.Mail.SmtpClient.GetConnection() at System.Net.Mail.SmtpClient.Send(MailMessage message) --- End of inner exception stack trace --- at System.Net.Mail.SmtpClient.Send(MailMessage message) at Dynamics.AX.Application.SysMailerSMTP.`sendNonInteractive(MailMessage _message) in xppSource://Source/ApplicationFoundation\AxClass_SysMailerSMTP.xpp:line 76 at Dynamics.AX.Application.SysMailerSMTP.sendNonInteractive(MailMessage _message) at Dynamics.AX.Application.SysMailerFactory.`sendNonInteractive(MailMessage _message) in xppSource://Source/ApplicationFoundation\AxClass_SysMailerFactory.xpp:line 146 at Dynamics.AX.Application.SysMailerFactory.sendNonInteractive(MailMessage _message) at Dynamics.AX.Application.SKS_EFT_SendMail.sendMail(SKS_EFT_Module _eftModule, NoYes _advEmail, Boolean @_advEmail_IsDefaultSet) in xppSource://Source/TAS\AxClass_SKS_EFT_SendMail.xpp:line 1847 at Dynamics.AX.Application.SKS_EFT_SendMail.sendMail(SKS_EFT_Module _eftModule, NoYes _advEmail) at Dynamics.AX.Application.SKS_EFT_SendMail.`process_EFT_eMail(String _fileNbr, SKS_EFT_Module _module, SKS_EFT_EmailSendType _emailType, String _emailAddr, String _account, NoYes _advEmail, Boolean @_emailType_IsDefaultSet, Boolean @_emailAddr_IsDefaultSet, Boolean @_account_IsDefaultSet, Boolean @_advEmail_IsDefaultSet) in xppSource://Source/TAS\AxClass_SKS_EFT_SendMail.xpp:line 1334 at Dynamics.AX.Application.SKS_EFT_SendMail.process_EFT_eMail(String _fileNbr, SKS_EFT_Module _module, SKS_EFT_EmailSendType _emailType, String _emailAddr, String _account, NoYes _advEmail, Boolean @_emailType_IsDefaultSet, Boolean @_emailAddr_IsDefaultSet, Boolean @_account_IsDefaultSet, Boolean @_advEmail_IsDefaultSet) at Dynamics.AX.Application.SKS_EFT_SendMail.process_EFT_eMail(String _fileNbr, SKS_EFT_Module _module, SKS_EFT_EmailSendType _emailType, String _emailAddr, String _account, NoYes _advEmail) at Dynamics.AX.Application.SKS_EFTAP_CreateSendFileBatch.`run() in xppSource://Source/TAS\AxClass_SKS_EFTAP_CreateSendFileBatch.xpp:line 244 at Dynamics.AX.Application.SKS_EFTAP_CreateSendFileBatch.run() at Dynamics.AX.Application.BatchRun.runJobStaticCodeFromBuffer(Batch buffer) in xppSource://Source/ApplicationPlatform\AxClass_BatchRun.xpp:line 872 at Dynamics.AX.Application.BatchRun.runJobStaticFromBuffer(Batch buffer) in xppSource://Source/ApplicationPlatform\AxClass_BatchRun.xpp:line 796 at Microsoft.Dynamics.AX.Batch.Batch.ExecuteOneBatchJobTask(BatchTaskInfoWrapper taskInfo) |
|
02.04.2020, 10:49 | #2 |
Участник
|
Цитата:
Сообщение от syl
D365FO, установлен модуль SKS TAS (на него и грешу ибо до последнего апдейта все было хорошо).
Раз в неделю пользователь запускает batch на рассылку писем клиентам. Если в это время кто то отправляет подтверждение Payment Journal батч рассылающий письма перестает работать и его надо перезапускать. Просмотрел код, все смотриться нормально. MS говорит что это не на их стороне проблема, SKS говорит то же самое )) Подскажиет какие могут быть причины подобного сбоя. Любые идеи приветствуются Код: System.Net.Mail.SmtpException: Failure sending mail. ---> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) --- End of inner exception stack trace --- at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) at System.Net.FixedSizeReader.ReadPacket(Byte[] buffer, Int32 offset, Int32 count) at System.Net.Security._SslStream.StartFrameBody(Int32 readBytes, Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security._SslStream.StartFrameHeader(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security._SslStream.StartReading(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security._SslStream.ProcessRead(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.TlsStream.Read(Byte[] buffer, Int32 offset, Int32 size) at System.Net.PooledStream.Read(Byte[] buffer, Int32 offset, Int32 size) at System.Net.Mail.SmtpPooledStream.Dispose(Boolean disposing) at System.IO.Stream.Close() at System.Net.ConnectionPool.Destroy(PooledStream pooledStream) at System.Net.ConnectionPool.PutConnection(PooledStream pooledStream, Object owningObject, Int32 creationTimeout, Boolean canReuse) at System.Net.Mail.SmtpConnection.GetConnection(ServicePoint servicePoint) at System.Net.Mail.SmtpClient.GetConnection() at System.Net.Mail.SmtpClient.Send(MailMessage message) --- End of inner exception stack trace --- at System.Net.Mail.SmtpClient.Send(MailMessage message) at Dynamics.AX.Application.SysMailerSMTP.`sendNonInteractive(MailMessage _message) in xppSource://Source/ApplicationFoundation\AxClass_SysMailerSMTP.xpp:line 76 at Dynamics.AX.Application.SysMailerSMTP.sendNonInteractive(MailMessage _message) at Dynamics.AX.Application.SysMailerFactory.`sendNonInteractive(MailMessage _message) in xppSource://Source/ApplicationFoundation\AxClass_SysMailerFactory.xpp:line 146 at Dynamics.AX.Application.SysMailerFactory.sendNonInteractive(MailMessage _message) at Dynamics.AX.Application.SKS_EFT_SendMail.sendMail(SKS_EFT_Module _eftModule, NoYes _advEmail, Boolean @_advEmail_IsDefaultSet) in xppSource://Source/TAS\AxClass_SKS_EFT_SendMail.xpp:line 1847 at Dynamics.AX.Application.SKS_EFT_SendMail.sendMail(SKS_EFT_Module _eftModule, NoYes _advEmail) at Dynamics.AX.Application.SKS_EFT_SendMail.`process_EFT_eMail(String _fileNbr, SKS_EFT_Module _module, SKS_EFT_EmailSendType _emailType, String _emailAddr, String _account, NoYes _advEmail, Boolean @_emailType_IsDefaultSet, Boolean @_emailAddr_IsDefaultSet, Boolean @_account_IsDefaultSet, Boolean @_advEmail_IsDefaultSet) in xppSource://Source/TAS\AxClass_SKS_EFT_SendMail.xpp:line 1334 at Dynamics.AX.Application.SKS_EFT_SendMail.process_EFT_eMail(String _fileNbr, SKS_EFT_Module _module, SKS_EFT_EmailSendType _emailType, String _emailAddr, String _account, NoYes _advEmail, Boolean @_emailType_IsDefaultSet, Boolean @_emailAddr_IsDefaultSet, Boolean @_account_IsDefaultSet, Boolean @_advEmail_IsDefaultSet) at Dynamics.AX.Application.SKS_EFT_SendMail.process_EFT_eMail(String _fileNbr, SKS_EFT_Module _module, SKS_EFT_EmailSendType _emailType, String _emailAddr, String _account, NoYes _advEmail) at Dynamics.AX.Application.SKS_EFTAP_CreateSendFileBatch.`run() in xppSource://Source/TAS\AxClass_SKS_EFTAP_CreateSendFileBatch.xpp:line 244 at Dynamics.AX.Application.SKS_EFTAP_CreateSendFileBatch.run() at Dynamics.AX.Application.BatchRun.runJobStaticCodeFromBuffer(Batch buffer) in xppSource://Source/ApplicationPlatform\AxClass_BatchRun.xpp:line 872 at Dynamics.AX.Application.BatchRun.runJobStaticFromBuffer(Batch buffer) in xppSource://Source/ApplicationPlatform\AxClass_BatchRun.xpp:line 796 at Microsoft.Dynamics.AX.Batch.Batch.ExecuteOneBatchJobTask(BatchTaskInfoWrapper taskInfo) |
|
02.04.2020, 13:24 | #3 |
Участник
|
Пока нету. Но в ближайшее время попробую воспроизвести ошибку и посмотреть логи
|
|
02.04.2020, 13:44 | #4 |
Участник
|
Возможно сервер ожидает TLS большей версии. Если это так, то надо добавить что-то типа
X++: Net.ServicePointManager::set_SecurityProtocol (Net.SecurityProtocolType::Tls12) У вас колстеке есть System.Net.TlsStream.Read |
|
|
За это сообщение автора поблагодарили: trud (2). |
03.04.2020, 23:47 | #5 |
Участник
|
Ну суть в том что сообщения отправляются нормально. Проблема возникает если отправка идет одновременно с нескольких источников.
Настройки TLS отсекали бы в любом случае... |
|
04.04.2020, 00:22 | #6 |
Участник
|
Т. е. по сути проблема лишь при паралельной обработке?
|
|
04.04.2020, 01:33 | #7 |
Участник
|
Именно так. Как я и писал, типовая ситуация:
Батч рассылает письма, кто то из сотрудников отправляет подтверждение Payment Journal и в этот момент батч валится с ошибками mail сервера |
|
04.04.2020, 09:30 | #8 |
Модератор
|
Смотрите логи SMTP на предмет throttling. У Office 365 SMTP например лимиты такие что пользоваться им для пакетных рассылок практически невозможно
__________________
-ТСЯ или -ТЬСЯ ? Последний раз редактировалось Vadik; 05.04.2020 в 08:43. |
|