精华内容
下载资源
问答
  • 该源码是针对特定网站,不是通用代码,但是具有一定的参考性,不想下载可以看我博客有相应的每个部分的代码块 http://blog.csdn.net/henni_719/article/details/60580815
  • python3自动发送邮件添加附件

    千次阅读 热门讨论 2019-09-25 00:50:29
    将本地报表文件以附件形式添加邮件发送 设置定时任务 代码 import pymysql import pandas as pd import smtplib from email.header import Header from email.mime.text import MIMEText from email.m...

    思路

    1. 从数据库读取报表数据
    2. 将报表数据以excel形式存到本地
    3. 将本地报表文件以附件形式添加到邮件发送
    4. 设置定时任务

    代码 

    import pymysql
    import pandas as pd
    import smtplib
    from email.header import Header
    from email.mime.text import MIMEText
    from email.mime.image import MIMEImage
    from email.mime.multipart import MIMEMultipart
    from email.mime.application import MIMEApplication 
    import datetime
    import schedule,time
    
    def create_report(host,port,user,passwd,db,sql,annex_path):
        '从数据库读取报表数据,以excel形式将报表存到本地'
        conn = pymysql.connect(host=host, port=port, user=user, passwd=passwd, db=db)# 连接mysql
        cursor = conn.cursor()#创建游标
        cursor.execute(sql)#执行sql语句
        result = cursor.fetchall()#获取执行结果    
        result=[list(x) for x in result]
        col_result = cursor.description  # 获取查询结果的字段描述
        columns=[x[0] for x in col_result]
        data=pd.DataFrame(result,columns=columns)
        data.to_excel(annex_path,index=False)
        cursor.close()#关闭游标
        conn.close()#关闭连接
    
    def send_email(file_name,annex_path):
        '#创建报表和发送邮件'  
        try:
            file_name_new=str(datetime.datetime.now().date())+file_name#根据当前日期拼接附件名称
            annex_path_new=annex_path+'/'+file_name_new  #拼接报表存储完整路径 
            create_report(host,port,user,passwd,db,sql,annex_path_new)#创建报表
            
            #传入邮件发送者、接受者、抄送者邮箱以及主题    
            message = MIMEMultipart()
            message['From'] = sender
            message['To'] = ','.join(receiver)
            message['Cc'] = ";".join(Cc_receiver)
            message['Subject'] = Header(str(datetime.datetime.now().date())+title, 'utf-8')
            
            #添加邮件内容
            text_content = MIMEText(content)
            message.attach(text_content)
            
            #添加附件    
            annex = MIMEApplication(open(annex_path_new, 'rb').read()) #打开附件
            annex.add_header('Content-Disposition', 'attachment', filename=file_name_new)   
            message.attach(annex)
    
            #image_path = 'C:/Users/yang/Desktop/1.png'
            #image = MIMEImage(open(image_path , 'rb').read(), imageFile.split('.')[-1])
            #image.add_header('Content-Disposition', 'attachment', filename=image_path.split('/')[-1])
            #message.attach(image)
            
            #登入邮箱发送报表
            server = smtplib.SMTP(smtp_ip)#端口默认是25,所以不用指定
            server.login(sender,password)
            server.sendmail(sender, receiver, message.as_string())
            server.quit()
            print('success!',datetime.datetime.now())
            
        except smtplib.SMTPException as e:
            print('error:',e,datetime.datetime.now()) #打印错误
                
    if __name__ == '__main__':
    #参数设置
        #数据库参数设置
        host='localhost'#数据库ip地址
        port=3306#端口
        user='root'#账户
        passwd='XXX'#密码
        db='XXX'#数据库名称
        sql="SELECT cid,max(score) as max_score FROM sc group by cid;"#报表查询语句
        
        #发送邮件参数设置   
        sender = 'XXX@126.com'#发送者邮箱
        password = 'XXX'#发送者邮箱授权码
        smtp_ip='smtp.126.com'#smtp服务器ip,根据发送者邮箱而定
        receiver = ['XXX@qq.com','XXX@qq.com']#接收者邮箱 
        Cc_receiver=['XXX@qq.com','XXX@126.com']#抄送者邮箱
        title='订单日报'#邮件主题
        content = 'hello,这是今天的订单日报!'#邮件内容
        file_name='订单日报.xlsx'#报表名称
        annex_path='C:/Users/yang/Desktop/'#报表存储路径,也是附件路径
        ts='10:13'#发送邮件的定时设置,每天ts时刻运行
        
    #自动创建报表并发送邮件
        print('邮件定时发送任务启动中.......')
        schedule.every().day.at(ts).do(send_email, file_name,annex_path) # 每天某时刻运行   
        while True:
            schedule.run_pending() # 运行所有可运行的任务
            time.sleep(43200)#因为每次发送邮件的间隔时间是一天左右,所以休眠时间可以设长些

    结果 

     

    授权码的获取

    其中邮箱的授权码不是邮箱的密码,而是邮箱授权给第三方软件登陆邮箱的授权。以QQ邮箱为例,获取授权码步骤如下:

    (1)登陆邮箱,点开设置:

    (2)选择账户,找到开启SMTP,点击开启:

     

    (3)点击开启后,需要本人身份验证:

    (4)验证成功后,会出现授权码:

    这个授权码,就是要在连接邮件的时候填上。

     附:常用SMTP和POP服务器地址

       1、QQ邮箱(mail.qq.com)
        POP3服务器地址:pop.qq.com(端口:110)
        SMTP服务器地址:smtp.qq.com(端口:25)
        
        2、搜狐邮箱(sohu.com):
        POP3服务器地址:pop3.sohu.com(端口:110)
        SMTP服务器地址:smtp.sohu.com(端口:25)
        
        3、HotMail邮箱(hotmail.com):
        POP3服务器地址:pop.live.com(端口:995)
        SMTP服务器地址:smtp.live.com(端口:587)
        
        4、移动139邮箱:
        POP3服务器地址:POP.139.com(端口:110)
        SMTP服务器地址:SMTP.139.com(端口:25)
        
        5、景安网络邮箱:
        POP3服务器地址:POP.zzidc.com(端口:110)
        SMTP服务器地址:SMTP.zzidc.com(端口:25)
        
        6、新浪邮箱
        smtp.sina.com(端口:25)
        
        7、新浪VIP
        SMTP服务器地址:smtp.vip.sina.com(端口:25)
        
        8、126邮箱
        SMTP服务器地址:smtp.126.com(端口:25)
        
        9、139邮箱
        SMTP服务器地址:smtp.139.com(端口:25)
        
        10、163网易邮箱
        SMTP服务器地址:smtp.163.com(端口:25) 
     

    如果对你有帮助,请点下赞,予人玫瑰手有余香!

    时时仰望天空,理想就会离现实越来越近!

    展开全文
  • 主要介绍了python selenium实现发送带附件邮件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • Python实现SMTP发送邮件(四)-添加附件 [Python]纯文本查看复制代码 ? 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 ...

    Python实现SMTP发送邮件(四)-添加附件

     

    [Python]  纯文本查看  复制代码
    ?
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    import smtplib
    from email.mime.multipart import MIMEMultipart
    from email.mime.text import MIMEText
    from email.header import Header
     
    # 配置邮箱服务器
    smtpserver = "smtp.163.com"
     
    # 用户/密码
    user = "admin@163.com"
    password = "123456"
     
    # 发送者邮箱
    sender = "admin@163.com"
     
    # 接收者邮箱
    receiver = [ "123456@163.com" , "234567@qq.com" ]
     
    # 邮件主题
    subject = "Python-email3"
     
    msg = MIMEMultipart()
    # 多人接收邮件,直接显示下面账号的名字
    msg[ 'From' ] = "admin@163.com"
    msg[ 'To' ] = "123456@163.com"
    msg[ "cc" ] = "234567@qq.com"
    msg[ "Subject" ] = Header(subject, "utf-8" )
    # 添加正文
    msg.attach(MIMEText( '<html><h1>你好!</h1></html>' , "html" , "utf-8" ))
     
    # 添加附件
    sendFile = open ( "./测试报告.html" , 'rb' ).read()
    att = MIMEText(sendFile, "base64" , "utf-8" )
    att.add_header( "Content-Type" , "application/octet-stream" )
    att.add_header( "Content-Disposition" , "attachment" , filename = "测试报告.html" )
    msg.attach(att)
     
    if __name__ = = '__main__' :
         smtp = smtplib.SMTP()
         smtp.connect(smtpserver, 25 )
         smtp.login(user, password)
         smtp.sendmail(sender, receiver, msg.as_string())
         smtp.quit()
    展开全文
  • 主要介绍了python 实现的发送邮件模板,包含Python发送普通邮件、带附件及带图片邮件相关实现技巧,需要的朋友可以参考下
  • 使用python3自带的库实现邮件发送,包括主题、附件等,可直接使用
  • How do i add a document attachment when sending an email with python ?i get the email to send(please ignore: i am looping the email to send every 5 seconds, only for testing purposes, i want it to sen...

    1586010002-jmsa.png

    How do i add a document attachment when sending an email with python ?

    i get the email to send

    (please ignore: i am looping the email to send every 5 seconds, only for testing purposes, i want it to send every 30 min, just have to change 5 to 1800)

    here is my code so far. how do i attach a document from my computer?

    #!/usr/bin/python

    import time

    import smtplib

    while True:

    TO = 'xxxx@gmail.com'

    SUBJECT = 'Python Email'

    TEXT = 'Here is the message'

    gmail_sender = 'xxxx@gmail.com'

    gmail_passwd = 'xxxx'

    server = smtplib.SMTP('smtp.gmail.com',587)

    server.ehlo()

    server.starttls()

    server.ehlo()

    server.login(gmail_sender, gmail_passwd)

    BODY = '\n'.join([

    'To: %s' % TO,

    'From: %s' % gmail_sender,

    'Subject:%s' % SUBJECT,

    '',

    TEXT

    ])

    try:

    server.sendmail(gmail_sender,[TO], BODY)

    print 'email sent'

    except:

    print 'error sending mail'

    time.sleep(5)

    server.quit()

    解决方案

    This is the code that worked for me- to send an email with an attachment in python

    #!/usr/bin/python

    import smtplib,ssl

    from email.mime.multipart import MIMEMultipart

    from email.mime.base import MIMEBase

    from email.mime.text import MIMEText

    from email.utils import formatdate

    from email import encoders

    def send_mail(send_from,send_to,subject,text,files,server,port,username='',password='',isTls=True):

    msg = MIMEMultipart()

    msg['From'] = send_from

    msg['To'] = send_to

    msg['Date'] = formatdate(localtime = True)

    msg['Subject'] = subject

    msg.attach(MIMEText(text))

    part = MIMEBase('application', "octet-stream")

    part.set_payload(open("WorkBook3.xlsx", "rb").read())

    encoders.encode_base64(part)

    part.add_header('Content-Disposition', 'attachment; filename="WorkBook3.xlsx"')

    msg.attach(part)

    #context = ssl.SSLContext(ssl.PROTOCOL_SSLv3)

    #SSL connection only working on Python 3+

    smtp = smtplib.SMTP(server, port)

    if isTls:

    smtp.starttls()

    smtp.login(username,password)

    smtp.sendmail(send_from, send_to, msg.as_string())

    smtp.quit()

    展开全文
  • python发邮件(带附件)

    千次阅读 2019-09-28 17:26:06
    这就需要在邮件添加附件, 或者直接在邮件正文中展示. 可以使用python脚本实现此功能. **未解决: **发送附件时, 不管附件的源格式是什么, 接收到的邮件中的附件文本内容都是UTF-8编码, 但是excel不支持UTF-8格式的...

    摘要

    Linux环境下, 后台任务运行结束后, 往往需要将运行结果传递出去. 这就需要在邮件中添加附件, 或者直接在邮件正文中展示.
    可以使用python脚本实现此功能.
    未解决: 发送附件时, 不管附件的源格式是什么, 接收到的邮件中的附件文本内容都是UTF-8编码, 但是excel不支持UTF-8格式的文本. 这就导致, 附件后缀是.xls.csv时, 预览附件会显示乱码, 也无法用excel直接打开, 只能使用文本阅读器打开.

    代码实现

    代码主要借鉴了: 知乎专栏文章. 但原文没有完整的设置群发, 于是自己做了补充.
    代码很简单, 想要发出漂亮的邮件, 主要还是需要把内容转为html, 这样就可以直接在邮件正文中展示出来.

    # -*- coding:utf-8 -*-
    
    import os
    # 执行任务
    os.system('bash run_command.sh')
    
    import smtplib
    from email.mime.text import MIMEText
    from email.mime.multipart import MIMEMultipart
    
    ##### 设置服务器所需信息 #####
    # 腾讯企业邮箱服务器地址
    mail_host = 'smtp.exmail.qq.com'
    # 用户名(一般用户名也就是邮箱名)
    mail_user = 'abc123@qq.com'
    # 密码(部分邮箱为授权码)
    mail_pass = '123456'
    #邮件接受方邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发
    receivers = ['name1@qq.com, name2@qq.com, name3@qq.com']
    
    ##### 设置email信息 #####
    #添加一个MIMEmultipart类,处理正文及附件
    message = MIMEMultipart()
    message['From'] = formataddr(["data", mail_user])
    message['Subject'] = '测试发送邮件'
    ##### 设置群发 #####
    if len(receivers)>1:
        message['To'] = ','.join(receivers) #群发邮件
    else:
        message['To'] = receivers[0]
    
    
    
    ##### 设置邮件正文信息 #####
    # part1 = MIMEText('这段正文是平平无奇的一段文字' , 'plain', 'utf-8')
    # 推荐使用html格式的正文, 会炫酷很多
    part1 = MIMEText(open('test.html','r').read(),'html','utf-8')
    
    #添加一个文本附件
    part2 = MIMEText(open('everyday.txt','r').read(), 'plain','utf-8')
    #附件设置内容类型,一般设置为二进制流
    part2['Content-Type'] = 'application/octet-stream'
    #设置附件头,添加文件名
    part2["Content-Disposition"] = 'attachment; filename="howmanydays.txt"'
    
    #将内容附加到邮件主体中
    message.attach(part1)
    message.attach(part2)
    
    #登录并发送
    try:
        smtpObj = smtplib.SMTP()
        smtpObj.connect(mail_host,25)
        smtpObj.login(mail_user,mail_pass)
        smtpObj.sendmail(
            mail_user,receivers,message.as_string())
        print('success')
        smtpObj.quit()
    except smtplib.SMTPException as e:
        print('error',e)
    
    # 该方法用于改变文件编码, 可以用于测试
    def transfer_utf8_to_gb2312(file_name):
        f=open(file_name)
        s=f.read()
        f.close()
        u=s.decode("utf-8")
        s=u.encode("gb2312")
        f=open(file_name,"w");
        f.write(s)
    
    
    展开全文
  • Python好用、好玩的库真的超多,今天正好看了smtplib的邮件库,废话不多说,翠花,上酸菜。 前言:先要自行百度一下,邮箱授权码的开启步骤,使用第三方服务登录时候需要使用邮箱授权码。 # -*- coding: utf-8 -...
  • python发邮件详解,smtplib和email模块详解

    万次阅读 多人点赞 2018-09-06 18:20:56
    在介绍具体的实现python发邮件的具体操作之前,我觉得有必要介绍下SMTP,更有助于理解python发邮件的实现原理。SMTP协议属于TCP/IP协议簇,即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它...
  • Python实现邮件附件发送

    千次阅读 2020-07-31 16:18:58
    感觉在项目中有蛮多地方可以用到邮件自动发送,于是去学了一下python怎样自动发送邮件。 0X01 准备 想要发送邮件的话得开通自己邮箱的 SMTP 功能,以QQ邮箱为例,进入上方的设置。 选择账户 打开SMTP服务,然后会...
  •           构造邮件内容(件人、收件人、主题、正文、附件等) (2)email 模块下有 mime 包,mime 包下常用的有三个模块:(text、image、multipart)     ① MIMETex:(纯文本、HTML页面),参数...
  • 自动发送邮件可以将常规化得需求自动化,解放双手做更多有意义的事情
  • python发送邮件(带附件

    千次阅读 2018-01-09 17:48:30
    # 添加附件就是加上一个MIMEBase,从本地读取一个图片: with open( '''D:\\py\\www\\img\\android-icon.png''' , 'rb' ) as f: # 设置附件的MIME和文件名,这里是png类型: mime = MIMEBase( 'image' , '...
  • email_file.add_header('Content-Disposition', 'attachment', filename='temp.html')#这里添加一个标题,Content-Disposition,attachment说明是一个附件,filename说明文件名.mail里有一个get_filename()的方法...
  • python 发送邮件附件

    千次阅读 2018-09-29 16:48:42
    用授权码登录发送邮件附件 需要对邮件进行POP3/SMTP服务设置,例如qq邮箱: 特别提示- ---&gt; 千万不要泄漏自己的授权码  这里的邮箱的域名与端口根据自己的实际邮箱去填写(这是qq邮箱) ...
  • Python自动发送邮件添加附件的源代码,真特定网站,比较具有参考价值
  • 主要为大家详细介绍了python smtplib发送带附件邮件小程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 这是python发送邮件的源码,支持群发和添加邮件, 文章中有免费下载地址,这里是土豪专用下载地址,
  • 添加邮件附件 3。将Excel附件添加到正文中""" to_addr表示群发集,使用形如('abc.163.com,add.163.com,3243@qq.com') html表示要展示在正文中的网页或者表格等。 password字段表示邮箱的验证码,在打开smtp协议...
  • 发送邮件2.1 导入email/smtplib相关模块2.2 email模块2.2.1 邮箱设置2.2.2 添加正文2.2.3 添加图片文件2.2.4 添加doc文件2.2.5 添加pdf文件2.2.6 添加表格文件2.3 smtplib模块3. 定时任务3.1 schedule库3.2 定时...
  • python发送邮件带多个附件代码

    千次阅读 2018-11-19 11:17:24
    python发送邮件带多个附件代码 import smtplib,os from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase from email import encoders # 收...
  • -- coding: utf-8 -- @Time : 2020/12/29 14:01 @Author : Sarah Qiu ...file_path = r"D:\Projects\TestData%s.txt" % i # 获取邮件附件 class send_email(): def outlook(self): olook = win32.Dispatch(
  • 腾讯企业邮箱自动发送邮件时,先在客户端,开启SMTP服务,并且设置独立密码作为STMP登录密码。 ...邮箱绑定–>...自动发邮件,实例讲解 from email.header import Header from email.mime.multipar.
  • python发送带有附件的163邮件

    千次阅读 2018-12-04 18:07:01
    在开发私人公众号,根据开发公众号的初衷,需要实现python脚本下发送带有附件的163邮件,实现Kindle电子书的自动化推送。 参考 # below original code comes from the link:...
  • python发送邮件 python中的smtplib模块是内置的发送邮件模块。 1.前置操作 在使用smtp模块发送邮件之前,需要先开启邮箱的smtp服务 以qq邮箱为例: 设置-账户-SMTP服务,根据提示开通SMTP服务,记录授权码 2.连接...
  • 利用python自动发送带附件邮件

    千次阅读 2018-10-31 23:23:23
    利用python自动发送邮件 说道邮件,必须要了解相关的协议。 简单地说,SMTP管‘’,POP3/IMAP管‘收’。 POP3协议允许电子邮件客户端下载服务器上的邮件,但是在客户端的操作(如移动邮件、标记已读等),不会...
  • filename="%s"' % 'douyin_user_shield_{}.txt'.format(time.strftime('%Y-%m-%d', time.localtime(time.time()))) msg.attach(att1) except Exception as e: print("添加附件失败,错误原因:{}".format(repr(e))) ...
  • from smtplib import SMTP_SSL #是用来加密邮件内容的防止中间被人截获 from email.mime.text import MIMEText #用来构造邮件的正文 from email.mime.multipart import MIMEMultipart #这是邮件的主体 from email....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,133
精华内容 2,053
关键字:

python发邮件添加附件

python 订阅