28.08.2018, 14:17 | #1 |
Участник
|
D365FO: Отправка eMail из кода
Доброго времени суток.
Есть необходимость написания код отправки сообщений. Думал какие проблемы, есть класс SysEmailBatch, как в AX2009 сделаю и все. Но нельзя же просто взять и отправить почту из Д-шки. В общем при отправке сообщений падает ошибка в момент дешифровки пароля smtp: Ошибка в методе Global::editEncryptedField на строке X++: return appl.DecryptForPurpose(_common.(_fieldId), common.encryptionPurpose(_fieldId)); Microsoft.Dynamics.Ax.Xpp.Security.EncryptionException: Encryption error occured. Есть у кого идеи как отправлять сообщения? |
|
28.08.2018, 14:36 | #2 |
Участник
|
Ну вот к примеру http://dev.goshoom.net/en/2016/05/ho...-code-in-ax-7/
|
|
28.08.2018, 14:40 | #3 |
Участник
|
Цитата:
Сообщение от skuull
Ну вот к примеру http://dev.goshoom.net/en/2016/05/ho...-code-in-ax-7/
То есть ошибка падает независимо от режима вызова отправки сообщение интерактивно или нет (с вызовом промежуточной формы для отправки сообщений или без неё, с формированием письма в коде) |
|
29.08.2018, 08:46 | #4 |
Участник
|
Еще как показатель этой же проблемы, еще до отправки сообщений- это при открытии параметров электронной почты на вкладке параметры SMTP выдается ошибка
Неподдерживаемый тип возврата метода для метода данных passwordEdit и ошибка Encryption error occured. P.s. в параметрах пользователя введен логин и пароль другого пользователя (не мои данные). При чем отправка почты через workflow работает без проблем |
|
29.08.2018, 09:11 | #5 |
Злыдни
|
Попробуйте так https://dynamicsaxgyan.wordpress.com...or-operations/
Иначе придется раздавать права на отправку от имени, как указано в https://docs.microsoft.com/en-us/dyn...onfigure-email
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании. Последний раз редактировалось KiselevSA; 29.08.2018 в 09:15. Причина: Дополнительная ссылка |
|
|
За это сообщение автора поблагодарили: sukhanchik (2). |
29.08.2018, 09:47 | #6 |
Участник
|
Я использовал метод sendEmail на таблице SysEmailTable. Все отлично работает.
|
|
31.08.2018, 01:53 | #7 |
Участник
|
Цитата:
Сообщение от IvanS
В общем при отправке сообщений падает ошибка в момент дешифровки пароля smtp: Ошибка в методе Global::editEncryptedField на строке
X++: return appl.DecryptForPurpose(_common.(_fieldId), common.encryptionPurpose(_fieldId)); Microsoft.Dynamics.Ax.Xpp.Security.EncryptionException: Encryption error occured. Есть у кого идеи как отправлять сообщения? Код: Microsoft.Dynamics.Ax.Xpp.Security.EncryptionException: Encryption error occured. Код: System.Security.Cryptography.CryptographicException: Invalid provider type specified Код: [Private Key] Provider Name: Microsoft RSA SChannel Cryptographic Provider Provider type: 12 Код: [Private Key] Provider Name: Microsoft Enhanced RSA and AES Cryptographic Provider Provider type: 24 |
|
|
За это сообщение автора поблагодарили: sukhanchik (6), IvanS (1), vmoskalenko (2). |
31.08.2018, 02:15 | #8 |
Участник
|
Цитата:
Хм, загадочно, тогда дело может быть и не в сертификате шифрования данных. |
|
31.08.2018, 09:06 | #9 |
Участник
|
Цитата:
Сообщение от KiselevSA
Попробуйте так https://dynamicsaxgyan.wordpress.com...or-operations/
Иначе придется раздавать права на отправку от имени, как указано в https://docs.microsoft.com/en-us/dyn...onfigure-email |
|
31.08.2018, 09:10 | #10 |
Участник
|
Цитата:
Сообщение от gl00mie
Посмотрите с помощью PerfView, какое на самом деле лезет исключение и сообщение об ошибке. Сборка Microsoft.Dynamics.AX.Framework.EncryptionEngine.dll ловит исходные исключения и вместо них выбрасывает свою неинформативную фигню, но в трассировке всё должно быть видно.
Хм, загадочно, тогда дело может быть и не в сертификате шифрования данных. |
|
|
За это сообщение автора поблагодарили: sukhanchik (2), gl00mie (2). |
06.09.2018, 14:25 | #11 |
Участник
|
Цитата:
Проблема решается удалением всех зашифрованных данных и созданием новых занчений. Потому что шифруется и дальше конкретного SQL сервера не уходит. Майкрософт автоматизировал это в одну строку: Код: -- Clear encrypted hardware profile merchand properties update dbo.RETAILHARDWAREPROFILE set SECUREMERCHANTPROPERTIES = null where SECUREMERCHANTPROPERTIES is not null |
|
06.09.2018, 14:56 | #12 |
Участник
|
В 2012 пароли для почты шифровались на каждом АОСе - не может быть тут в этом же дело? Т.е. нужно явно ввести пароль при смене АОСа. С учетом D365 без возможности выбора конкретного АОСа для входа, интересно, как фактически происходит сохранение?
__________________
Ivanhoe as is.. |
|
06.09.2018, 16:34 | #13 |
Участник
|
Это еще с 2009-й началось: при шифровании пароля для почты данные сохранялись в локальном реестре, причем с привязкой к порту, на котором работает AOS. В D365 реестр используется для хранения разве что сертификатов (и поэтому они настраиваются заранее и вручную), а всё остальное хранится либо в текстовых конфигах и иных файлах в каталоге приложения, либо в базе, иначе развертывание в Azure и в Service Fabric превратилось бы в misson impossible.
|
|
|
|