Кириллица в имени отправителя: правильный From в Python
В заголовке From нужно отделять отображаемое имя от адреса ящика. Кириллицу в имени должна кодировать библиотека email, а не ручная замена строки после сериализации.
Сформируйте письмо штатной библиотекой
Пример для Python 3 использует EmailMessage и Address. Адреса и SMTP-сервер демонстрационные: замените их своими. Учётные данные берутся из переменных окружения, а не из открытого файла сайта.
import os
import ssl
import smtplib
from email.message import EmailMessage
from email.headerregistry import Address
msg = EmailMessage()
msg['Subject'] = 'Test message'
msg['From'] = Address(display_name='Команда сайта', username='support', domain='example.com')
msg['To'] = 'recipient@example.net'
msg.set_content('Тестовое сообщение', charset='utf-8')
with smtplib.SMTP_SSL('smtp.example.com', 465, context=ssl.create_default_context()) as smtp:
smtp.login(os.environ['SMTP_USER'], os.environ['SMTP_PASSWORD'])
smtp.send_message(msg)
Проверьте адрес и сервер
Собственное имя ящика и домен в примере ASCII; для международных адрес могут понадобиться отдельные возможности SMTPUTF8 сервера. From должен соответствовать разрешённому отправителю вашего SMTP-сервиса. Не отправляйте от имени домена, которым не управляете.
Если сервер возвращает 550
Сохраните точный текст ошибки и проверьте, есть ли корректный адрес внутри From, разрешён ли отправитель и проходит ли аутентификация домена. Не меняйте уже сформированное MIME-письмо регулярным выражением: можно нарушить переносы заголовков и кодировку.
Документация
От инструкции — к настройке
Условия и возможности соответствующей услуги — на основном сайте UAhosting.
Посмотреть услугу