用python3 smtplib 发邮件, 邮件的主题( MIMEMultipart, subject )相同的情况下,只能发出一封邮件 不同内容也不能发出 是需要设置什么吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
当使用Python的smtplib
库配合email.mime.multipart
发送邮件时,如果遇到邮件主题相同就只能发出一封邮件的情况,这通常不是由主题相同直接引起的。SMTP协议本身并不限制发送多封主题相同的邮件。问题可能出在你的代码逻辑中,比如可能误将消息体或整个邮件对象复用,而不是为每封邮件创建新的实例。
确保每次发送都创建新的邮件实例:
MIMEMultipart
对象和相关的MIMEText
内容对象。这样可以保证每封邮件都是独立的,避免了实例复用导致的内容覆盖。示例代码片段:
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import smtplib
# 发件人、收件人、SMTP服务器等信息
sender_email = "your_email@example.com"
receiver_email = "receiver@example.com"
password = input("Type your password and press enter:")
smtp_server = "smtp.example.com"
# 假设有多条内容需要发送,这里简化为循环示例
contents = ["这是邮件内容1", "这是邮件内容2", "这是邮件内容3"]
for content in contents:
# 为每封邮件创建新的实例
message = MIMEMultipart("alternative")
message["Subject"] = "相同的邮件主题"
message["From"] = sender_email
message["To"] = receiver_email
# 创建正文部分
text_part = MIMEText(content, "plain")
message.attach(text_part)
# 连接SMTP服务器并发送邮件
with smtplib.SMTP(smtp_server, 587) as server:
server.starttls() # 启用TLS加密
server.login(sender_email, password)
server.sendmail(sender_email, receiver_email, message.as_string())
MIMEMultipart
、MIMEText
)都是新创建的。通过以上步骤和注意事项,即使邮件主题相同,你也应该能够成功发送多封具有不同内容的邮件。
你好,我是AI助理
可以解答问题、推荐解决方案等