Python email 电子邮件
docker>Evan2018年3月30日 (五) 03:48的版本 (→本机有sendmail(smtp))
目录
SMTP发送邮件
smtplib
Python提供smtplib模块,该模块定义了一个SMTP客户端会话对象,可用于使用SMTP或ESMTP侦听器守护程序向任何互联网机器发送邮件。 这是一个简单的语法,用来创建一个SMTP对象,稍后将演示如何用它来发送电子邮件 - import smtplib smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] ) 一封电子邮件需要一个From,To和一个Subject标题,与电子邮件的正文与空白行分开。 要发送邮件,使用smtpObj连接到本地机器上的SMTP服务器。 然后使用sendmail方法以及消息,从地址和目标地址作为参数(即使来自和地址在电子邮件本身内,这些并不总是用于路由邮件)。
本机有sendmail(smtp)
sudo apt install sendmail sudo /etc/init.d/sendmail start #!/usr/bin/python # -*- coding: utf-8 -*- import smtplib from email.mime.text import MIMEText from email.header import Header sender = '[email protected]' receivers = ['[email protected]'] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱 # 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码 message = MIMEText('Python 邮件发送测试...', 'plain', 'utf-8') message['From'] = Header("python学习教程", 'utf-8') message['To'] = Header("这里是测试", 'utf-8') subject = 'Python SMTP 邮件测试' message['Subject'] = Header(subject, 'utf-8') try: smtpObj = smtplib.SMTP('localhost') smtpObj.set_debuglevel(1) #打印出和SMTP服务器交互的所有信息 smtpObj.sendmail(sender, receivers, message.as_string()) print "邮件发送成功" except smtplib.SMTPException: print "Error: 无法发送邮件"
结果如下图
- Smtp.png
使用其他邮件服务商的 SMTP 访问(QQ、网易、Google等)
126 smtp
#!/usr/bin/python # -*- coding: utf-8 -*- import smtplib from email.mime.text import MIMEText from email.utils import formataddr my_sender='[email protected]' # 发件人邮箱账号 my_pass = 'evan' # 发件人邮箱密码 my_user='[email protected]' # 收件人邮箱账号,我这边发送给自己 def mail(): ret=True try: msg=MIMEText('363636填写邮件内容','plain','utf-8') msg['From']=formataddr(["Fromevan",my_sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号 msg['To']=formataddr(["FK",my_user]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号 msg['Subject']="evan教程发送邮件测试" # 邮件的主题,也可以说是标题 server=smtplib.SMTP_SSL("smtp.126.com", 465) # 发件人邮箱中的SMTP服务器,端口是25 server.login(my_sender, my_pass) # 括号中对应的是发件人邮箱账号、邮箱密码 server.sendmail(my_sender,[my_user,],msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件 server.quit() # 关闭连接 except Exception: # 如果 try 中的语句没有执行,则会执行下面的 ret=False ret=False return ret ret=mail() if ret: print("邮件发送成功") else: print("邮件发送失败") ''' Fromevan 17:23 (0分钟前) 发送至 我 126.com 填写邮件内容 '''
qq smtp
#!/usr/bin/python # -*- coding: utf-8 -*- import smtplib from email.mime.text import MIMEText from email.utils import formataddr my_sender='[email protected]' # 发件人邮箱账号 my_pass = 'vava' # 发件人邮箱密码 my_user='[email protected]' # 收件人邮箱账号,我这边发送给自己 def mail(): ret=True try: msg=MIMEText('363636填写邮件内容','plain','utf-8') msg['From']=formataddr(["FromRunoob",my_sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号 msg['To']=formataddr(["FK",my_user]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号 msg['Subject']="evan教程发送邮件测试" # 邮件的主题,也可以说是标题 server=smtplib.SMTP_SSL("smtp.qq.com", 465) # 发件人邮箱中的SMTP服务器,端口是25 server.login(my_sender, my_pass) # 括号中对应的是发件人邮箱账号、邮箱密码 server.sendmail(my_sender,[my_user,],msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件 server.quit() # 关闭连接 except Exception: # 如果 try 中的语句没有执行,则会执行下面的 ret=False ret=False return ret ret=mail() if ret: print("邮件发送成功") else: print("邮件发送失败") ''' evan教程发送邮件测试 发件人:evan <[email protected]> 时 间:2018年3月27日(星期二) 下午3:48 纯文本 | 收件人: 563497988 <[email protected]> 363636填写邮件内容 '''