Python发送邮件的实例代码(支持HTML、图片、附件)攻略
Python是一种强大的编程语言,可以用于发送电子邮件。Python的smtplib和email库提供了发送电子邮件的功能。本文将详细讲解Python发送邮件的实例代码,包括发送纯文本邮件、发送HTML邮件、发送带图片的邮件、发送带附件的邮件等。
步骤1:导入库
在发送邮件之前,我们需要导入smtplib和email库。以下是导入库的示例代码:
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
在上面的代码中,我们导入了smtplib、MIMEText、MIMEMultipart、MIMEImage和MIMEApplication等库,以便发送不同类型的邮件。
步骤2:连接SMTP服务器
在发送邮件之前,我们需要连接SMTP服务器。以下是连接SMTP服务器的示例代码:
smtp_server = 'smtp.gmail.com'
smtp_port = 587
smtp_username = 'your_email@gmail.com'
smtp_password = 'your_password'
smtp_connection = smtplib.SMTP(smtp_server, smtp_port)
smtp_connection.starttls()
smtp_connection.login(smtp_username, smtp_password)
在上面的代码中,我们使用Gmail作为SMTP服务器,并使用starttls()函数启用TLS加密。然后,我们使用login()函数登录SMTP服务器。
步骤3:发送邮件
在连接SMTP服务器后,我们可以发送邮件。以下是发送邮件的示例代码:
发送纯文本邮件
from_email = 'your_email@gmail.com'
to_email = 'recipient_email@gmail.com'
subject = 'Test Email'
body = 'This is a test email.'
msg = MIMEText(body)
msg['From'] = from_email
msg['To'] = to_email
msg['Subject'] = subject
smtp_connection.sendmail(from_email, to_email, msg.as_string())
在上面的代码中,我们使用MIMEText()函数创建了一个纯文本邮件,并使用sendmail()函数发送了邮件。
发送HTML邮件
from_email = 'your_email@gmail.com'
to_email = 'recipient_email@gmail.com'
subject = 'Test Email'
body = '<h1>This is a test email.</h1>'
msg = MIMEMultipart('related')
msg['From'] = from_email
msg['To'] = to_email
msg['Subject'] = subject
html = MIMEText(body, 'html')
msg.attach(html)
smtp_connection.sendmail(from_email, to_email, msg.as_string())
在上面的代码中,我们使用MIMEMultipart()函数创建了一个包含HTML内容的邮件,并使用sendmail()函数发送了邮件。
发送带图片的邮件
from_email = 'your_email@gmail.com'
to_email = 'recipient_email@gmail.com'
subject = 'Test Email'
body = '<h1>This is a test email.</h1><img src="cid:image1">'
msg = MIMEMultipart('related')
msg['From'] = from_email
msg['To'] = to_email
msg['Subject'] = subject
with open('image.jpg', 'rb') as f:
image_data = f.read()
image = MIMEImage(image_data)
image.add_header('Content-ID', '<image1>')
msg.attach(image)
html = MIMEText(body, 'html')
msg.attach(html)
smtp_connection.sendmail(from_email, to_email, msg.as_string())
在上面的代码中,我们使用MIMEMultipart()函数创建了一个包含图片的邮件,并使用sendmail()函数发送了邮件。我们使用MIMEImage()函数将图片添加到邮件中,并使用Content-ID标识图片。然后,我们将HTML内容添加到邮件中。
发送带附件的邮件
from_email = 'your_email@gmail.com'
to_email = 'recipient_email@gmail.com'
subject = 'Test Email'
body = 'This is a test email.'
msg = MIMEMultipart()
msg['From'] = from_email
msg['To'] = to_email
msg['Subject'] = subject
with open('document.pdf', 'rb') as f:
document_data = f.read()
document = MIMEApplication(document_data)
document.add_header('Content-Disposition', 'attachment', filename='document.pdf')
msg.attach(document)
text = MIMEText(body)
msg.attach(text)
smtp_connection.sendmail(from_email, to_email, msg.as_string())
在上面的代码中,我们使用MIMEMultipart()函数创建了一个包含附件的邮件,并使用sendmail()函数发送了邮件。我们使用MIMEApplication()函数将附件添加到邮件中,并使用Content-Disposition标识附件。然后,我们将文本内容添加到邮件中。
步骤4:关闭SMTP连接
在发送邮件后,我们需要关闭SMTP连接。以下是关闭SMTP连接的示例代码:
smtp_connection.quit()
在上面的代码中,我们使用quit()函数关闭SMTP连接。
示例1:发送纯文本邮件
以下是一个发送纯文本邮件的示例代码:
import smtplib
from email.mime.text import MIMEText
smtp_server = 'smtp.gmail.com'
smtp_port = 587
smtp_username = 'your_email@gmail.com'
smtp_password = 'your_password'
smtp_connection = smtplib.SMTP(smtp_server, smtp_port)
smtp_connection.starttls()
smtp_connection.login(smtp_username, smtp_password)
from_email = 'your_email@gmail.com'
to_email = 'recipient_email@gmail.com'
subject = 'Test Email'
body = 'This is a test email.'
msg = MIMEText(body)
msg['From'] = from_email
msg['To'] = to_email
msg['Subject'] = subject
smtp_connection.sendmail(from_email, to_email, msg.as_string())
smtp_connection.quit()
在上面的代码中,我们使用smtplib和email库发送了一封纯文本邮件。
示例2:发送带图片的邮件
以下是一个发送带图片的邮件的示例代码:
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage
from email.mime.text import MIMEText
smtp_server = 'smtp.gmail.com'
smtp_port = 587
smtp_username = 'your_email@gmail.com'
smtp_password = 'your_password'
smtp_connection = smtplib.SMTP(smtp_server, smtp_port)
smtp_connection.starttls()
smtp_connection.login(smtp_username, smtp_password)
from_email = 'your_email@gmail.com'
to_email = 'recipient_email@gmail.com'
subject = 'Test Email'
body = '<h1>This is a test email.</h1><img src="cid:image1">'
msg = MIMEMultipart('related')
msg['From'] = from_email
msg['To'] = to_email
msg['Subject'] = subject
with open('image.jpg', 'rb') as f:
image_data = f.read()
image = MIMEImage(image_data)
image.add_header('Content-ID', '<image1>')
msg.attach(image)
html = MIMEText(body, 'html')
msg.attach(html)
smtp_connection.sendmail(from_email, to_email, msg.as_string())
smtp_connection.quit()
在上面的代码中,我们使用smtplib和email库发送了一封带图片的邮件。我们使用MIMEImage()函数将图片添加到邮件中,并使用Content-ID标识图片。然后,我们将HTML内容添加到邮件中。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python发送邮件的实例代码(支持html、图片、附件) - Python技术站