【问题标题】:Sending mails to multiple users using python使用python向多个用户发送邮件
【发布时间】:2012-06-26 12:23:01
【问题描述】:

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

【问题讨论】:

  • 文件中有多少个收件人?
  • 如果他们以垃圾邮件告终,请检查您的电子邮件是否与伟哥、我所在地区的热门单身人士或尼日利亚的商业主张无关..
  • @wim 当然不是这样。它是一个简单的单班轮。

标签: python email smtplib spam-prevention


【解决方案1】:

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

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

【讨论】:

  • 我感到困惑的原因是,如果我使用我的 gmail 帐户将具有相同主题的相同邮件发送到相同的电子邮件 ID,则邮件会进入收件箱。但是,当我使用上面的 python 脚本时,它会进入垃圾邮件。你怎么解释?
  • 当您通过他们的网络服务发送邮件时,Gmail 可能会设置更多的 SMTP 标头。有些您可以通过编程方式发送;有些人可能会考虑到这样一个事实,即手工发送的邮件被视为垃圾邮件的可能性要小得多。
  • 顺便说一句,如果收件人明确将您的邮件标记为非垃圾邮件一次,这应该不再是问题。
  • 那么有没有适度的解决方法呢?当然,一旦收件人将我的邮件标记为非垃圾邮件,它就不会成为问题,但问题是,大多数时候人们不会检查垃圾邮件。为什么我使用这个脚本是因为使用 gmail 不可能在不向列表中的每个人透露所有收件人的电子邮件地址的情况下一次发送多封电子邮件。
  • 当然可以:只需将它们放在密件抄送字段中即可。
【解决方案2】:

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

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

【讨论】:

  • 我感到困惑的原因是,如果我使用我的 gmail 帐户将具有相同主题的相同邮件发送到相同的电子邮件 ID,则邮件会进入收件箱。但是,当我使用上面的 python 脚本时,它会进入垃圾邮件。
【解决方案3】:

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

这是您的代码:

把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-06-05
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多