无法在Django或Wagtail send_mail中设置发件人电子邮件地址

xmjla07d  于 2023-05-23  发布在  Go
关注(0)|答案(1)|浏览(144)

任务:有一个网站,提供时事通讯。每次订阅者订阅时,我都会向电子邮件地址发送时事通讯订阅通知。为此,我使用wagtail.admin.mail中的send_mail --我认为这与我使用send_mail的方式无关。
问题:我提供了一个from_email,但由于某种原因,我收到的电子邮件包含EMAIL_HOST_USER作为发件人-这是用于发送电子邮件的Google Mail帐户的电子邮件。我也试过from django.core.mail import send_mail,但都一样。有没有什么线索,我怎么才能让它工作?也许他们阻止使用自定义电子邮件地址显示为发件人?
详细信息:smtp.gmail.com和django.core.mail.backends.smtp.EmailBackend用于电子邮件后端。

shstlldc

shstlldc1#

查看django.core.mail.message.EmailMessage
您可以显式设置该类中的所有消息属性,包括连接和from_email
对于连接,因为我在我的站点中使用了不同的凭据,所以我有一个模型来存储连接设置,并为手头的作业提取相关的设置。
例如,在我的Contact表单类中,我有一个用于邮件设置的属性:

@property
def mail_settings(self):
    email_settings=EmailSettings.objects.filter(type='contact').first()
    if email_settings:
        use_ssl = getattr(email_settings, 'use_ssl')
        return {
            'host' : getattr(email_settings, 'host'),
            'port' : getattr(email_settings, 'port'),
            'username' : getattr(email_settings, 'username'),
            'password' : getattr(email_settings, 'password'),
            'ssl_setting' : use_ssl,          
            'tls_setting' : not use_ssl
        }

然后在send_mail()方法中,我得到与django.core.mail.get_connection的连接

connection = mail.get_connection(**self.mail_settings)

您可以将此连接传递给EmailMessage构造函数。

相关问题