我的settings.py
文件中有以下设置。
EMAIL_HOST = 'mail.domain.com'
EMAIL_HOST_USER = 'me@domain.com'
EMAIL_HOST_PASSWORD = 'mypassword'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
我的Django应用程序中的用户可以使用EmailMessage
类向带有PDF附件的客户端发送电子邮件。这是代码:
email = EmailMessage()
email.subject = 'Demo subject'
email.body = self.request.GET.get('email_body', '')
email.from_email = 'Full Name <user@domain.com>'
email.to = ['{}'.format(self.request.GET.get('to_address'))]
email.attach_file(os.path.join(settings.MEDIA_ROOT, 'quotation_email.pdf'))
email.send()
我的问题是,
由于我可以创建代码以不同的方式发送电子邮件,因此某些域中的电子邮件是否会被标记为垃圾邮件?
我可以访问已设置的邮件服务器。我可以将电子邮件帐户映射到Django应用程序中的用户帐户,以便Django使用电子邮件服务器作为媒介根据登录用户发送电子邮件吗?
当我永远不会使用该电子邮件帐户发送任何邮件时,为什么我需要在settings.py
文件中提供电子邮件和密码?每次有人发送电子邮件时,我都不能登录电子邮件吗?
答案 0 :(得分:2)
- 由于我可以创建代码以便以不同的方式发送电子邮件,因此电子邮件是否会在某些域中被标记为垃圾邮件?
醇>
电子邮件的域名部分(@之后的部分)主要决定了电子邮件是否最终会成为垃圾邮件(当然,还有确定垃圾邮件的其他条件,但兔子漏洞非常深入。讨论这将是一个很长的答案)。
如果您是特定域的授权发件人,则可以发送john@domain.com
或no-reply@domain.com
等电子邮件,而无需担心。
了解有关域授权的SPF和DKIM记录。这是一个我无法在答案中真正涵盖的话题。
- 我可以访问已设置的邮件服务器。我可以将电子邮件帐户映射到Django应用程序中的用户帐户,以便Django使用电子邮件服务器作为媒介根据登录用户发送电子邮件吗?
醇>
是的,你可以。只需获取用户的电子邮件地址,然后将其用作From
地址即可发送电子邮件。
- 当我可能永远不会使用该电子邮件帐户发送任何邮件时,为什么我需要在settings.py文件中提供电子邮件和密码?每次有人发送电子邮件时,我都不能登录电子邮件吗?
醇>
您指的是EMAIL_HOST_USER
吗?这是出于身份验证的目的。登录SMTP服务器需要此电子邮件。如果没有这个,SMTP服务器将不知道您是服务器的所有者还是试图使用其服务器发送垃圾邮件的垃圾邮件发送者。
但是如果SMTP服务器在本地运行,您可以使用localhost
作为EMAIL_HOST
并忽略身份验证。因为大多数电子邮件服务器(MTA)从本地主机中继电子邮件而不需要身份验证。但这也取决于配置。
更新:
电子邮件就像真正的邮件一样发送 - 在信封内。信封及其中的字母可以有不同的From
地址。在电子邮件的情况下也是如此。
这是一个说明性的例子。假设您拥有PO Box。如果你想给你的朋友发一封信,你可以这样做:
To
地址。From
地址。您不会写自己的地址,因为如果邮件无法发送,它将被退还给您的邮政信箱。漂亮,简单。假设您家中的某个人也想给他们认识的人发一封信。但他们并不拥有邮政信箱。他们必须花一些钱和时间才能获得邮政信箱。但为什么要打扰,因为你已经有一个。这是如何工作的:
To
地址。From
地址,以便邮件无法送达您的邮政信箱。这是实际电子邮件的工作方式。
我认为Django使用EMAIL_HOST_USER
设置来撰写电子邮件信封,并将您提供的from_email
地址用作From
地址。
信封上的发件人地址称为MAIL FROM
地址或Return-Path
地址。这不会向接收用户显示。您在Gmail或Yahoo Mail中看到的From
地址称为MIME From
地址。它们都可以不同。