实现功能
使用Python+第三方邮件服务器(smtp.qq.com)实现邮件发送功能。
代码实现
#!/usr/bin/python
# coding=utf-8
import smtplib
from email.mime.text import MIMEText
from email.header import Header
import requests
import json
import time
# 第三方 SMTP 服务
mail_host = "smtp.qq.com" # 设置qq服务器
mail_user = "[email protected]" # 用户名
mail_pass = "xxx" # 授权码
sender = '[email protected]' # 发件人邮箱
receivers = ['[email protected]'] # 收件人邮箱,可设置为你的QQ邮箱或者其他邮箱
if __name__ == '__main__':
mail_content = "这是我的邮件内容内容..." # 邮件内容
message = MIMEText(mail_content, 'plain', 'utf-8')
message['Subject'] = Header('python发邮件', 'utf-8') # 邮件主题
message['From'] = Header("我是发件人", 'utf-8') # 发件人暱称
message['To'] = Header("我是收件人", 'utf-8') # 收件人暱称
try:
smtp = smtplib.SMTP_SSL(mail_host) # SMTP_SSL默认使用465端口
#smtp.set_debuglevel(2)
#smtp.ehlo(mail_host)
smtp.login(mail_user, mail_pass)
smtp.sendmail(sender, receivers, message.as_string()) # 发送邮件
print("邮件发送成功")
except smtplib.SMTPException:
print("Error: 无法发送邮件")
遇到的问题
-
仅支持ssl协议
最初实现代码为smtp = smtplib.SMTP() smtp.connect(mail_host) smtp.login(mail_user, mail_pass) smtp.sendmail(sender, receivers, message.as_string()) # 发送邮件 print("邮件发送成功")
以上代码,在本地是可以成功发送邮件的,但是在Linux服务器上,就提示connect() 方法超时,后参考SMTP connect() failed解决方案得知,邮件配置仅支持ssl协议了,端口号一般是465。后参考python使用smtplib库和smtp.qq.com邮件服务器发送邮件修改代码。
-
Windows和Linux不同环境引发的问题
不同系统编码导致usr/bin/python^M: bad interpreter: No such file or directory
,参考window下编写python脚本在linux下运行出错 usr/bin/python^M: bad interpreter: No such file or directory解决 -
Linux上多Python版本引发的问题
最初同时存在2.7(自带)、3.5(自带)、3.7(自己安装)3个版本。error: import: command not found
,添加#!/usr/bin/python
文件头解决,参考Linux命令行运行.py脚本报错:import 未找到命令。- pip安装requests时,提示
Requirement already satisfied: requests in /usr/lib/python3/dist-packages
,运行代码又报错no module named requests
。
参考Requirement already satisfied: keras in /usr/local/lib/python3.5/dist-packages (2.2.4)。
由于其他原因,通过卸载3.5,重装3.7解决。卸载参考:完全卸载python for Ubuntu 14.04,重装参考:ubuntu安装python3.7,并更新python默认指向为python3.7 - pip安装报错
-bash: /usr/local/bin/pip: /usr/bin/python3: bad interpreter: No such file or directory
。指定python版本解决:python -m pip install requests
。
参考-bash: /usr/local/bin/pip: /usr/bin/python: bad interpreter: No such file or directory的问题解决
参考
QQ授权码获取