欢迎访问宙启技术站
智能推送

Python中如何使用smtplib发送带有自定义SMTP服务器地址的电子邮件

发布时间:2024-01-16 04:14:53

在Python中使用smtplib发送带有自定义SMTP服务器地址的电子邮件是相对简单的。smtplib是Python的内置模块,它提供了用于发送SMTP邮件的功能。

首先,我们需要导入smtplib模块,并创建一个SMTP对象。例如,假设我们的SMTP服务器地址是smtp.example.com,我们可以使用如下代码创建SMTP对象:

import smtplib

smtp_server = 'smtp.example.com'
smtp_port = 587  # 通常SMTP服务器使用587端口

smtp_obj = smtplib.SMTP(smtp_server, smtp_port)

接下来,我们需要通过SMTP对象登录到服务器。如果服务器要求身份验证,则需要提供用户名和密码。例如,假设我们的用户名是'example_user',密码是'password123',我们可以使用如下代码登录:

smtp_username = 'example_user'
smtp_password = 'password123'

smtp_obj.login(smtp_username, smtp_password)

登录成功后,我们可以使用SMTP对象的方法发送邮件。发送邮件需要指定邮件的发送者、接收者、主题和正文,可以选择性地添加附件。下面是一个例子,演示如何发送一封带有附件的邮件:

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders

def send_email(sender, recipients, subject, body, attachment_path=None):
    msg = MIMEMultipart()
    msg['From'] = sender
    msg['To'] = ", ".join(recipients)
    msg['Subject'] = subject

    # 添加正文
    msg.attach(MIMEText(body, 'plain'))

    if attachment_path:
        # 添加附件
        attachment = open(attachment_path, 'rb')
        mime_base = MIMEBase('application', 'octet-stream')
        mime_base.set_payload((attachment).read())
        encoders.encode_base64(mime_base)
        mime_base.add_header('Content-Disposition', 'attachment', filename=attachment_path)
        msg.attach(mime_base)

    # 发送邮件
    smtp_obj.sendmail(sender, recipients, msg.as_string())

使用以上代码,我们可以通过调用send_email()函数来发送电子邮件。需要指定发件人(sender)、收件人(recipients)、邮件主题(subject)和正文(body)。可以选择性地添加附件(attachment_path)。

最后,我们需要通过调用SMTP对象的quit()方法来关闭与服务器的连接:

smtp_obj.quit()

这是一个基本的使用smtplib发送带有自定义SMTP服务器地址的电子邮件的例子。根据你的需求,你可以根据上述代码进行修改和扩展。