| 
			
			 | 
		#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. Есть у кого идеи как отправлять сообщения?  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Ну вот к примеру http://dev.goshoom.net/en/2016/05/ho...-code-in-ax-7/
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от skuull
			 
 
			Ну вот к примеру http://dev.goshoom.net/en/2016/05/ho...-code-in-ax-7/ 
		
	То есть ошибка падает независимо от режима вызова отправки сообщение интерактивно или нет (с вызовом промежуточной формы для отправки сообщений или без неё, с формированием письма в коде)  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Еще как показатель этой же проблемы, еще до отправки сообщений- это при открытии параметров электронной почты на вкладке параметры SMTP выдается ошибка  
		
		
		
		
		
		
		
	Неподдерживаемый тип возврата метода для метода данных passwordEdit и ошибка Encryption error occured. P.s. в параметрах пользователя введен логин и пароль другого пользователя (не мои данные). При чем отправка почты через workflow работает без проблем  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Злыдни 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Попробуйте так https://dynamicsaxgyan.wordpress.com...or-operations/ 
		
		
		
		
		
		
			Иначе придется раздавать права на отправку от имени, как указано в https://docs.microsoft.com/en-us/dyn...onfigure-email 
				__________________ 
		
		
		
		
		
			люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании. Последний раз редактировалось KiselevSA; 29.08.2018 в 09:15. Причина: Дополнительная ссылка  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: sukhanchik (2). | |
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Я использовал метод sendEmail на таблице SysEmailTable. Все отлично работает.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от IvanS
			 
 
			В общем при отправке сообщений падает ошибка в момент дешифровки пароля smtp: Ошибка в  методе Global::editEncryptedField на строке  
		
	X++: return appl.DecryptForPurpose(_common.(_fieldId), common.encryptionPurpose(_fieldId));Microsoft.Dynamics.Ax.Xpp.Security.EncryptionException: Encryption error occured. Есть у кого идеи как отправлять сообщения?    Суть была в том, что надо было сгенерить сертификат для Data Encryption непременно с использованием Microsoft Enhanced RSA and AES Cryptographic Provider - прям жирным шрифтом выделено в инструкции. Я сдуру   решил генерить сертификат через местный CA, а не самоподписанный, говорю ему - сделай такой-то, он мне - пожалуйста! Я посмотрел, пощупал, понюхал - вроде то, что надо, разлил везде эти сертификаты, начал ставить... А через какое-то время на установке, кажется, Management Reporter полезла ошибка, связанная с криптографией, вот прям такая же информативная:Код: 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). | |
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Хм, загадочно, тогда дело может быть и не в сертификате шифрования данных.  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от KiselevSA
			 
 
			Попробуйте так https://dynamicsaxgyan.wordpress.com...or-operations/ 
		
	Иначе придется раздавать права на отправку от имени, как указано в https://docs.microsoft.com/en-us/dyn...onfigure-email  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от gl00mie
			 
 
			Посмотрите с помощью PerfView, какое на самом деле лезет исключение и сообщение об ошибке. Сборка Microsoft.Dynamics.AX.Framework.EncryptionEngine.dll ловит исходные исключения и вместо них выбрасывает свою неинформативную фигню, но в трассировке всё должно быть видно. 
		
	Хм, загадочно, тогда дело может быть и не в сертификате шифрования данных.  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: sukhanchik (2), gl00mie (2). | |
| 
			
			 | 
		#11 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Проблема решается удалением всех зашифрованных данных и созданием новых занчений. Потому что шифруется и дальше конкретного SQL сервера не уходит. Майкрософт автоматизировал это в одну строку: Код: -- Clear encrypted hardware profile merchand properties update dbo.RETAILHARDWAREPROFILE set SECUREMERCHANTPROPERTIES = null where SECUREMERCHANTPROPERTIES is not null  | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			В 2012 пароли для почты шифровались на каждом АОСе - не может быть тут в этом же дело? Т.е. нужно явно ввести пароль при смене АОСа. С учетом D365 без возможности выбора конкретного АОСа для входа, интересно, как фактически происходит сохранение?
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Ivanhoe as is..  | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Это еще с 2009-й началось: при шифровании пароля для почты данные сохранялись в локальном реестре, причем с привязкой к порту, на котором работает AOS. В D365 реестр используется для хранения разве что сертификатов (и поэтому они настраиваются заранее и вручную), а всё остальное хранится либо в текстовых конфигах и иных файлах в каталоге приложения, либо в базе, иначе развертывание в Azure и в Service Fabric превратилось бы в misson impossible.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
	
	 | 
	
		
  |