下面我为你详细讲解一下 Python 如何实现自动发送邮件的完整攻略。
准备工作
在 Python 中发送邮件需要使用 smtplib
模块和 email
模块。因此,我们需要先安装好这两个模块。可以在命令行中使用以下命令进行安装:
pip install smtplib
pip install email
实现步骤
第一步:导入模块
在代码文件中导入 smtplib
和 email
模块:
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
第二步:设置发件人、收件人和邮件内容
设置发件人、收件人和邮件内容。具体代码如下:
sender = "你的邮箱地址"
recipient = "收件人邮箱地址"
mail_subject = "邮件主题"
mail_content = "邮件正文"
第三步:设置 SMTP 服务器地址、用户名和密码
SMTP 服务器是发送邮件的服务器。使用前需要先设置好 SMTP 服务器的地址、用户名和密码。具体代码如下:
smtp_server = "SMTP 服务器地址"
smtp_username = "SMTP 服务器用户名"
smtp_password = "SMTP 服务器密码"
提示:不同的邮件服务商使用的 SMTP 服务器地址和用户名密码可能不同,请根据自己的实际情况进行设置。
第四步:创建邮件对象,并设置邮件内容
使用 MIMEMultipart
类来创建邮件对象,并设置邮件内容。具体代码如下:
msg = MIMEMultipart()
msg["Subject"] = mail_subject
msg["From"] = sender
msg["To"] = recipient
msg.attach(MIMEText(mail_content, "html", "utf-8"))
第五步:连接 SMTP 服务器并登录
连接 SMTP 服务器并使用账号密码登录以进行身份验证。具体代码如下:
smtp = smtplib.SMTP(smtp_server, 587)
smtp.starttls()
smtp.login(smtp_username, smtp_password)
提示:有些邮件服务商可能需要使用 SSL 加密方式进行连接,可以使用
smtplib.SMTP_SSL()
方法进行连接。
第六步:发送邮件
使用 smtp.sendmail()
方法来发送邮件。具体代码如下:
smtp.sendmail(sender, recipient, msg.as_string())
smtp.quit()
示例说明一
例如,我们需要发送携带附件的邮件。具体步骤如下:
第一步:导入 MIMEImage
和 MIMEApplication
模块。
from email.mime.image import MIMEImage
from email.mime.application import MIMEApplication
第二步:创建附件对象。
例如,创建一个文本文件作为附件:
with open("test.txt", "rb") as f:
attachment = MIMEApplication(f.read())
attachment["Content-Disposition"] = "attachment; filename=test.txt"
或者,创建一张图片作为附件:
with open("test.png", "rb") as f:
attachment = MIMEImage(f.read())
attachment["Content-Disposition"] = "attachment; filename=test.png"
第三步:将附件添加到邮件中。
msg.attach(attachment)
示例说明二
例如,我们需要发送 HTML 邮件。具体步骤如下:
第一步:将邮件内容写成 HTML 格式。
例如:
mail_content = "<html><body><h1>标题</h1><p>Hello World!</p></body></html>"
第二步:设置邮件的 MIME 类型。
msg.attach(MIMEText(mail_content, "html", "utf-8"))
完整代码
将以上的所有步骤整合起来,就可以得到一个完整的 Python 发送邮件的代码:
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage
from email.mime.application import MIMEApplication
sender = "你的邮箱地址"
recipient = "收件人邮箱地址"
mail_subject = "邮件主题"
mail_content = "邮件正文"
smtp_server = "SMTP 服务器地址"
smtp_username = "SMTP 服务器用户名"
smtp_password = "SMTP 服务器密码"
msg = MIMEMultipart()
msg["Subject"] = mail_subject
msg["From"] = sender
msg["To"] = recipient
msg.attach(MIMEText(mail_content, "html", "utf-8"))
with open("test.txt", "rb") as f:
attachment = MIMEApplication(f.read())
attachment["Content-Disposition"] = "attachment; filename=test.txt"
msg.attach(attachment)
smtp = smtplib.SMTP(smtp_server, 587)
smtp.starttls()
smtp.login(smtp_username, smtp_password)
smtp.sendmail(sender, recipient, msg.as_string())
smtp.quit()
希望对你有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python如何实现自动发送邮件 - Python技术站