python自动引流_Python实现推广营销邮件自动发送系统

*文中的全部代码为在Python2.7下开发,在3.x的环境下尚未测试。

Python使用自带的email库的SMTP功能发邮件:

from email.mime.text import MIMEText

import smtplib

from email.header import Header

def _format_addr(s):

name, addr = parseaddr(s)    return formataddr(( \

Header(name, 'utf-8').encode(), \

addr.encode('utf-8') if isinstance(addr, unicode) else addr))

#smtp设置

from_addr = xxxx    #账号

password = xxxx     #密码

smtp_server = xxxx  #SMTP服务器

to_addr = xxxx@xxx.com  #发给谁

#邮件内容

msg = MIMEText('内容', 'plain', 'utf-8') #文本内容

#msg = MIMEText('

Test

' +

'

测试

' +

'', 'html', 'utf-8') #html内容

msg['From'] = _format_addr(u'发件人昵称 ' % from_addr)

msg['To'] = _format_addr(u'收件人昵称 ' % to_addr)

msg['Subject'] = Header(u'邮件标题', 'utf-8').encode()

#连接服务器,发送邮件

server = smtplib.SMTP(smtp_server, 25) #默认端口25

#server = smtplib.SMTP_SSL(smtp_server,465) #这个是通过SSL方式连接

server.set_debuglevel(1)

server.login(from_addr, password)

server.sendmail(from_addr, [to_addr], msg.as_string())

server.quit()

运行代码,OK,一封邮件发送成功~

发送推广邮件,首先要有大量的邮箱小号,不然你会看到这个:

这里假设我通过P♂Y交易买了一些邮箱小号,我们把这些小号格式化成这样的格式:

xxx1@xxx.com password1

xxx2@xxx.com password2

... ...

存到mailbox变量里:

mailbox = '''xxx1@xxx.com password1

xxx2@xxx.com password2

... ...'''

写个函数,让函数解析mailbox,每次随机返回一个邮箱账号,存到列表里:

def FuckMail():    #解析邮箱

global mailbox

mailbox = mailbox.split('\n')

for i in range(len(mailbox)):

mailbox[i] = mailbox[i].split(' ')

def GetMail():    #获取一个邮箱,返回list[邮箱账户, 密码]

global mailbox

index = randint(0, len(mailbox) - 1)

return mailbox[index]

运行几次GetMail(),我们获取到了不同的随机邮箱账号。

好了,下面就是发信的部分。我之前定向采集好了引流的目标邮箱,以list的形式存到了to_addr里。

to_addr = ['xxx@qq.com', 'xxx@qq.com', ....]

ad变量存放我们的广告内容

ad = '''Test Ad Mail.'''

接着写个发件函数:

def Send():

global smtp_server, ad

msg = MIMEText(ad, 'html', 'utf-8')

msg['Subject'] = Header('标题', 'utf-8')

step = 10    #每次发送10个

for i in range(0, len(to_addr), step):

SendList = to_addr[i:i+step]

print("sending: %d to %d" % (i, i + step))

try:

print('Sending Email: ', SendList)

mail = GetMail()

from_addr = mail[0]

password = mail[1]

server = smtplib.SMTP_SSL(smtp_server,465)

server.set_debuglevel(1)

server.login(from_addr, password)

server.sendmail(from_addr, SendList, msg.as_string())

server.quit()

except:

print('ERROR!')

sleep(3600)    #一般是邮箱被封了,休息一小时重试

pass

sleep(10)

运行它,一个完美的发邮件程序写好了。

划重点!划重点!划重点!:

以上程序如果用163邮箱当小号的时候,你会看到这个:

这个函数没有写msg['From']和msg['To'],因此这个msg不是标准形式的发件header。在QQ邮箱测试时没问题的,但是163邮箱会提示垃圾邮件,禁止发送。手动添加上这两个即可。

总结一下,整个营销发件程序为:

#encoding:utf-8

from email.mime.text import MIMEText

import smtplib

import requests as r

import json

from random import shuffle, randint

from time import sleep

from email.header import Header

#小号列表

mailbox = '''xxx@qq.com password

xxx2@qq.com password

xxx3@qq.com password'''

#smtp服务器

smtp_server = 'smtp.qq.com'

#收件人

to_addr = []

#广告词(邮件内容)

ad = '

致正在忙碌的考研、考证党们~

作为一个新时代的大学生,我们要为自己奋斗,为自己努力。为了找到一个好的工作,找个好的生活环境,冲一冲吧~

'

def GetTarget():

global to_addr

'''次数省略目标邮箱的采集程序'''

def Send():

global smtp_server, ad

msg = MIMEText(ad, 'html', 'utf-8')

msg['Subject'] = Header('致正在奋斗中的大学党', 'utf-8')

step = 10

for i in range(0, len(to_addr), step):

SendList = to_addr[i:i+step]

print("sending: %d to %d" % (i, i + step))

try:

print('Sending Email: ', SendList)

mail = GetMail()

from_addr = mail[0]

password = mail[1]

server = smtplib.SMTP_SSL(smtp_server,465) #SSL方式连接

server.set_debuglevel(1)

server.login(from_addr, password)

server.sendmail(from_addr, SendList, msg.as_string())

server.quit()

except:

print('ERROR!')

sleep(3600)

pass

sleep(10)

def FuckMail():

global mailbox

mailbox = mailbox.split('\n')

for i in range(len(mailbox)):

mailbox[i] = mailbox[i].split(' ')

def GetMail():

global mailbox

index = randint(0, len(mailbox) - 1)

return mailbox[index]

FuckMail()

GetTarget()

Send()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值