Django mail send_mail使用主机IP而不是getfqdn返回的主机名

Django mail send_mail使用主机IP而不是getfqdn返回的主机名,django,Django,根据协议,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 我需要根据

根据协议,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文档声明

这实际上返回了正确的主机名:

python3 -c 'import socket; print(socket.getfqdn())'
my_proper_hostname.lan

我错过什么了吗?为什么django使用IP地址而不是真正的主机名?

您需要在
settings.py
文件中指定主机:

例如:

EMAIL_HOST = 'email-smtp.eu-west-1.amazonaws.com' # specify email server address here
这似乎是邮件服务器
邮件服务器.lan
上的配置错误。不在django

SMTPRecipientsRefused
error表示向收件人发送电子邮件时遇到的错误-此操作由smtp邮件服务器执行

它接收到来自django的消息(因为没有连接错误),并尝试为该消息的每个收件人发送单独的电子邮件(到/cc)。发送其中一个失败了

邮件服务器与上游服务器进行类似的helo/ehlo协商

您的邮件服务器是否提供了正确的maildomain/主机名?(错误消息中的ip表示邮件服务器正在发送ip,而不是其域)


然后,许多服务器还将检查您的ip的PTR记录-首先,解析提供的邮件域名以获取ip,然后解析此ip返回-获取PTR记录-以检查它是否与邮件域匹配。PTR记录通常可以与您的internet提供商/寄宿者一起设置。

这将是要联系以发送电子邮件的电子邮件服务器,我的问题来自客户端服务器,我可以将我的配置添加到我的帖子中
EMAIL_HOST = 'email-smtp.eu-west-1.amazonaws.com' # specify email server address here