📅  最后修改于: 2023-12-03 15:22:15.894000             🧑  作者: Mango
在编写程序时,我们经常需要通过推送通知来通知用户程序的运行状态或结果。Python语言已经提供了许多第三方库可以方便地使用推送通知功能。本文介绍了三种常用的推送通知方式:邮件、短信和微信。
Python中可以通过SMTP协议发送邮件。SMTP是邮件传输的标准协议,这里我们可以使用Python内置的smtplib模块来发送邮件。通过SMTP发送邮件的过程可以分为以下几个步骤:
import smtplib
from email.mime.text import MIMEText
# 邮件服务器的地址和端口号
smtp_server = 'smtp.qq.com'
smtp_port = 465
# 发件人和收件人的邮箱地址
from_addr = 'your_email@qq.com'
to_addr = 'recipient_email@qq.com'
# 发件人邮箱的用户名和密码
username = 'your_email@qq.com'
password = 'email_password'
# 构造邮件内容
subject = '邮件主题'
content = '邮件内容'
msg = MIMEText(content, 'plain', 'utf-8')
msg['From'] = from_addr
msg['To'] = to_addr
msg['Subject'] = subject
try:
# 连接SMTP服务器
server = smtplib.SMTP_SSL(smtp_server, smtp_port)
# 登录SMTP服务器
server.login(username, password)
# 发送邮件
server.sendmail(from_addr, to_addr, msg.as_string())
print('邮件发送成功')
except Exception as e:
print('邮件发送失败', e)
finally:
# 关闭SMTP连接
server.quit()
Python中可以通过阿里云短信API发送短信。下面是使用阿里云短信API发送短信的Python代码。其中需要替换一些参数:
import hmac
import hashlib
import base64
import requests
import json
import datetime
# 请求的API地址
url = 'https://dysmsapi.aliyuncs.com/'
# 阿里云账户的AccessKey
access_key_id = 'your_access_key_id'
access_secret = 'your_access_secret'
# 请求参数
params = {
"AccessKeyId": access_key_id,
"Timestamp": datetime.datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%SZ'),
"Action": "SendSms",
"SignName": "your_sign_name",
"TemplateCode": "your_template_code",
"PhoneNumbers": "your_phone_number",
"TemplateParam": json.dumps(
{"code": "your_verification_code"}
)
}
# 签名算法
def sign(secret, params):
string_to_sign = "&".join(["{}={}".format(k, v) for k, v in sorted(params.items())])
sign = hmac.new((secret + '&').encode('utf-8'), string_to_sign.encode('utf-8'), hashlib.sha1).digest()
sign = base64.b64encode(sign).decode('utf-8')
return sign
# 发送请求
params['Signature'] = sign(access_secret, params)
response = requests.get(url, params=params)
print(response.json())
Python中可以使用Server酱来发送微信通知。Server酱提供了一个简单的API,只需要将通知内容通过HTTP POST请求发送到API即可。下面是使用Server酱发送微信通知的Python代码。其中需要替换以下参数:
import requests
# Server酱提供的API地址和Key
url = 'https://sctapi.ftqq.com/SCKEY.send'
sckey = 'your_sckey'
# 构造请求参数
title = '通知标题'
content = '通知内容'
params = {'title': title, 'desp': content, 'text': "Python微信推送"}
# 发送请求
response = requests.post(url, data=params)
print(response.json())
以上就是使用Python实现邮件、短信和微信三种推送通知的方法。我们可以根据自己的需求选择适合的方式进行推送。