2014年3月1日星期六

python÷sendcloudúˇ°url÷

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
python÷sendcloudúˇ°url÷  阅读原文»

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

今天和朋友聊起了邮件的发送,他那边有个业务是定期给大量的用户发新事物邮件,经常会有被拒的情况,还有就是他们的报警有点多,搞得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 -*-
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())

wKioL1MPVenC6EkiAADEUV2Pysc879.jpg

wKiom1MPVh6zN7miAADj4Cq_l5k029.jpg

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

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

ˇ  阅读原文»

用户名:xcga_wise 文章数:23 评论数:14
访问量:4132:670:590:3 注册日期:2008-12-20

数据库崩溃,利用备份和日志进行灾难恢复

更多博文请关注:没有伞的孩子必须努力奔跑 (www.xuchanggang.cn)

在实际的工作中,我们可能经常会遇到数据库宕机,数据丢失的情况,下面,我将演示一个模拟环境

1.数据库正常启动插入数据:
[root@client103 ~]# mysql -uroot -pkongzhong
mysql> use test;
mysql> insert into a select * from a;
#注: 这里不演示建表,默认大家都懂
[root@client103 ~]# innobackupex --user=root --password=kongzhong --defaults-file=/etc/my.cnf --port=3306 /tmp/backup/ >/tmp/backup/innoback.log 2>&1
mysql> insert into a select * from a;
[root@client103 ~]# innobackupex --user=root --password=kongzhong --defaults-file=/etc/my.cnf --port=3306 --incremental --incremental-basedir=/tmp/backup/2014-02-27_13-24-51/ /tmp/backup/
mysql> insert into a select * from a;
# 此时大家记录一下现在的总行数(一会还原需要核对数据的)
# 1.将数据目录的下的二进制日志,复制到 /tmp/backup,一会需要重演日志(此步非常重要,复制操作默认大家会了)
# 2.删除数据目录下的所有文件,此时数据库就崩溃了(如果关闭数据库,是关不了,记得杀掉进程,kill -9 ....)
2.数据库宕机后执行恢复操作
[root@client103 ~]# innobackupex --apply-log /tmp/backup/2014-02-27_13-24-51/
[root@client103 ~]# innobackupex --apply-log /tmp/backup/2014-02-27_13-24-51/ --incremental-dir=/tmp/backup/2014-02-27_13-32-44/
# 应用完日志,利用全备恢复数据
[root@client103 ~]# innobackupex --copy-back /tmp/backup/2014-02-27_13-24-51/
# 修改数据目录权限为mysql:mysql
[root@client103 ~]# chown mysq:mysql /var/lib/mysql -R
[root@client103 ~]# /etc/init.d/mysql start
# 登陆数据库,查看数据行数,发现数值与崩溃前是不一致的,所以需要利用日志恢复
[root@client103 ~]# mysql -uroot -pkongzhong
mysql> use test;
mysql> select count(*) from a;
# 查看最后一次增备完成时的日志文件名和pos号(备份时自动记录的)
[root@client103 ~]# cat /tmp/backup/2014-02-27_13-32-44/xtrabackup_binlog_info
mysql-103-bin.000005 3694
# 所以,我们使用二进制执行恢复时,起始点为3694
[root@client103 ~]# mysqlbinlog --start-pos=3694 /tmp/backup/mysql-103-bin.000005 mysql -uroot -pkongzhong
# 此时在登陆数据库查看数据是否相符,请自行测试
mysql> use test;
mysql> select count(*) from a;

本文出自 "没有伞的孩子必须努力奔跑" 博客,请务必保留此出处http://634871.blog.51cto.com/624871/1364676

阅读更多内容

没有评论:

发表评论