首页 > 编程语言 > 详细

Python之smtplib模块

时间:2021-04-10 15:50:14      阅读:9      评论:0      收藏:0      [点我收藏+]

工作中难免会出现自动发送电子邮件的需求,比如说做完自动化测试之后通过电子邮件的形式将结果反馈出来。Python中提供了标准库smtplib来解决这一问题,该模块定义了一个smtp客户端会话对象,能够将邮件发送给smtp服务端。具体用法请查看下面例子。

import smtplib
from email.mime.text import MIMEText


def send_email(from_user_name, from_address, password, to_address_list, subject, content, smtp_host):
    """
    :param from_user_name: str> 发送邮箱的用户名
    :param from_address: str> 发送邮箱地址
    :param password: str> 发送邮箱密码
    :param to_address_list: list> 接收邮箱地址
    :param subject: str> 邮件主题
    :param content: str> 邮件内容
    :param smtp_host: str> smtp服务器地址
    :return send_result: bool > 邮件是否发送成功
    """
    smtp = smtplib.SMTP(smtp_host, 465)
    smtp.starttls()
    smtp.set_debuglevel(1)
    smtp.ehlo(smtp_host)
    smtp.login(from_address, password)
    msg = MIMEText(content, _subtype=html, _charset=utf-8)
    msg[From] = u%s<%s> % (from_user_name, from_address)
    msg[To] = ",".join(to_address_list)
    msg[Subject] = subject

    send_result = False
    try:
        smtp.sendmail(from_address, to_address_list, msg.as_string())
        send_result = True
    except smtplib.SMTPException as e:
        print(str(e))
        send_result = False
    finally:
        smtp.quit()
        return send_result


if __name__ == __main__:
    send_email(
        from_user_name=from_user_name,
        from_address=from_address@xxx.com,
        password=email_password,
        to_address_list=[a@xxx.com, b@xxx.com],
        subject=test_subject,
        content=test_content,
        smtp_host=smtp.xxx.com
    )

该例子中定义了send_email()函数实现了连接smtp服务端、登录邮箱、发送邮件等功能。其中smtplib.SMTP(smtp_host, 465)在初始化实力时就已经进行了smtp连接,需要传入服务端的host和port,所以入参465并不是固定的,要根据服务端的端口号来改变。

登录SMTP服务器时往往会进行身份验证,这里用到了smtp.login(from_address, password),入参是用于验证的用户名和密码。

登录完成后,可以通过smtp.sendmail(from_address, to_address_list, msg.as_string())把邮件发送给服务端,入参是发件人地址、收件人地址及邮件内容。

 

参考资料

  • https://docs.python.org/zh-cn/3.9/library/smtplib.html

 

Python之smtplib模块

原文:https://www.cnblogs.com/zhuosanxun/p/14640218.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!