使用python将邮件发送给多个用户

时间:2012-06-26 12:23:02

标签: python email smtplib spam-prevention

我最近发现了一个使用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()

3 个答案:

答案 0 :(得分:2)

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

如果您认真考虑发送大型电子邮件,涉及验证服务器等,您应该做各种事情。除非您是专家,否则您应该聘请邮件公司的服务来执行这些操作。

答案 1 :(得分:0)

我有一个类似的问题,使用PHP发送电子邮件,我只能通过更改主题和正文来将我的电子邮件从垃圾邮件文件夹中删除 - 使它们更有意义,更少测试。

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

答案 2 :(得分: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()

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