python - 避免被识别为垃圾邮件
问题描述
我正在尝试使用 smtp google 和 smtplib 从 python 成功发送电子邮件。电子邮件发送正确,但接收者将电子邮件视为垃圾邮件。
标题有什么问题吗?或者我怎样才能避免被识别为垃圾邮件?
from flask import render_template, current_app
from flask_babel import _
import smtplib
from email.message import EmailMessage
from email.headerregistry import Address
from email.utils import make_msgid
def send_email(subject, receiver, plain_text, html_text):
msg = EmailMessage()
msg['Message-ID'] = make_msgid()
msg['Subject'] = subject
msg['From'] = Address(name, username, 'gmail.com')
msg['To'] = Address(receiver.fullname(), receiver.email.split('@')[0], receiver.email.split('@')[1])
msg.set_content(plain_text)
msg.add_alternative(html_text, subtype='html')
server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
server.ehlo()
server.login(email, password)
server.send_message(msg)
server.quit()
解决方案
我建议您在域上同时设置SPF和DKIM,以增加外发电子邮件的权重。在此处阅读有关设置 SPF 和 DKIM 的更多信息。这将需要一些足够简单的 DNS 更改。
此外,对于许多垃圾邮件过滤器,一小段 HTML 格式的小邮件可能会被视为垃圾邮件。考虑发送计划文本电子邮件或带有纯文本变体的 HTML 电子邮件。
推荐阅读
- javascript - 在 JavaScript 中对具有多个级别的嵌套对象进行分组
- vaadin - 如何以原生方式从 Vaadin 后端向一个或特定数量的(Android 智能手机)用户发送通知?
- html - 更改 Instagram 嵌入的显示文本?
- reactjs - React:通过 HOC 注入 props 而不为它们声明类型
- java - Firebase 中 Firestore 数据库中的计数器
- django - 在 Wagtail 中实现这一最终目标的最佳方法是什么?
- github-actions - `on` 语法生成动作的重复运行
- javascript - 为什么 linter 会选择无用的转义字符?
- python - 在保持全局特征的 NetworkX 上采样
- r - 矩阵形式的标准化到非标准化之间的转换