继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

python调用sendcloud接口实现邮件批量发送收取及url回调

holdtom
关注TA
已关注
手记 1703
粉丝 240
获赞 991


前言:

今天和朋友聊起了邮件的发送,他那边有个业务是定期给大量的用户发新事物邮件,经常会有被拒的情况,还有就是他们的报警有点多,搞得exchange时常有压力,现在这哥们正琢磨着要搞邮件集群,我觉得没必要这么纠结,咱们可以利用第三方的邮件api。

国外有mailgun,国内有个sohu的sendcloud,这东西好多公司再用,比如youku,letv,安全宝、csdn等。。。

sendcloud不是简单的类似qq企业邮箱的方案,他的接口很是丰富,有发邮件,收邮件,webhook,url回调等功能。

咱们看看官网的介绍:

SendCloud为邮件提供DKIM签名及SPF、负责发送过程中ESP门户申诉与白名单确认,多重措施确保您的邮件高效送达。

SendCloud专注邮件发送领域,ESP白名单确认、发送频率控制、邮件发送追踪,每一个细节都确保无误,让开发者有更多时间专注开发!

SendCloud拥有的数据追踪功能,可以统计邮件送达过程中各种数据,并以多种图表形式呈现,一目了然。

怎么用sendcloud?

1.  需要注册,当然你要有一个域名,如果用过qq,163的企业邮箱,你就可以想成你的邮件服务器在sendcloud那边运维,发信收信的域名,肯定是你的域名了。

2.  需要在域名的授权处加入ESP、SPF、DKIM信息

wKioL1MPVMfCZqrqAAKiNLWbKiI497.jpg

3. 创建子账号:这样很安全,你的账号密码不会暴露给他们,发邮件的时候,调用临时的账号和token密码就可以啦。

wKioL1MPVO2iuxcyAAJr982P3Yg774.jpg

欧了,咱们开始测试,sendcloud支持很多语言的接口,他本身就提供了很多的例子,我这边用python的版本。

利用SMTPLIB的方法    

# -*- coding:utf-8 -*-

import smtplib

import json

from email import Encoders

from email.mime.base import MIMEBase

from email.mime.multipart import MIMEMultipart

from email.mime.text import MIMEText

from email.header import Header

fromEmail = 'alert@xiaorui.cc' # 用正确邮件地址替代

toEmail=['rfyiamcool@163.com','754520135@qq.com']               # 用正确邮件地址替代收件人地址

msg = MIMEMultipart('alternative')

msg['Subject'] = "大家好,我是峰云"

msg['From'] = fromEmail

msg['To'] = ', '.join(toEmail)

html = """<html><head></head><body><p>Hi! -name-<br>hello world!!!</p></body></html>"""

part = MIMEText(html, 'html')

msg.attach(part)

#不同于登录SendCloud站点的帐号,您需要登录后台创建发信子帐号,使用子帐号和密码才可以进行邮件的发送。

username = 'postmaster@rfyiamcool.sendcloud.org'

password = '123123123' #密码

s = smtplib.SMTP('smtpcloud.sohu.com:25')

s.login(username, password)

s.sendmail(fromEmail, toEmail, msg.as_string())

s.quit()

wKioL1MPVenC6EkiAADEUV2Pysc879.jpg

wKiom1MPVh6zN7miAADj4Cq_l5k029.jpg

好了~ 咱们再来测试sendcloud的webapi调用方式 !

提交带附件的邮件,必须使用 POST 方式提交,并且参数使用 multipart/form-data, 可以使用Requests,MultipartPostHandler, urllib2_file,poster 进行附件的发送。

他可以加多个附件 !

#!/usr/bin/python

#coding:utf-8

import requests

url="https://sendcloud.sohu.com/webapi/mail.send.xml"

files={"file1": ("clusterops.tar.gz", open("/root/clusterops.tar.gz", "rb")), \

        "file2": (u"smtp_test.py", open(u"smtp_test.py"))}

# 不同于登录SendCloud站点的帐号,您需要登录后台创建发信子帐号,使用子帐号和密码才可以进行邮件的发送。

params = {"api_user": "postmaster@rfyiamcool.sendcloud.org", \

    "api_key" : "123123",\

    "to" : "rfyiamcool@163.com", \

    "from" : "alert@xiaorui.cc", \

    "fromname" : "from", \

    "subject" : "主题", \

    "html": "正文" \

}

r = requests.post(url, files=files, data=params)

print r.text

~

博客原文:http://rfyiamcool.blog.51cto.com/1030776/1364713

wKioL1MPVoPzc_mTAAD1nRSbdec509.jpg

官网还给提供Python SDK的调用示例,我用了下,还真不错,挺方便的。

sdk下载地址:

http://sendcloud.sohu.com/sendcloud/sites/drupal.sce.sohu.com.sendcloud/files/files/SendCloud_Python_SDK_1_0_0_and_doc.zip

#!/usr/bin/env python

# -*- coding:utf-8 -*-

#xiaorui.cc

import sendcloud

# 不同于登录SendCloud站点的帐号,您需要登录后台创建发信域名,获得对应发信域名下的帐号和密码才可以进行邮件的发送。

server = sendcloud.SendCloud('postmaster@rfyiamcool.sendcloud.org', '123123', tls=False) # 目前tls 不可用

message = sendcloud.Message(("from@sendcloud.com", "来自SendCloud(fromname)"), "峰云就她了", html="<h1>大家好,这里是地球 !!! xiaorui.cc </h1>")

message.add_to(["rfyiamcool@163.com"], ["toname1"])

message.add_attachment("文件1.pdf", "/root/CreditCardReckoning201311.pdf")

#message.add_attachment("文件2.pdf", "/path/to/文件2.pdf")

#server.set_host_port('smtpcloud.sohu.com', '25')

# server.set_debuglevel(1)

server.smtp.send(message)

wKioL1MPWx-BEap_AAIJkOwvB1g486.jpg

博客原文:http://rfyiamcool.blog.51cto.com/1030776/1364713

这边还有用CURL的使用示例,大家可以参考下,替换下邮件地址,用户名,密码就行了。

没有特殊字符时,可以使用-d参数进行post提交

curl -d "api_user=yourusername&api_key=password&to=example1@sendcloud.com; \

example2@sencloud.com&from=user@sendcloud.com&fromname=测试用户& \

subject=主题&html=正文" https://sendcloud.sohu.com/webapi/mail.send.xml

有特殊字符时,使用–data-urlencode参数进行post提交

curl -d "api_user=yourusername&api_key=password&to=example1@sendcloud.com;\

example2@sendcloud.com&from=user@sendcloud.com&fromname=测试用户" \

--data-urlencode subject="我是有特殊字符的主题,如特殊字符&a=1" \

--data-urlencode html="我是正文,特殊字符&b=2" \

URL回调,能选择东西还挺多的。

wKioL1MPXkSz72CfAAFYKyTmHlg373.jpg

好了,测试ok了~  看下sendcloud里面统计的数据 ~

wKioL1MPXqqj6CVtAAHYwDQuAR4820.jpg

©著作权归作者所有:来自51CTO博客作者rfyiamcool的原创作品,谢绝转载,否则将追究法律责任

python sendcloudpython 回调python 收邮件python应用


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP