如何确保使用Django EmailMessage类发送邮件时不会收到垃圾邮件?

thtygnil  于 2023-01-14  发布在  Go
关注(0)|答案(2)|浏览(120)

我的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()

我的问题是,
1.既然我可以创建一个代码以另一个人的身份发送电子邮件,该电子邮件在某些域中是否不会被标记为垃圾邮件?
1.我可以访问一个已经设置好的邮件服务器。我可以将邮件账户Map到Django应用程序中的用户账户吗?这样Django就可以使用邮件服务器作为媒介,根据登录的用户发送邮件了。
1.为什么我需要在settings.py文件中提供电子邮件和密码,而我可能永远不会使用该电子邮件帐户发送任何邮件?我可以不登录到电子邮件每次有人发送电子邮件?

vzgqcmou

vzgqcmou1#

1.既然我可以创建一个代码以另一个人的身份发送电子邮件,该电子邮件在某些域中是否不会被标记为垃圾邮件?
电子邮件的域部分(@之后的部分)主要确定电子邮件是否最终成为垃圾邮件(当然,在确定垃圾邮件时还有其他条件,如发送邮件服务器的IP信誉,即此IP过去是否用于发送垃圾邮件等)。
如果您是特定域的授权发件人,您可以发送john@domain.comno-reply@domain.com等电子邮件,而不必担心。
阅读SPF和DKIM关于域名授权的记录。这是一个我无法回答的主题。
1.我可以访问一个已经设置好的邮件服务器。我可以将邮件账户Map到Django应用程序中的用户账户吗?这样Django就可以使用邮件服务器作为媒介,根据登录的用户发送邮件了。
是的,如果你拥有电子邮件的域名,你可以。只要得到用户的电子邮件地址,并使用它作为From地址发送电子邮件。
1.为什么我需要在www.example.com文件中提供电子邮件和密码settings.py,而我可能永远不会使用该电子邮件帐户发送任何邮件?我是否可以在每次有人发送电子邮件时不登录该电子邮件?
你指的是EMAIL_HOST_USER吗?这是为了验证目的。这封电子邮件是登录到您的SMTP服务器所必需的。没有这封电子邮件,SMTP服务器将不知道您是服务器的拥有者还是试图使用他们的服务器发送垃圾邮件的垃圾邮件发送者。
但是如果SMTP服务器在本地运行,您可以只使用localhost作为EMAIL_HOST,而省去身份验证。因为大多数电子邮件服务器(MTA)中继来自本地主机的电子邮件而不需要身份验证。但这也取决于配置。

基本了解电子邮件的发送方式:

电子邮件的发送就像真实的的邮件一样-装在信封里。信封和里面的信可以有不同的From地址。电子邮件也是如此。
下面是一个说明性的例子,假设你有一个PO Box,如果你想给你的朋友发一封信,你可以这样做:
1.把你的口信写在纸上。你要在信上签名。
1.买一个信封,在信封上写上你朋友的地址。
1.在信封上写上你的邮箱地址。不要写上你自己的地址,因为如果邮件无法投递,它会被退回到你的邮箱。
1.把信发出去。
很简单。假设你家里有人也想给他们认识的人寄封信。但是他们没有邮政信箱。他们必须花一些钱和时间去弄一个邮政信箱。但是为什么要麻烦呢,因为你已经有一个了。下面是工作流程:
1.他们会把信息写在纸上。他们会在信上签上自己的名字。
1.买一个信封,写上他们朋友的地址。
1.写下邮箱的From地址,以便在邮件未送达时将其退回邮箱。
1.把信发出去。
这就是电子邮件的工作原理。

  1. SMTP服务器类似于邮局。
    1.您的电子邮件帐户就像一个邮政信箱。
    1.你发的每一条信息都装在信封里。
    1.信封上的发件人地址可以与发件人不同
    里面留言的地址。
    我认为Django使用EMAIL_HOST_USER设置来编写电子邮件信封,您提供的from_email地址被用作From地址。
    信封上的发件人地址称为MAIL FROM地址或Return-Path地址。这不会显示给接收用户。您在Gmail或Yahoo Mail中看到的From地址称为MIME From地址。它们可以不同。
ih99xse1

ih99xse12#

这种情况下是不是你的发件人gmail。但你需要删除所有链接内的html模板

相关问题