Как, на первый взгляд, простая задача превращается в сложную.
Пришлось поменять сервис SMTP рассылки, которым я пользовался уже долгое время.
Простая задача: создать учетную запись в новом сервисе, подтвердить домен, добавить записи DKIM/SPF/DMARC в DNS и заменить несколько параметров в конфиг-файле (логин, пароль, порт, хост). Все - ну пусть максимум час-два на все.
Но не тут-то было...
После всех вышеуказанных действий все заработало, но письма стали приходить с неправильной кодировкой темы письма, типа ??????? ?????????? или ÐоÑÑÑановление паÑолÑ
Странно, все вроде работало до этого. Начинаем ковыряться в C# SmtpClient, штатный класс для отправки писем. Пробуем менять кодировки туда-сюда. Ничего не помогает.
Смотрим заголовки письма. Почему-то тема приходит в PlainText:
Subject: Восстановление пароля
а не как должно быть:
Subject: =?utf-8?B?0JLQvtGB0YHRgtCw0L3QvtCy0LvQtdC90LjQtSDQv9Cw0YDQ?=
Гуглим и находим, что это баг в асинхронном методе SendMailAsync. Он известен, но Microsoft почему-то не исправляет его уже долгие годы. Видимо предыдущий сервис как-то исправлял кодировку сам. Пробуем на всякий случай обновить .NET до последней версии, но не помогает.
Пробуем несколько обходных путей, которые предлагаются. Тоже.
В общем, беру синхронный метод Send и оборачиваю его в асинхронный и все работает. Понятно, что костыль но т.к. отправка на сайте нормально не работает, нужно что-то срочно делать.
Итого, задача усложнилась в несколько раз и потребовала почти день, вместо одного часа и то не решена до конца . А у вас часто бывает такое?😉
Post #60
338

- 🔥 6
- 👍 1