当我们需要在Python程序中发送电子邮件时,可以使用SMTP(Simple Mail Transfer Protocol)协议。Python内置了smtplib和email两个库,它们提供了发送邮件所需的所有功能。下面将提供Python基于SMTP发送邮件的完整攻略,包括邮件发送的几个步骤和示例说明。
准备工作
在使用Python内置库发送邮件时,需要先准备好SMTP服务器的相关信息。一般来说,需要了解以下信息:
- SMTP服务器地址
- SMTP服务器端口号
- 发送者的电子邮件地址
- 发送者的登录名和密码
- 接收者的电子邮件地址
在已知这些信息之后,就可以开始Python基于SMTP发送邮件的过程了。
步骤一:连接SMTP服务器
首先,需要导入smtplib库,使用SMTP类来连接SMTP服务器。连接服务器时,需要指定服务器地址和端口号,并使用starttls()方法启用SSL安全传输协议。
示例代码:
import smtplib
smtp_server = "smtp.example.com"
smtp_port = 587
smtp_conn = smtplib.SMTP(smtp_server, smtp_port)
smtp_conn.starttls()
步骤二:登录SMTP服务器
连接SMTP服务器成功之后,需要使用登录名和密码登录SMTP服务器。这个过程可以使用SMTP类的login()方法实现。
示例代码:
username = "sender@example.com"
password = "password"
smtp_conn.login(username, password)
步骤三:创建邮件
登录SMTP服务器成功之后,就可以开始创建邮件了。可以使用email库中的EmailMessage类来创建邮件。需要指定邮件标题、发件人、收件人、抄送地址、邮件正文等信息。
示例代码:
from email.message import EmailMessage
message = EmailMessage()
message["Subject"] = "Test Email"
message["From"] = "sender@example.com"
message["To"] = "recipient@example.com"
message["Cc"] = "cc@example.com"
message.set_content("This is a test email.")
步骤四:发送邮件
创建邮件之后,可以使用SMTP类的send_message()方法将邮件发送出去。如果发送邮件失败,可以通过try...except...语句来捕获异常。
示例代码:
try:
smtp_conn.send_message(message)
print("Email has been sent successfully.")
except Exception as e:
print("Failed to send email: ", e)
finally:
smtp_conn.quit()
示例说明
以下是两个示例,分别展示如何发送带有附件的电子邮件和带有HTML格式的电子邮件。
示例一:发送带有附件的电子邮件
要发送带有附件的电子邮件,可以使用EmailMessage类的add_attachment()方法添加附件。
示例代码:
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
message = MIMEMultipart()
message["Subject"] = "Test Email with Attachment"
message["From"] = "sender@example.com"
message["To"] = "recipient@example.com"
body = MIMEText("This is a test email with attachment.")
message.attach(body)
with open("attachment.txt", "rb") as f:
attachment = MIMEApplication(f.read(), _subtype="txt")
attachment.add_header("Content-Disposition", "attachment", filename="attachment.txt")
message.attach(attachment)
try:
smtp_conn.send_message(message)
print("Email has been sent successfully.")
except Exception as e:
print("Failed to send email: ", e)
finally:
smtp_conn.quit()
示例二:发送带有HTML格式的电子邮件
要发送带有HTML格式的电子邮件,可以将邮件正文的内容设置为HTML文本。
示例代码:
from email.mime.text import MIMEText
message = MIMEText("""
<html>
<body>
<h1>This is a test email with HTML content</h1>
<p>Here is a picture:</p>
<img src="cid:image1" width="200" height="200">
</body>
</html>
""", "html")
message["Subject"] = "Test Email with HTML Content"
message["From"] = "sender@example.com"
message["To"] = "recipient@example.com"
message["Cc"] = "cc@example.com"
with open("image.jpg", "rb") as f:
image_data = f.read()
message.get_payload()[0].add_related(image_data, "image", "jpeg", cid="image1")
try:
smtp_conn.send_message(message)
print("Email has been sent successfully.")
except Exception as e:
print("Failed to send email: ", e)
finally:
smtp_conn.quit()
以上就是Python基于SMTP发送邮件的完整攻略,包括邮件发送的几个步骤和示例说明。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python基于SMTP发送邮件的方法 - Python技术站