使用python向多个用户发送邮件

使用python向多个用户发送邮件,python,email,smtplib,spam-prevention,Python,Email,Smtplib,Spam Prevention,我最近发现了一个使用python发送电子邮件的代码。它只针对一个用户,所以我修改它,从一个txt文件中获取电子邮件,该文件将电子邮件存储在每行上,然后向他们发送邮件。然而,我发现邮件最终会被放在垃圾邮件文件夹(如果是Gmail)或垃圾邮件文件夹(如果是hotmail或live)。是否可以更改代码,使邮件进入收件箱,而不是作为垃圾邮件过滤?我做错什么了吗 import smtplib,sys server = 'smtp.gmail.com' port = 587 sender = 'my-u

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

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


如果你认真考虑发送大规模电子邮件,包括验证服务器等,你应该做很多事情。除非你是专家,你应该让邮件公司的服务来完成这些工作。

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


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

是的,有一种方法,但有浪费时间的方法。。。。。 这是您的代码:

放置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()

如果有任何其他问题,请发表评论:)

文件中有多少收件人?如果他们以垃圾邮件收尾,请检查您的电子邮件是否与伟哥、我所在地区的热门单打或尼日利亚商业主张有关。@wim当然与此无关。这是一条简单的单行线。我之所以感到困惑,是因为,如果我使用我的gmail帐户以相同的电子邮件id发送相同主题的邮件,邮件就会进入收件箱。然而,当我使用上面的python脚本时,它会以垃圾邮件的形式出现。你怎么能解释呢?当你通过他们的web服务发送邮件时,Gmail可能会设置更多的SMTP头。有些可以通过编程方式发送;有些人可能会考虑到这样一个事实,即手工发送的邮件不太可能被视为垃圾邮件。顺便说一句,如果收件人明确将您的邮件标记为非垃圾邮件一次,这应该不再是一个问题。因此,是否有适当的解决方法?当然,一旦收件人将我的邮件标记为非垃圾邮件,这不会是一个问题,但问题是,大多数时候人们不会检查垃圾邮件。我之所以使用这个脚本是因为gmail不可能一次发送多封电子邮件而不向列表中的每个人透露所有收件人的电子邮件地址。当然可以:只需将他们放在密件抄送字段中。我之所以感到困惑是因为,如果我使用我的gmail帐户以相同的电子邮件id发送相同主题的相同邮件,则邮件会进入收件箱。然而,当我使用上面的python脚本时,它会以垃圾邮件的形式出现。