python 自动发短信
时间: 2023-06-20 07:03:53 浏览: 95
你可以使用第三方的短信服务提供商的API来实现Python自动发短信功能,例如使用阿里云短信服务或者腾讯云短信服务。以下是一个使用阿里云短信服务的Python示例代码:
```python
import json
import urllib.request
import urllib.parse
access_key_id = 'your_access_key_id' # 阿里云access key id
access_key_secret = 'your_access_key_secret' # 阿里云access key secret
sign_name = 'your_sign_name' # 短信签名名称
template_code = 'your_template_code' # 短信模板代码
def send_sms(phone_numbers, template_params):
url = 'https://dysmsapi.aliyuncs.com/'
params = {
'PhoneNumbers': phone_numbers,
'SignName': sign_name,
'TemplateCode': template_code,
'TemplateParam': json.dumps(template_params),
'Action': 'SendSms',
'Version': '2017-05-25',
'RegionId': 'cn-hangzhou',
'AccessKeyId': access_key_id,
'SignatureMethod': 'HMAC-SHA1',
'Timestamp': '2017-12-01T10:00:00Z',
'SignatureVersion': '1.0',
'SignatureNonce': '45e25e9b-0a6f-4070-8c74-0d49e6b1f58c'
}
sorted_params = sorted(params.items(), key=lambda x: x[0])
encoded_params = urllib.parse.urlencode(sorted_params)
string_to_sign = 'GET&%2F&' + urllib.parse.quote(encoded_params)
signature = hmac.new(access_key_secret.encode('utf-8'), string_to_sign.encode('utf-8'), hashlib.sha1).digest()
signature = base64.b64encode(signature).decode('utf-8')
params['Signature'] = signature
url += '?' + urllib.parse.urlencode(params)
with urllib.request.urlopen(url) as response:
response_text = response.read().decode('utf-8')
response_json = json.loads(response_text)
return response_json
```
使用示例:
```python
send_sms('手机号码', {'code': '123456'})
```
其中,`phone_numbers`是手机号码,`template_params`是短信模板中的变量参数。你需要将`access_key_id`和`access_key_secret`替换为你阿里云短信服务的access key id和access key secret,`sign_name`和`template_code`替换为你的短信签名名称和短信模板代码。另外,可能需要安装`hmac`和`hashlib`模块(Python内置模块)以及`base64`模块(需要手动安装)。
阅读全文