68 lines
2.0 KiB
Python
Executable File
68 lines
2.0 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
import json
|
|
import argparse
|
|
import smtplib
|
|
from keys import *
|
|
from email.message import EmailMessage
|
|
from aliyunsdkcore.client import AcsClient
|
|
from aliyunsdkcore.request import CommonRequest
|
|
|
|
FROM_ADDR = 'noreply@emblem-notify.euphon.net'
|
|
|
|
def send_email(to, subject, body):
|
|
msg = EmailMessage()
|
|
msg.set_content(body)
|
|
msg['Subject'] = subject
|
|
msg['From'] = FROM_ADDR
|
|
msg['To'] = to
|
|
|
|
s = smtplib.SMTP('smtpdm.aliyun.com')
|
|
s.login(FROM_ADDR, 'N72yBNi4cJw')
|
|
s.send_message(msg)
|
|
s.quit()
|
|
|
|
def send_sms_code(mobile, code):
|
|
ak = aliyun_prod_key['access_key']
|
|
sk = aliyun_prod_key['secret']
|
|
client = AcsClient(ak, sk, 'cn-shenzhen')
|
|
request = CommonRequest()
|
|
request.set_accept_format('json')
|
|
request.set_domain('dysmsapi.aliyuncs.com')
|
|
request.set_method('POST')
|
|
request.set_protocol_type('https') # https | http
|
|
request.set_version('2017-05-25')
|
|
request.set_action_name('SendSms')
|
|
|
|
request.add_query_param('RegionId', "cn-shenzhen")
|
|
request.add_query_param('PhoneNumbers', mobile)
|
|
request.add_query_param('SignName', "themblem")
|
|
request.add_query_param('TemplateCode', 'SMS_280201599')
|
|
request.add_query_param('TemplateParam', "{\"code\":\"%s\"}" % code)
|
|
|
|
print(request)
|
|
response = client.do_action(request).decode()
|
|
print(response)
|
|
r = json.loads(response)
|
|
if r.get("Code") != "OK":
|
|
raise Exception(r["Message"])
|
|
|
|
|
|
def parse_args():
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("--to")
|
|
parser.add_argument("--subject")
|
|
parser.add_argument("--body", default='no content')
|
|
parser.add_argument("--mobile")
|
|
parser.add_argument("--verify-code", '-c')
|
|
return parser.parse_args()
|
|
|
|
def main():
|
|
args = parse_args()
|
|
if args.to and args.subject:
|
|
send_email(args.to, args.subject, args.body)
|
|
if args.mobile and args.verify_code:
|
|
send_sms_code(args.mobile, args.verify_code)
|
|
|
|
if __name__ == "__main__":
|
|
main()
|