【Python】实现邮件发送功能
SMTP协议
SMTP(Simple Mail Transfer Protocol),简单邮件传送协议,是一种提供可靠且有效的电子邮件传输的协议。SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知。
常见SMTP服务器
电子邮件提供商 | SMTP服务器域名 |
---|---|
smtp.google.com | |
网易163邮箱 | smtp.163.com |
网易126邮箱 | smtp.126.com |
腾讯 | smtp.qq.com |
新浪 | smtp.sina.com |
微软 | smtp.live.com |
开启SMTP服务(以126邮箱示例)
发送一封纯文本邮件
sendText.py
import smtplib
from email.mime.text import MIMEText
# 填写SMTP服务器的域名和端口号
SMTP_SERVER = "smtp.126.com"
SMTP_PORT = 25
def send_mail(user, pwd, to, subject, text):
msg = MIMEText(text)
msg['From'] = user
msg['To'] = to
msg['Subject'] = subject
smtp_server = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
print("连接SMTP服务器成功")
try:
print("开始加密会话")
smtp_server.starttls()
print("登录中...")
smtp_server.login(user, pwd)
print("开始发送邮件")
smtp_server.sendmail(user, to, msg.as_string())
except Exception as err:
print(f"发送失败,原因: {err}")
else:
print("发送成功")
finally:
smtp_server.quit()
def main():
send_mail('你的邮箱', '授权码',
'对方的邮箱', '纯文本邮件', '这是一封纯文本邮件')
if __name__ == '__main__':
main()
注意:需要先在main函数里写入自己的邮箱、SMTP服务授权码以及对方的邮箱等信息
$ python sendText.py
连接SMTP服务器成功
开始加密会话
登录中...
开始发送邮件
发送成功
发送一封带有附件的邮件
由于标准库smtplib
添加各种附件比较麻烦冗杂,因此我们使用开源第三方库yagmail
来发送带附件的邮件。首先安装yagmail
$ pip install yagmail
或
$ pip3 install yagmail
sendAttach.py
import yagmail
# SMTP服务器的域名和端口号
SMTP_HOST = 'smtp.126.com'
SMTP_PORT = 465
# content存放文件路径,这里我们以上面出现的几张图为例,一次编号为1.png、2.png、3.png、4.png
content = ['1.png', '2.png', '3.png', '4.png']
with yagmail.SMTP(user='你的邮箱', password='授权码', host=SMTP_HOST, port=SMTP_PORT) as yag:
yag.send('对方的邮箱', '附件测试', '这是一封带有附件的邮件', content)
注意:需要先填写好自己的邮箱、SMTP服务授权码以及对方的邮箱等信息
$ python sendAttach.py
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/97116.html