Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Punycode  [new]
max44
Member

Откуда: МОСКВА
Сообщений: 273
Добрый день.

Cтолкнулся с проблемой отправки почты через компоненту Database Mail на адреса с кириллицей в домене (например: @привет.рф)

SQL Server 2014 Standart

Кто может поделиться готовым решение (алгоритмом) декодировки Punycode на T-SQL?
12 фев 20, 09:05    [22077982]     Ответить | Цитировать Сообщить модератору
 Re: Punycode  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33087
Блог
max44,

Сервер так и пишет "проблема отправки" или выдает ошибку?
12 фев 20, 12:18    [22078136]     Ответить | Цитировать Сообщить модератору
 Re: Punycode  [new]
max44
Member

Откуда: МОСКВА
Сообщений: 273
EXEC msdb.dbo.sp_send_dbmail  
    	        @profile_name = 'InfoSystem'
	      , @recipients ='test@привет.рф'
	      , @subject = 'test'
	      , @body = 'tets'
	      , @body_format='HTML'


ошибка из [msdb].[dbo].[sysmail_log]:
The mail could not be sent to the recipients because of the mail server failure. (Sending Mail using Account 1 (2020-02-12T12:37:09). Exception Message: Cannot send mails to mail server. (A recipient must be specified.).
)


[msdb].[dbo].[sysmail_mailitems]
recipients 	body	send_request_date	sent_status
test@привет.рф	tets	2020-02-12 12:37:09.117	2

sent_status=2 т.е. не отправлено

нужно в параметр @recipients ХП sp_send_dbmail передать уже "декодированный" адрес получателя
12 фев 20, 12:46    [22078174]     Ответить | Цитировать Сообщить модератору
 Re: Punycode  [new]
msLex
Member

Откуда:
Сообщений: 7600
max44
Кто может поделиться готовым решение (алгоритмом) декодировки Punycode на T-SQL?


В dotnet-е уже есть готовое.
"Оберните" своей скалярной CLR функцией и используйте.
12 фев 20, 12:48    [22078177]     Ответить | Цитировать Сообщить модератору
 Re: Punycode  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33087
Блог
max44,

https://docs.microsoft.com/ru-ru/dotnet/api/system.globalization.idnmapping?view=netframework-4.8

GetAscii(String, Int32, Int32) из первого примера?
12 фев 20, 13:01    [22078195]     Ответить | Цитировать Сообщить модератору
 Re: Punycode  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7319
max44,

@recipients =N'test@привет.рф' уже пробовали?
12 фев 20, 13:04    [22078200]     Ответить | Цитировать Сообщить модератору
 Re: Punycode  [new]
max44
Member

Откуда: МОСКВА
Сообщений: 273
Владислав Колосов,

попробовал @recipients =N'test@привет.рф'

результат такой же:
sent_status=2


И,
The mail could not be sent to the recipients because of the mail server failure. (Sending Mail using Account 1 (2020-02-12T13:13:36). Exception Message: Cannot send mails to mail server. (A recipient must be specified.).
12 фев 20, 13:16    [22078237]     Ответить | Цитировать Сообщить модератору
 Re: Punycode  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7319
max44,

вас отбивает SMTP сервер, а не сиквел. ЕМНИП, по спецификации POP3 адрес должен быть исполнен латиницей.
12 фев 20, 13:23    [22078253]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить