Python + Sendcloud 批量发邮件

详细教程:
http://www.sendcloud.net/doc/email/code/#python
https://www.sendcloud.net/doc/email/send_email/#_2
要设置一个模板

python2.7

Sendcloud 提供发邮件的 API。

我们通过python 调用这个 API 来发送邮件。

  1. 打开SendCloud地址 ,注册,然后实名认证。付费,最少59元。

  2. 发送设置里面加一个域名,然后按照说明解析。20171128151183880112073.png

  3. 创建一个 API User20171128151183886244588.png

    创建完成后,会得到一个 API_USER 和一个 API_KEY

    这个会用到我们的脚本里

    测试API_USER

    http://sendcloud.sohu.com/doc/email/user_info/#api_user

    把 API_USER 和 KEY 替换掉星号就可以了。

    http://sendcloud.sohu.com/webapi/userinfo.get.json?api_user=***&api_key=***

    返回结果

    20171128151184092423652.png

    完整代码

    转载自 http://xiaorui.cc/2014/11/12/%E8%B0%83%E7%94%A8sendcloud%E6%8E%A5%E5%8F%A3%E5%AE%9E%E7%8E%B0%E9%82%AE%E4%BB%B6%E6%8E%A8%E9%80%81%E6%94%B6%E5%8F%96python/

    # -- 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 = 'send@qq.com' # 用正确邮件地址替代
    toEmail=['ssd2@icloud.com','490238@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 = 'quanziappfajian'  #API_USER
    password = 'xxxxxxxxxxxx' #API_KEY
    s = smtplib.SMTP('smtpcloud.sohu.com:25')
    s.login(username, password)
    s.sendmail(fromEmail, toEmail, msg.as_string())
    s.quit()
    

    测试完成已经收到了邮件。

    20171128151183932490966.png
    用 send cloud 的好处就是,他自带签名,还有取消订阅。这样比较正规。到达率比较高。

    发送附件

    邮件成功了,现在试试发送附件。可以多个附件,后面来个

    以下是完整代码, 第一行定义 utf-8 一定不能漏了。

    # -- coding:utf-8 --
    import requests
    
    url="https://sendcloud.sohu.com/webapi/mail.send.xml"
    files={"file1": ("1.PNG", open("/Users/mofu/git/1.PNG", "rb")),
        "file2": ("2.txt", open("/Users/mofu/git/2.txt", "rb"))}
    params = {"api_user": "quanziappfajian",
        "api_key" : "lfpMRYSMpeUINWRC",
        "to" : "zfl6439@icloud.com",
        "from" : "4950238@qq.com",
        "fromname" : "圈子团队",
        "subject" : "邀请您测试「圈子」APP",
        "html": "正文是这个样子的"}
    r = requests.post(url, files=files, data=params)
    print r.text
    

    成功。

    20171128151184097365221.png

传入 邮件列表—批量发送

之前我们通过爬虫,爬到了很多的 QQ 邮箱。

现在我们需要把 QQ 邮箱传入收件人列表,然后再依次执行。

我的想法是这样的,如果一次把所有的收件人都传进去,一次性发送,看起来像是群发,给人的感觉不够好。

所有我觉得做一个循环,一个一个的传入或者10个内传入一次。这样效率可能会低一点,但是看起来会比较好。

完整代码

#!/usr/bin/python
#coding:utf-
import requests
from xuexi_email import *

def send_email(email_adresse):
    url="https://sendcloud.sohu.com/webapi/mail.send.xml"
    # files={"file1": ("1.PNG", open("/Users/mofu/git/1.PNG", "rb")),
    #       "file2": ("2.txt", open("/Users/mofu/git/2.txt", "rb"))}
    params = {"api_user": "quanziappfajian",
            "api_key" : "lfpMRYSMpeUINWRC",
            "to" : email_adresse,
            "from" : "4950238@qq.com",
            "fromname" : "圈子团队",
            "subject" : "批量发送4",
            "html": "正文是这个样子的"}
    # 发送带附件的
    # r = requests.post(url, files=files, data=params)
    # 发送不带附件的
    r = requests.post(url, data=params)
    print r.text
    print email_adresse,'发送成功'

def main():
    for i in range(0,4):   #定义一个 range ,然后 列出 0 1  2  3 
        send_email(email_adresse[i])  # 传入 email_adresse 的 第 0  1  2  3 的邮箱

if __name__ == '__main__':
    main()

邮件列表

企业邮箱收不到,其他的收到了

# encoding = utf-8
email_adresse = ['zf20@126.com','bdfbs@duodian.com','sdfas@gmail.com','sdfs@duodian.com']
Comments
Write a Comment