阿里云官方给出的实例程序参考如下:

#!/usr/bin/env python
#coding=utf-8

from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.acs_exception.exceptions import ClientException
from aliyunsdkcore.acs_exception.exceptions import ServerException
from aliyunsdkdm.request.v20151123.SingleSendMailRequest import SingleSendMailRequest

client = AcsClient('<accessKeyId>', '<accessSecret>', 'ap-southeast-2')

request = SingleSendMailRequest()
request.set_accept_format('json')

request.set_HtmlBody("HtmlBody")
request.set_Subject("Subject")
request.set_ToAddress("ToAddress")
request.set_AddressType("AddressType")
request.set_AccountName("AccountName")

response = client.do_action_with_exception(request)
# python2:  print(response) 
print(str(response, encoding='utf-8'))

api地址:https://api.aliyun.com/#/?product=Dm&api=SingleSendMail&params={%22RegionId%22:%22ap-southeast-2%22,%22AccountName%22:%22AccountName%22,%22AddressType%22:%22AddressType%22,%22ReplyToAddress%22:false,%22ToAddress%22:%22ToAddress%22,%22Subject%22:%22Subject%22,%22HtmlBody%22:%22HtmlBody%22}&tab=DEMO&lang=PYTHON

 

修改运行后报错:

Traceback (most recent call last):
  File "/home/yeqiang/PycharmProjects/cron_task/test.py", line 103, in <module>
    from aliyunsdkdm.request.v20151123.SingleSendMailRequest import SingleSendMailRequest
ImportError: No module named aliyunsdkdm.request.v20151123.SingleSendMailRequest

 

采用CommonRequest调整后可正常发送邮件,参考代码如下:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import logging

from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.request import CommonRequest


class AliyunEmailUtils:
    def __init__(self):
        pass

    @staticmethod
    def send(toAddress, subject, htmlBody):
        region_id = 'ap-southeast-1'
        client = AcsClient('L******T', 'l****************K', region_id)

        request = CommonRequest()
        request.set_accept_format('json')
        request.set_domain('dm.%s.aliyuncs.com' % region_id)
        request.set_method('POST')
        request.set_protocol_type('https')  # https | http
        request.set_version('2015-11-23')
        request.set_action_name('SingleSendMail')
        request.add_query_param("HtmlBody", htmlBody)
        request.add_query_param("Subject", subject)
        request.add_query_param("ToAddress", toAddress)
        request.add_query_param("AddressType", "0")
        request.add_query_param("ReplyToAddress", "false")
        request.add_query_param("AccountName", "service@mydomain.com")
        request.add_query_param("FromAlias", "myname")

        response = client.do_action(request)
        logging.debug(response)
        return response


if __name__ == '__main__':
    print AliyunEmailUtils.send("289632785@qq.com", "test", "<p>html body</p>")

<script type="text/javascript">alert('hello');</script>

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐