数据运营 | Python发邮件的两个姿势

作者:阿乐

还记得七夕那天的菜头嘛,用R代码写了封优雅的情书给女神,博得美人一笑。用Python的菜尾让阿乐来篇python代码的情书,今天,它来了。

通过Python发送邮件,主要是借助smtplibemail 模块,阿乐提供了两套方案给菜尾。

 0  最常用的姿势

了解阿乐的都知道,阿乐喜欢以身敬人,所以话不多说,亮招。实际使用时,只需要把邮箱、密码、主机、端口换成自己邮箱邮箱的即可。

# 01 导入模块

import smtplib 

from email.mime.text import MIMEText 

from email.mime.multipart import MIMEMultipart

from email.mime.application import MIMEApplication

# 02 封装函数(因为参数过多,以及方便调用就封装)

#  (参数为 标题、收件人、抄送人、正文)

def send_mail(subject, _to_list, _to_cc_list, content):

    _user = '[email protected]'  # 邮箱用户名

    _pwd = '123456'            # 邮箱密码 (如果需要开通授权码的先开通再填入授权码)

    msg = MIMEMultipart()         

    msg['Subject'] = subject  # 标题

    msg['From'] = _user           

    msg['Cc'] = ",".join(_to_cc_list)

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

    part1 = MIMEText(content, 'html', 'utf-8')  #正文

    msg.attach(part1)

    # 构造附件。非必须,根据实际使用

    # att2 = MIMEApplication()

    # att2.add_header()

    # msg.attach(att2)

  try:

    s = smtplib.SMTP()

    s.connect('email.baidu.com', 25)  #25为SMTP端口号,根据具体邮箱定

    s.starttls()

    s.login(_user,_pwd) 

    s.sendmail(_user, _to_list + _to_cc_list, msg.as_string())

    return True

  except:

    return False


# 03 发送邮件

subject = '来自荔枝星球的一封信'

p1 =  '''

您好,系统自动为你推送本日的荔枝售卖业绩报表

'''

p2 = '''

-- 荔枝星球数据中心

'''

html = p1 + p2  #正文内容,根据实际情况写html

_to_list=['[email protected]']           

_to_cc_list= ['[email protected]']               

send_mail(subject, _to_list, _to_cc_list, html) #发送

无图不欢,我们来看下效果,嗯,还是可以哒。

 0  最简单的姿势

菜尾拿到代码转身便想走,阿乐拿出了另一段短小精悍的代码。

import yagmail

yag = yagmail.SMTP(user="[email protected]"  #邮箱

                , password="1234568"          #密码

                , host='smtp.163.com')

subject='来自荔枝星球的一封信'          #邮箱标题

p1 =  '''

您好,系统自动为你推送本日的荔枝售卖业绩报表

'''

p2 = '''

-- 荔枝星球数据中心

'''

contents= p1 + p2  + p3              #邮箱正文

# 发送邮件

yag.send('[email protected]',subject,contents,cc='[email protected]')


 0  写在结尾

菜尾心系女拿着代码就去开干了,不过阿乐在这里多提一句。无论是哪种方式都可以实现我们的发送邮件的目的,利用好这个工具就可以把数据自动化通知这个问题给解决。方案1是最常见的方式,但是可控度高,方便修改各种参数;方案2是被高度封装的模块,代码量是降低了很多,但是要修改一些东西没有方案1方便。在工作中还是项目中,我们根据具体要求切换。

容易不一定简单,简单不一定容易。如果你想看更多好看好玩的文字,关注公众号:Litchist ,登陆 荔枝星球M,把你想看的内容私信我,我排上倒海为你写!

感谢您的耐心阅读,请顺手点个「在看」,谢谢。

你可能感兴趣的:(数据运营 | Python发邮件的两个姿势)