You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python新手求助:实现邮件发送循环(仅首次输入密码)

修改后的多收件人邮件发送代码
import smtplib, ssl
from email.message import EmailMessage

port = 465
# 仅首次运行时输入密码
password = input('Type your password and press enter: ')
sender = 'email@gmail.com'

# 输入多个收件邮箱,用逗号分隔
receivers_input = input('Enter recipient emails separated by commas (e.g. a@example.com,b@test.com): ')
# 处理输入,分割成干净的邮箱列表(去除空格)
receivers = [email.strip() for email in receivers_input.split(',')]

subject = "Thank you!"
body = """
asdfgh

"""

context = ssl.create_default_context()
# 登录一次SMTP服务器,循环发送给每个收件人
with smtplib.SMTP_SSL('smtp.gmail.com', port, context=context) as server:
    server.login(sender, password)
    for receiver in receivers:
        # 为每个收件人创建邮件对象(也可以在循环外创建后修改To,不过这样更清晰)
        em = EmailMessage()
        em['From'] = sender
        em['To'] = receiver
        em['Subject'] = subject
        em.set_content(body)
        
        server.sendmail(sender, receiver, em.as_string())
        print(f'Email sent successfully to {receiver}!')

print('All emails sent!')

关键修改说明

  • 密码仅输入一次:保持原代码中密码输入的位置在最开头,整个程序只执行一次输入操作。
  • 多收件人输入处理:让用户用逗号分隔多个邮箱,通过split(',')分割成列表,再用strip()去除每个邮箱前后的空格,避免输入时的空格导致邮箱格式错误。
  • 循环发送逻辑:在登录SMTP服务器后,用for循环遍历每个收件人,逐个创建并发送邮件,符合你对for循环的基础认知,也能清晰跟踪每个收件人的发送状态。
  • 高效登录:只登录一次服务器就完成所有邮件发送,避免重复登录的冗余操作。

内容的提问来源于stack exchange,提问作者Matthew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 06:35:08