c语言编程笔录

首页 >   > 笔记大全

笔记大全

Python SMTP 轻松实现邮件发送

更新时间:2023-10-15

段落一:Python SMTP是什么?

Python SMTP是Python标准库中的一个模块,它提供了一个用于发送邮件的简单但完整的SMTP协议实现。使用Python SMTP,我们可以轻松地连接到SMTP服务器,并通过它发送各种类型的电子邮件。SMTP是一种用于电子邮件传输的网络协议,它允许我们发送邮件到任何邮箱地址。

import smtplib

#建立与SMTP服务器的连接
smtpObj = smtplib.SMTP('smtp.server.com', 587)

#发送邮件
smtpObj.sendmail('sender@mail.com', 'receiver@mail.com', 'Hello World!')

#关闭连接
smtpObj.quit()

段落二:如何使用Python SMTP发送邮件?

使用Python SMTP发送邮件非常简单,我们只需要创建一个SMTP对象并与SMTP服务器建立连接,然后使用sendmail函数发送邮件。以下是一个基本的Python SMTP邮件发送示例:

import smtplib

def send_email(sender, receiver, subject, body):
    # 准备邮件内容
    message = 'From: {0}\nTo: {1}\nSubject: {2}\n\n{3}'.format(sender, receiver, subject, body)

    try:
        smtpObj = smtplib.SMTP('smtp.server.com', 587)
        smtpObj.ehlo()
        smtpObj.login('username', 'password')
        smtpObj.sendmail(sender, receiver, message)
        print("邮件发送成功!")
    except Exception as e:
        print("邮件发送失败:", e)
    finally:
        smtpObj.quit()

send_email('sender@mail.com', 'receiver@mail.com', 'Hello World!', '这是Python SMTP邮件发送的示例!')

在这个例子中,我们创建了一个名为send_email的Python函数,该函数接受四个参数:发件人、收件人、主题和正文。我们使用SMTP函数创建SMTP对象,然后使用ehlo函数向SMTP服务器打招呼,接着使用login函数进行身份验证,最后使用sendmail函数发送邮件。如果发送成功,我们将会看到“邮件发送成功!”的提示。

段落三:如何在Python SMTP中使用SSL?

使用SSL保护邮件传输是非常重要的,这可以确保我们发送的电子邮件在传输过程中是安全的。为了在Python SMTP中启用SSL,我们只需要在创建SMTP对象时指定SMTP_SSL函数即可。以下是一个使用SSL的Python SMTP发送邮件示例:

import smtplib

def send_email(sender, receiver, subject, body):
    # 准备邮件内容
    message = 'From: {0}\nTo: {1}\nSubject: {2}\n\n{3}'.format(sender, receiver, subject, body)

    try:
        smtpObj = smtplib.SMTP_SSL('smtp.server.com', 465)
        smtpObj.ehlo()
        smtpObj.login('username', 'password')
        smtpObj.sendmail(sender, receiver, message)
        print("邮件发送成功!")
    except Exception as e:
        print("邮件发送失败:", e)
    finally:
        smtpObj.quit()

send_email('sender@mail.com', 'receiver@mail.com', 'Hello World!', '这是Python SMTP发送SSL邮件的示例!')

在这个例子中,我们使用SMTP_SSL函数而不是SMTP函数来创建SMTP对象。SMTP_SSL函数使用安全套接层 (SSL) 进行传输,并通过指定SMTP服务器端口465来确保传输安全。其他部分基本与上一个例子相同。

段落四:如何在Python SMTP中添加附件?

添加附件可以为我们发送的邮件增加更多的信息量,这在发送报告、官方信函等情况下非常有用。为了在Python SMTP中添加附件,我们需要使用email包来制作邮件并将文件附件添加到邮件中。以下是一个Python SMTP发送带附件电子邮件的示例:

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

def send_email(sender, receiver, subject, body, attachment_path):
    msg = MIMEMultipart('related')
    msg['Subject'] = subject
    msg['From'] = sender
    msg['To'] = receiver

    # 添加正文
    msgText = MIMEText('' + body + '', 'html')
    msg.attach(msgText)

    # 添加附件
    with open(attachment_path, 'rb') as f:
        img_data = f.read()
    image = MIMEImage(img_data, name=os.path.basename(attachment_path))
    msg.attach(image)

    try:
        smtpObj = smtplib.SMTP_SSL('smtp.server.com', 465)
        smtpObj.ehlo()
        smtpObj.login('username', 'password')
        smtpObj.sendmail(sender, receiver, msg.as_string())
        print("邮件发送成功!")
    except Exception as e:
        print("邮件发送失败:", e)
    finally:
        smtpObj.quit()

send_email('sender@mail.com', 'receiver@mail.com', 'Hello World!', '这是Python SMTP添加附件的示例!', 'attachment_path')

在这个例子中,我们创建了一个MIMEMultipart对象来组装邮件,并使用MIMEText添加正文。然后,我们使用MIMEImage添加文件附件。最后,我们将MIMEMultipart对象传递给sendmail函数,发送带有文件附件的电子邮件。