您的位置:

使用Python在服务器上发送邮件

一、Python的smtplib库

要在服务器上使用Python发送邮件,我们需要使用Python的smtplib库。它提供了一个SMTP类,可以用来连接到SMTP服务器并发送邮件。下面是一个基本的使用smtplib库发送邮件的代码示例:

import smtplib

sender_email = '你的发件人邮箱'
receiver_email = '你的收件人邮箱'
password = '你的发件人邮箱密码'

message = '邮件正文'

server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(sender_email, password)
server.sendmail(sender_email, receiver_email, message)
server.quit()

这段代码首先定义了发件人、收件人和发件人邮箱密码,然后生成了邮件正文。接着创建了一个SMTP对象并通过SMTP服务器登录发件人邮箱。最后使用SMTP的sendmail()方法发送邮件并退出SMTP。

二、发送HTML邮件

我们还可以使用Python发送HTML格式的邮件。下面是一个将HTML代码作为邮件正文发送的示例:

import smtplib
from email.mime.text import MIMEText

sender_email = '你的发件人邮箱'
receiver_email = '你的收件人邮箱'
password = '你的发件人邮箱密码'

html_message = '<html><body><p>这是一封<b>HTML</b>邮件!</p></body></html>'
message = MIMEText(html_message, 'html')
message['From'] = sender_email
message['To'] = receiver_email
message['Subject'] = 'HTML Test Email'

server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(sender_email, password)
server.sendmail(sender_email, receiver_email, message.as_string())
server.quit()

这段代码定义了与前面相同的发件人、收件人和发件人邮箱密码,然后生成了HTML代码。通过email库中的MIMEText类将HTML代码转换为消息对象。接着设置消息的发送者、接收者和主题。最后通过SMTP发送邮件并退出SMTP。

三、发送带附件的邮件

我们还可以使用Python发送带有附件的邮件。下面是一个将单个文件作为附件添加到邮件中并发送的示例:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication

sender_email = '你的发件人邮箱'
receiver_email = '你的收件人邮箱'
password = '你的发件人邮箱密码'

message = MIMEMultipart()
message['From'] = sender_email
message['To'] = receiver_email
message['Subject'] = 'Attachment Test Email'

text = '这是一封带附件的邮件!'
message.attach(MIMEText(text))

# 添加附件
with open('/path/to/file', mode='rb') as attachment:
    att = MIMEApplication(attachment.read())
    att['Content-Disposition'] = 'attachment; filename="file.pdf"'
    message.attach(att)

server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(sender_email, password)
server.sendmail(sender_email, receiver_email, message.as_string())
server.quit()

这段代码也定义了与前面相同的发件人、收件人和发件人邮箱密码。创建了一个MIMEMultipart对象并设置了消息的发送者、接收者和主题。然后添加正文并将要附加的文件读入,创建一个MIMEApplication对象,并将文件设置为对象的内容。设置附件的文件名并将其添加到消息对象中。最后通过SMTP发送邮件并退出SMTP。

四、发送带图片的邮件

我们可以使用Python发送带有图片的邮件。下面是一个发送带有图片(嵌入式)的邮件的示例:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage

sender_email = '你的发件人邮箱'
receiver_email = '你的收件人邮箱'
password = '你的发件人邮箱密码'

message = MIMEMultipart()
message['From'] = sender_email
message['To'] = receiver_email
message['Subject'] = 'Image Test Email'

html = '<html><body><p>这是一封带有<b>图片</b>的邮件!</p><p><img src="cid:image1"></p></body></html>'
message.attach(MIMEText(html, 'html'))

# 添加图片
with open('image.jpg', 'rb') as f:
    img_data = f.read()
    image = MIMEImage(img_data, name='image.jpg')
    image.add_header('Content-ID', '<image1>')
    message.attach(image)

server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(sender_email, password)
server.sendmail(sender_email, receiver_email, message.as_string())
server.quit()

这段代码也定义了与前面相同的发件人、收件人和发件人邮箱密码。创建了一个MIMEMultipart对象并设置了消息的发送者、接收者和主题。然后添加HTML代码并将要嵌入的图片读入,创建一个MIMEImage对象,并将图片设置为对象的内容。设置Content-ID标头并将其添加到消息对象中。最后通过SMTP发送邮件并退出SMTP。