用Python发送邮件,可以群发,带有多个附件

Python022

用Python发送邮件,可以群发,带有多个附件,第1张

''''' 

函数说明:Send_email_text() 函数实现发送带有附件的邮件,可以群发,附件格式包括:xlsx,pdf,txt,jpg,mp3等 

参数说明: 

    1. subject:邮件主题 

    2. content:邮件正文 

    3. filepath:附件的地址, 输入格式为["","",...] 

    4. receive_email:收件人地址, 输入格式为["","",...] 

'''  

def Send_email_text(subject,content,filepath,receive_email):  

    import smtplib  

    from email.mime.multipart import MIMEMultipart   

    from email.mime.text import MIMEText   

    from email.mime.application import MIMEApplication  

    sender = "发送方邮箱"  

    passwd = "填入发送方密码"  

    receivers = receive_email   #收件人邮箱  

      

    msgRoot = MIMEMultipart()   

    msgRoot['Subject'] = subject  

    msgRoot['From'] = sender  

      

    if len(receivers)>1:  

        msgRoot['To'] = ','.join(receivers) #群发邮件  

    else:  

        msgRoot['To'] = receivers[0]  

      

    part = MIMEText(content)   

    msgRoot.attach(part)  

      

    ##添加附件部分  

    for path in filepath:  

        if ".jpg" in path:  

            #jpg类型附件  

            jpg_name = path.split("\\")[-1]  

            part = MIMEApplication(open(path,'rb').read())   

            part.add_header('Content-Disposition', 'attachment', filename=jpg_name)  

            msgRoot.attach(part)  

          

        if ".pdf" in path:  

            #pdf类型附件  

            pdf_name = path.split("\\")[-1]  

            part = MIMEApplication(open(path,'rb').read())   

            part.add_header('Content-Disposition', 'attachment', filename=pdf_name)   

            msgRoot.attach(part)  

          

        if ".xlsx" in path:  

            #xlsx类型附件  

            xlsx_name = path.split("\\")[-1]  

            part = MIMEApplication(open(path,'rb').read())   

            part.add_header('Content-Disposition', 'attachment', filename=xlsx_name)  

            msgRoot.attach(part)  

              

        if ".txt" in path:  

            #txt类型附件  

            txt_name = path.split("\\")[-1]  

            part = MIMEApplication(open(path,'rb').read())  

            part.add_header('Content-Disposition', 'attachment', filename=txt_name)  

            msgRoot.attach(part)  

          

        if ".mp3" in path:  

            #mp3类型附件  

            mp3_name = path.split("\\")[-1]  

            part = MIMEApplication(open(path,'rb').read())   

            part.add_header('Content-Disposition', 'attachment', filename=mp3_name)   

            msgRoot.attach(part)  

              

    try:  

        s = smtplib.SMTP()  

        s.connect("smtp.mail.aliyun.com") #这里我使用的是阿里云邮箱,也可以使用163邮箱:smtp.163.com  

        s.login(sender, passwd)  

        s.sendmail(sender, receivers, msgRoot.as_string())  

        print ("邮件发送成功")  

    except smtplib.SMTPException as e:  

        print("Error, 发送失败")  

    finally:  

        s.quit()

企业微信群机器人常用来作为通知工具,群发消息给群内成员,充当小助手的角色。但若按照官方 API 文档来构建请求,也确实不太方便。本文通过 Python 第三方库来控制企业微信群机器人发送消息。

添加机器人之后,可以获取到 webhook 地址,假设 webhook 是: https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=633a31f6-7f9c-4bc4-97a0-0ec1eefa589

webhook 中的 633a31f6-7f9c-4bc4-97a0-0ec1eefa589 就是 Robot Key

发送纯文本消息

发送 Markdown 格式消息

发送图片

还支持直接发送一个在线的图片

发送图文

该第三方库还提供了命令行工具供用户执行,即使不会 Python 也能便捷的使用。

对参数进行一下说明:

说明:

发送文本消息,可以直接指定字符串内容:

也可以指定文本文件:

发送 markdown 格式的消息:

发送图片:

发送图文消息:

一点都不难。

import smtplib

#接下去设置好三个参数fromaddr, toaddr, message

#群发的话把toaddr多设置几个地址就ok了

s = smtplib.SMTP(server)

#server在linux下可以是localhost,或者换成qq.smtp.com或163的smtp等

#如果是qq.smtp.com再加上下面一步

s.login(‘你的QQ号’, ‘你的QQ密码’) #其它邮箱smtp服务器类推。

#最后发送邮件,如下

s.sendmail(fromaddr, toaddr, message_to_send)

核心的语句就是上面的那几句。其它功能可以自己添加。

如果你不想自己弄就留下你的邮箱。