在 python 3.8 中使用 smtp 服务器发送电子邮件的问题

Issues with sending emails using an smtp server in python 3.8

我正在尝试创建垃圾邮件发送者。我知道这是不受欢迎的,但我 运行 遇到了我似乎无法解决的问题。我似乎无法弄清楚如何:

  1. 定义一个包含列表 电子邮件的变量,并将每个电子邮件添加到收件人列表。
  2. 从 google smtp 服务器发送电子邮件到之前定义的电子邮件列表。
import smtplib
from email import message



sent = int(0)
while (True):
    sent = sent + 1
    from_addr = 'email@gmail.com' # Must be a gmail adress as the gmail smtp server is used
    to_addr = ['email@email.com', 'email2@email.com']
    subject = 'test!'
    body = 'test!'

    msg = message.Message()
    msg.add_header('from', from_addr)
    for n in len(to_addr):
        msg.add_header('To') = ', '.join(to_addr[n]) # Add all entries from to_addr as recipients
    msg.add_header('subject', subject)
    msg.set_payload(body)

    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.login(from_addr, 'insertyourpasswordhere') # This will also generate an error!
    server.send_message(msg, from_addr=from_addr, to_addrs=[to_addr])
    server.quit()

我不希望程序一次向列表中的一个用户发送电子邮件,我希望程序将他们全部添加为收件人,然后将电子邮件发送给所有人。

要使此代码有机会运行,您需要在您的 Gmail 帐户上启用不太安全的应用程序

要使用gmail的服务器发送邮件,您必须执行以下步骤:

  1. 打开安全性较低的应用程序
  2. 您将在您的 gmail 收件箱中收到安全邮件,单击“是”,里面就是我。
  3. 现在再次 运行 您的代码。

注意:在执行代码之前需要启动 TLS 以确保安全。

import smtplib 
from email.message import EmailMessage
sent = int(0)
while (True):
    sent = sent + 1
    from_addr = 'gmail@gmail.com'
    to_addr = ['gmail1@gmail.com', 'gmail2@email.com']
    subject = 'test!'
    body = 'test!'

    msg = EmailMessage()
    msg.add_header('from', from_addr)

    msg.add_header('To',', '.join(to_addr))
    msg.add_header('subject', subject)
    msg.set_payload(body)
    # creates SMTP session 
    server = smtplib.SMTP('smtp.gmail.com', 587) 

    # start TLS for security 
    server.starttls() 
    # Authentication 
    server.login(from_addr, 'insertyourpasswordhere') 

    # sending the mail 
    server.send_message(msg, from_addr=from_addr, to_addrs=', '.join(to_addr))

    # terminating the session 
    server.quit() 

您只需更改电子邮件和密码,以上脚本将运行成功!