實現功能
使用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授權碼獲取