1

我最近发现了一个使用 python 发送电子邮件的代码。它仅适用于单个用户,因此我对其进行了修改,以从 txt 文件中获取电子邮件,该文件将电子邮件存储在每一行,然后向他们发送邮件。但是我发现邮件最终进入垃圾邮件文件夹(如果是 Gmail)或垃圾文件夹(如果是 hotmail 或 live)。是否可以更改代码以使邮件进入收件箱而不是被过滤为垃圾邮件?我是不是搞错了什么?

import smtplib,sys

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

sender = 'my-username@gmail.com'
subject = 'Gmail SMTP Test'
body = 'blah blah blah'

"Sends an e-mail to the specified recipient."



session = smtplib.SMTP(server, port)

session.ehlo()
session.starttls()
session.ehlo
session.login(sender, 'my-password!')

f = open('emails.txt')
for line in f:
  recipient = line
  print recipient
  headers = ["From: " + sender,
       "Subject: " + subject,
       "To: " + recipient]
  headers = "\r\n".join(headers)
  session.sendmail(sender, recipient, headers + "\r\n\r\n" + body)

f.close()
session.quit()
4

3 回答 3

2

这是一个非常难的问题,因为垃圾邮件的分类不是你做的。(显然!如果有人可以让他们的消息“不是垃圾邮件”,那么垃圾邮件发送者当然也会这样做。)

如果您正在认真考虑发送大型电子邮件、涉及身份验证服务器等,您应该做很多事情。除非您是专家,否则您应该聘请邮件公司的服务来做这些事情。

于 2012-06-26T12:32:28.340 回答
0

我在使用 PHP 发送电子邮件时遇到了类似的问题,只需更改主题和正文,我就能够将我的电子邮件从垃圾邮件文件夹中取出 - 使它们更有意义且不像测试。

尝试不同的事情——比如“杰克商店的发票”或“向你介绍 Twitter”。或者只是从实际电子邮件中获取主题和正文并将其放入您的测试中。

于 2012-06-26T14:06:55.783 回答
0

是的,有一种方法,但有浪费时间的方法.....

这是您的代码:

放入 sleep 方法并用此代码替换

    import smtplib,sys
    import time
    server = 'smtp.gmail.com'
    port = 587

    sender = 'my-username@gmail.com'
    subject = 'Gmail SMTP Test'
    body = 'blah blah blah'

    "Sends an e-mail to the specified recipient."



    session = smtplib.SMTP(server, port)

    session.ehlo()
    session.starttls()
    session.ehlo
    session.login(sender, 'my-password!')

    f = open('emails.txt')
    for line in f:
      recipient = line
      print recipient
      headers = ["From: " + sender,
           "Subject: " + subject,
           "To: " + recipient]
      headers = "\r\n".join(headers)
      session.sendmail(sender, recipient, headers + "\r\n\r\n" + body)
      time.sleep(3)
    f.close()
    session.quit()

如果有任何其他问题评论.... :)

于 2014-12-23T06:36:46.213 回答