我有一個奇怪的問題。當我使用send_email1腳本中的函式發送訊息時,該訊息最終會出現在我的 Gmail 垃圾郵件檔案夾中,但是當我使用send_email2它時,它會成功發送到我的收件箱。第二條訊息使用遺留 API,我認為它會在某個時候被棄用,我不應該再使用它了。
非常感謝您的幫助。
import smtplib
from email.message import EmailMessage
from email.mime.text import MIMEText
def send_email1(subject: str, content: str):
msg = EmailMessage()
msg['From'] = sender
msg['To'] = recipient
msg['Subject'] = subject
msg.set_content(content)
with smtplib.SMTP('mysmtpserver') as s:
s.starttls()
s.send_message(msg)
def send_email2(subject: str, content: str):
msg = MIMEText(content)
msg['Subject'] = subject
msg['From'] = sender
msg['To'] = recipient
with smtplib.SMTP('mysmtpserver') as s:
s.starttls()
s.send_message(msg)
sender = '[email protected]'
recipient = 'Recipient <[email protected]>'
send_email1("Test message from Pyton1", "Test message from Python script. 1")
send_email2("Test message from Pyton2", "Test message from Python script. 2")
uj5u.com熱心網友回復:
查看生成的郵件資料,它都符合RFC 5322,可以發現兩個不同之處:
From: [email protected]
To: Recipient <[email protected]>
Subject: Test message from Pyton1
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
MIME-Version: 1.0
Test message from Python script. 1
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject: Test message from Pyton2
From: [email protected]
To: Recipient <[email protected]>
Test message from Python script. 2
第一個區別是順序。它不會在垃圾郵件檔案夾最終的郵件宣告的標題欄位Content-Type和MIME-Version第一。其次,指定的字符集charset="us-ascii"與utf-8.
雖然我們只能推測 G??mail 的垃圾郵件過濾規則,但我建議更改設定內容和標題欄位的順序,Content-Type并通過使用明確說明(及其子型別和字符集)
msg.set_content(content, subtype="plain", charset='us-ascii')
這導致修改send_email(...)如下:
def send_email1(subject: str, content: str):
msg = EmailMessage()
msg.set_content(content, subtype="plain", charset='us-ascii')
msg['From'] = sender
msg['To'] = recipient
msg['Subject'] = subject
uj5u.com熱心網友回復:
Gmail 控制將哪些電子郵件發送到收件箱或垃圾郵件。谷歌對哪些電子郵件是垃圾郵件和哪些不是垃圾郵件進行了各種資料收集和分析。這似乎是谷歌將一種內容型別視為垃圾郵件,而另一種則不是。
歸根結底,這不是您從 python 發送郵件的方式,而是您放入郵件中的內容(以及其他諸如發送位置、內容型別、附件等),谷歌將決定是否將電子郵件發送到垃圾郵件.
例如,如果我發送一封帶有“Catchup”的郵件,以及我們有一段時間沒有說過的正文。谷歌可能會將它發送到我的收件箱。但是,如果我發送一封帶有“點擊此鏈接贏取 1 億”的電子郵件,它可能會被放入垃圾郵件中。這不是您發送郵件的方式。它是郵件的內容及其屬性。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/407480.html
標籤:
下一篇:從用戶輸入的電子郵件發送電子郵件
