Перейти до вмісту
UAhostingБлог
Пошта

Кирилиця в імені відправника: правильний 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-лист регулярним виразом: можна зламати перенесення заголовків і кодування.

Документація

Python: email.headerregistry.Address

Від інструкції — до налаштування

Умови та можливості відповідної послуги — на основному сайті UAhosting.

Переглянути послугу