试图欺骗电子邮件地址

时间:2017-01-19 19:50:39

标签: python email

我确信这已被问到,但我找不到任何让我的工作。

我正在尝试向客户发送跟进电子邮件,但我想欺骗电子邮件地址,因此来自我的同事的地址。我在网上看到,标题中的起始地址只是一个可以编辑的文本字段,但我仍然无法发送电子邮件。

import smtplib

email_to = '*****@gmail.com'
username = '*******@outlook.com'
password = '*********'
other_email = '*******@outlook.com'

mail = smtplib.SMTP('Outlook.com', 25)
mail.ehlo()
mail.starttls()
mail.login(username,password)

header = ('To:' + email_to + '\n' +'From: ' + other_email + '\n'
          + 'Subject: Python Project Test\n')
message = (header +
           '\n\n This is a test message generated from a Python script. \n\n')

mail.sendmail(username, email_to, message)
mail.close()
print("Email sent successfully.")

我知道这可以做到,但是有人能指出我正确的方向吗?有没有办法让我在from字段中将我的名字伪装成应该发送的电子邮件?

===================================

另外,为了完成,这是我得到的错误:

Traceback (most recent call last):
  File "C:\Users\*****\Desktop\email outlook.py", line 16, in <module>
    mail.sendmail(username, email_to, message)
  File "C:\Users\*****\AppData\Local\Programs\Python\Python36-32\lib\smtplib.py", line 887, in sendmail
    raise SMTPDataError(code, resp)
smtplib.SMTPDataError: (550, b'5.7.60 SMTP; Client does not have permissions to send as this sender')

我希望是否有办法让other_name成为用户名的别名。

1 个答案:

答案 0 :(得分:6)

非常简短版本:这不起作用。

曾几何时,有可能做你要做的事情。在过去,当互联网很小并且垃圾邮件不存在时,接收服务器就会信任你。你可以连接到mail.example.com并说你代表someone@example.org发送,而example.com只会相信你。

但那些日子结束了。如今,SMTP服务器不那么信任。让我们来解决你的方法存在的问题:

  1. 您正试图通过outlook.com发送电子邮件。 outlook.com非常清楚你是username而不是other_email。如果您要以other_email发送电子邮件,则需要进行身份验证other_email
  2. 您可以直接连接到gmail.com,声称是outlook.com,并尝试以这种方式发送电子邮件。但Gmail知道你不是outlook.com,因为你错过了these things。因此,它可能会将您的邮件标记为垃圾邮件,将其反弹,甚至*接受它,然后将其完全丢弃。
  3. 您可以通过更改代码修复(1),但由于(2),没有什么意义。

    *我不在Gmail小组工作。我猜测Gmail将如何仅根据有关如何配置现代电子邮件服务器的公共信息来响应此问题。 YMMV。