【发布时间】:2020-02-12 09:36:18
【问题描述】:
根据documentation,django默认后端使用smtplib。
我正在使用 django email 以以下方式发送电子邮件:
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 文档声明here
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 地址而不是真实的主机名?
【问题讨论】:
标签: django