【问题标题】:Sending an alias(spoof) for the 'from' e-mail using python smtplib使用 python smtplib 为“发件人”电子邮件发送别名(欺骗)
【发布时间】:2016-01-20 06:29:40
【问题描述】:

我正在使用 python 3.4.3 发送电子邮件,此时我需要使用别名发送电子邮件。该帐户是一个 gmail 帐户,但我需要能够将我想要的任何内容作为欺骗(别名)“发件人”电子邮件。我已经非常努力地研究如何做到这一点并且运气很少。鉴于我查看的线程数量以及我没有得到可行答案的事实表明缺乏对这个特定主题的讨论。我希望这不仅仅是因为这件事非常简单,以至于除了我之外的每个人都知道怎么做。

我应该提到我在 Windows 10 机器上,但可以访问 Ubuntu 和 Windows 7 机器。

import smtplib

fromreal = 'realmail@gmail.com'
fromshow = 'fakemail@gmail.com'
toaddy = ['rec01@gmail.com', 'rec02@gmail.com']
subject = ' test'
body = 'This is the body test'

content = '''\
From: %s
To: %s
Subject: %s
%s
''' % (fromshow, ', '.join(toaddy), subject, body)

server = 'smtp.gmail.com'
port = 587

mail = smtplib.SMTP(server, port)

mail.ehlo()
mail.starttls()
mail.login(fromreal, 'password')
try:
    mail.sendmail(fromshow, toaddy, content)
    print('E-mail sent.')
except:
    print('E-mail not sent.')

mail.close()

【问题讨论】:

  • Gmail 服务器将不会让您使用伪造的发件人发送电子邮件。
  • 不过,你永远不应该使用except 而不指定要捕获的异常。在这里,我很确定正确的错误处理会提示您出了什么问题。
  • 你能帮我处理一些正确的错误处理吗??

标签: python email smtp smtplib spoofing


【解决方案1】:

您可以使用yagmail 发送别名(不会更改为假电子邮件,但至少是别名):

import yagmail
# first is "from" arg; using a dictionary you can give an alias as value
yag=yagmail.SMTP({fromreal:'fakealias'}, 'password') 
yag.send(toaddy, subject, body)

有 3 行而不是 30 行真是太好了;)

使用pip install yagmail安装。

github 页面上阅读更多关于许多其他功能的信息。

除此之外,您可以使用“无密码”脚本(脚本中不需要密码),非常容易发送 HTML、内联图像和附件!

完全披露:我是yagmail 的开发者/维护者。

【讨论】:

  • 我可以与您联系以解决更多问题吗?
  • @dubkoidragon GitHub 提供了@联系我的方式,github.com/kootenpv/yagmail
  • 有没有其他人在使用此别名功能时遇到过非常不稳定的邮件发送性能?似乎有时我收到了一封邮件,有时我只是没有。它静默失败(= 没有错误,但邮件没有出现在收件箱中)。检查垃圾邮件文件夹,也没有运气......
  • @PascalVKooten 是否从 yagmail 的更高版本中删除了欺骗功能?无法让它工作。
  • 我的错,似乎 gmail 是限制它的一个,因为我重写了你的 yagmail 库以接受来自标头的欺骗,但它仍然不起作用:)
猜你喜欢
  • 2020-10-17
  • 1970-01-01
  • 2021-04-26
  • 1970-01-01
  • 2014-01-31
  • 1970-01-01
  • 2012-02-09
相关资源
最近更新 更多