使用Python的smtplib模块发送简单邮件

  SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知[参考文献5]。Python中的smtplib模块支持创建SMTP 客户端会话对象,能将邮件发送到互联网上任何带有SMTP或ESMTP监听程序的计算机。本文学习并测试参考文献1中的发送邮件示例代码,测试使用smtplib模块发送简单的电子邮件。
  smtplib模块支持普通连接和加密连接SMTP服务器,前者使用SMTP类,后者使用SMTP_SSL类。测试代码主要使用的函数如下表所示:

序号类或函数说明
1MIMEText本类用于创建主类型为 text 的 MIME 对象,测试代码中用于保存邮件主体内容,同时保存邮件的其它信息,如发件人、收件人、邮件标题等
2MIMEText .as_string所属基类Message中的函数,以展平的字符串形式返回整个消息对象。
3SMTP_SSL加密连接SMTP服务器,默认端口为465
4SMTP_SSL.sendmail发送邮件函数,最重要的参数包括发件人地址,收件人地址及消息字符串。
5SMTP_SSL.login登录到需要认证的SMTP服务器,输入参数是用户名和授权码。
6SMTP_SSL. quit终结 SMTP 会话并关闭连接

  测试代码主要来自参考文献1,在这里主要是列出程序代码及程序执行结果:

# coding=utf-8

import smtplib
from email.mime.text import MIMEText

sender='XXXXXXXXX@qq.com'
password='NNNNNNNNNNN'
to='YYYYYYYYYY@qq.com'

def mail():
    ret=True
    try:
        msg=MIMEText('smtp发送邮件测试','plain','utf-8')
        msg['From']=sender
        msg['To']=to
        msg['Subject']='通过SMTP协议发送邮件测试'

        server=smtplib.SMTP_SSL('smtp.qq.com')
        server.login(sender,password)

        server.sendmail(sender,to,msg.as_string())
        print(msg.as_string())
        server.quit()

    except Exception as e:
        ret=False
        print(e)
    return ret
                     

if mail():
    print('邮件发送成功')
else:
    print('邮件发送失败')

在这里插入图片描述

  除了参考文献1中的测试代码,参考文献2中也有类似的测试代码,唯一的区别是参考文献2中的SMTP示例连接SMTP服务器后,没有调用login函数登录服务器,而是直接调用sendmail函数发送邮件,此时会发送失败,并报下面的错误。参考文献1中给出的解释是使用126或QQ等免费邮箱的话,发送Email前必须先登录到自己的Email,才能利用Email发送邮件。事实也确实如此。
在这里插入图片描述
  本文学习了使用smtplib模块发送简单邮件,后续还会继续学习参考文献1中的发送带附件的电子邮件。

参考文献:
[1]Python从菜鸟到高手
[2]https://docs.python.org/zh-cn/3/library/smtplib.html?highlight=smtplib
[3]https://github.com/python/cpython/blob/3.11/Lib/smtplib.py
[4]https://datatracker.ietf.org/doc/html/rfc821
[5]https://baike.baidu.com/item/SMTP/175887?fromtitle=smtp%E5%8D%8F%E8%AE%AE&fromid=421587&fr=aladdin

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值