Согласно документации , django бэкэнд по умолчанию использует smtplib.
Я использую django электронную почту для отправки писем следующим образом:
email = EmailMessage(
'Object',
'body',
my_from_addr,
args.emails,
[],
reply_to=['my_from_addr'],
)
со следующей конфигурацией в settings.py:
EMAIL_HOST = "mail_server.lan"
EMAIL_PORT = 25
Мне нужно установить параметр helo / ehlo для соответствия серверу электронной почты в соответствии с именем хоста отправляющего сервера. Но django, кажется, использует IP-адрес сервера вместо имени хоста, до сих пор мои электронные письма были отклонены с ошибкой
smtplib.SMTPRecipientsRefused: {'args.emails': (450, b'4.7.1 Client host rejected: cannot find your hostname, [192.168.1.5]')}
Документация smtplib объявляет здесь
If specified, local_hostname is used as the FQDN of the local host in the HELO/EHLO command. Otherwise, the local hostname is found using socket.getfqdn().
И это фактически возвращает правильное имя хоста:
python3 -c 'import socket; print(socket.getfqdn())'
my_proper_hostname.lan
Я что-то упустил? Почему django использует IP-адрес вместо реального имени хоста?