首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从gmail帐户获取附件的Python脚本

获取Gmail帐户附件的Python脚本可以使用Google的Gmail API来实现。以下是一个示例脚本:

代码语言:txt
复制
import os
import base64
from googleapiclient.discovery import build
from google.oauth2.credentials import Credentials

# 设置Google Cloud Platform项目的客户端ID和密钥
CLIENT_ID = 'YOUR_CLIENT_ID'
CLIENT_SECRET = 'YOUR_CLIENT_SECRET'

# 调用Gmail API需要授权的范围
SCOPES = ['https://www.googleapis.com/auth/gmail.readonly']

# 用户授权,生成token.json文件保存访问令牌
def authorize():
    creds = None
    if os.path.exists('token.json'):
        creds = Credentials.from_authorized_user_file('token.json', SCOPES)
    
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file(
                'credentials.json', SCOPES)
            creds = flow.run_local_server(port=0)
        
        with open('token.json', 'w') as token:
            token.write(creds.to_json())
    
    return creds

# 获取附件
def get_attachments():
    creds = authorize()
    service = build('gmail', 'v1', credentials=creds)

    # 获取最新的邮件
    response = service.users().messages().list(userId='me', maxResults=1).execute()
    message_id = response['messages'][0]['id']
    
    # 获取邮件详情
    message = service.users().messages().get(userId='me', id=message_id).execute()

    for part in message['payload']['parts']:
        if part['filename']:
            # 获取附件数据
            attachment = service.users().messages().attachments().get(
                userId='me', messageId=message_id, id=part['body']['attachmentId']
            ).execute()
            
            # 将附件数据保存到本地文件
            file_data = base64.urlsafe_b64decode(attachment['data'])
            file_path = os.path.join('/path/to/save/attachment', part['filename'])
            with open(file_path, 'wb') as f:
                f.write(file_data)

if __name__ == '__main__':
    get_attachments()

这个脚本使用了Google的Gmail API,首先需要在Google Cloud Platform创建一个项目并获取客户端ID和密钥。在脚本中的CLIENT_IDCLIENT_SECRET变量中填入对应的值。

脚本中的SCOPES变量定义了授权的范围,这里使用了Gmail的只读权限。

authorize()函数用于进行用户授权,生成访问令牌并保存到token.json文件中,以便下次使用。

get_attachments()函数用于获取最新的邮件,并遍历邮件中的附件部分。通过Gmail API的users().messages().attachments().get()方法可以获取附件的数据,然后将数据保存到本地文件。

在使用脚本之前,需要确保已安装google-authgoogle-api-python-client这两个库。

腾讯云相关产品中,腾讯云提供了邮件推送服务(https://cloud.tencent.com/product/sms),可以结合Gmail API实现更丰富的邮件功能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python 自动化指南(繁琐工作自动化)第二版:十八、发送电子邮件和短信

将生成一个token.json文件,让您的 Python 脚本可以访问您输入的 Gmail 帐户。浏览器只有在找不到现有的token.json文件时才会打开登录页面。...有了credentials.json和token.json,你的 Python 脚本可以从你的 Gmail 账户发送和阅读电子邮件,而不需要你在源代码中包含 Gmail 密码。...hl=en查看搜索运营商的完整列表。 从 Gmail 帐户下载附件 GmailMessage对象有一个 attachments 属性,它是消息附件的文件名列表。...这些措施防止 Python 脚本使用smtplib和imapclient模块登录电子邮件帐户。然而,其中许多服务都有 API 和特定的 Python 模块,允许脚本访问它们。...EZGmail 模块充当 Gmail API 的方便包装器,让您的 Python 脚本访问您的 Gmail 帐户。

11.3K40
  • 【python小脚本】从数据库获取文件路径通过scp下载本地

    写在前面 ---- 我的需求 需要在mysql数据库中查到相关文件的在服务器的路径,然后通过scp来下载相关文件,之前是手动操作,我现在要写成一个脚本 我需要解决的问题 如何使用python连接mysql...我是怎么做的 使用 pymysql模块连接mysql获取路径 使用 paramiko模块执行scp命令 通过使用PyInstaller打包为一个exe,可以直接给运维人员使用 何谓喜欢一个人,遇上她之前不知情为何物...,错过之后,便更不知了 ——烽火戏诸侯《雪中悍刀行》 ---- 编写脚本的准备 pymysql pymysql是一个基于python的 MySQL 客户端库,官网:https://pymysql.readthedocs.io...56 @Author : Li Ruilong @Version : 1.0 @Contact : 1224965096@qq.com @Desc : 一个从mysql数据库获取文件路径...,通过scp远程下载文件到本地的脚本 pip install pymysql pip install paramiko ''' # here put the import

    2.2K30

    python 获取脚本所在目录的正确方法

    如果是要获得当前执行的脚本的所在目录位置,那么需要使用sys模块的sys.path[0]变量或者sys.argv[0]来获得。...实际上sys.path是Python会去寻找模块的搜索路径列表,sys.path[0]和sys.argv[0]是一回事因为Python会自动把sys.argv[0]加入sys.path。...更特别地,如果你用py2exe模块把Python脚本编译为可执行文件,那么sys.path[0]的输出还会变化: 如果把依赖库用默认的方式打包为zip文件,那么sys.path[0]会输出C:\test...正确的方法 但以上这些其实都不是脚本文件所在目录的位置。...如果我们在 sub_path.py里面使用sys.path[0],那么其实得到的是getpath.py所在的目录路径C:\test,因为Python虚拟机是从getpath.py开始执行的。

    9K40

    python自动化之电子邮件

    本文我会使用gmail 邮箱作为邮箱测试,lzcom321@gmail.com 是我的私人邮箱,大家也可以对我发送,以帮助大家的邮箱自动化测试,关注我,打造不一样的公众号 将电子邮件发送给适当的个人,首先要转换为...脚本位于同一目录中 这只是一个基本的概述。...在我们深入研究代码之前,你需要创建一个刻录机电子邮件帐户,以便可以在自己的电子邮件(而不是朋友的电子邮件)上测试该电子邮件。...作为个人喜好,我喜欢将通常在脚本中硬编码的内容设置为一个变量,以便在需要时更易于编辑。...往期分享 Python—关于Pandas的缺失值问题(国内唯一) 用Python进行美丽而轻松的绘图— Pandas + Bokeh

    1.3K30

    Python基础教程(二十):SMTP发送邮件

    引言 Python的smtplib库提供了强大的功能,使得我们能够从脚本中直接发送电子邮件,这对于自动化工作流程、错误报告或是定期通知等场景极为有用。...本文将详细介绍如何使用Python的smtplib库发送电子邮件,包括设置SMTP服务器、构造邮件内容、发送邮件等步骤,并通过具体案例加深理解。...二、设置SMTP服务器 在发送邮件之前,我们需要配置SMTP服务器的详细信息,包括服务器地址、端口号、登录用户名和密码。这些信息通常由你的邮件提供商(如Gmail、Outlook等)提供。...msg.attach(attach) 步骤4:发送邮件 # 发送邮件 server.send_message(msg) # 关闭SMTP会话 server.quit() 四、完整案例 让我们将上述步骤整合成一个完整的脚本...频率限制: 邮件提供商可能对发送邮件的数量有限制,频繁发送可能会导致账户被暂时封锁。 通过本文的学习,你应该能够使用Python的smtplib库发送带有文本和附件的电子邮件了。

    53710

    一种极为高效的钓鱼技术,骗取Gmail用户账户

    也可能是一封包含了图片附件的邮件,而这张图片可能是你认识的某个熟人的照片。 当你点击图片准备预览时,它会打开一个新的标签页。此时,Gmail 会提示你重新登录。...Hacker News 的评论者,详细地描述了他们在无意点击该钓鱼页面后,所发生的一切: “攻击者在获取登录凭据后,会立即登录你的帐户。并冒用你的名义,向你联系人列表中的好友,群发钓鱼邮件。...例如,他们进入一个学生的帐户,截取一张运动队练习时间表,并以附件和对应主题的形式,通过电子邮件发送给运动队的其他成员。“ 通常,在成功获取到你的登录凭据后,攻击者都会在很短的时间内登录到你的账户。...然而,这种技术不仅限于钓取 Gmail 账户信息,它还可以用于从许多其他平台窃取凭证,在基本技术实现上,它的变化非常多样化。...从我红色箭头指向的地方开始,我们可以看到有一段非常长的文本块。这实际上是一个在新标签页中打开的文件,用于创建一个完整功能的假 Gmail 登录页面,并接收用户的输入内容发送给攻击者。

    1.8K100

    从 SAR 报告中获取平均 CPU 利用率的 Bash 脚本

    大多数 Linux 管理员使用 SAR 报告监控系统性能,因为它会收集一周的性能数据。但是,你可以通过更改 /etc/sysconfig/sysstat 文件轻松地将其延长到四周。...在本文中,我们添加了三个 bash 脚本,它们可以帮助你在一个地方轻松查看每个数据文件的平均值。 这些脚本简单明了。出于测试目的,我们仅包括两个性能指标,即 CPU 和内存。...你可以修改脚本中的其他性能指标以满足你的需求。 从 SAR 报告中获取平均 CPU 利用率的 Bash 脚本 该 bash 脚本从每个数据文件中收集 CPU 平均值并将其显示在一个页面上。...done echo "+----------------------------------------------------------------------------------+" 运行脚本后...2:从 SAR 报告中获取平均内存利用率的 Bash 脚本

    1.6K10

    Google Earth Engine(GEE)—有JS和python为什么GEE还要使用rgee?

    认识地球引擎 用户必须考虑到地球引擎 API 和高级地球引擎功能是实验性的,可能会发生变化。访问受到限制,需要通过表单请求访问。查看地球引擎官网获取更多信息。 5....基于Tyler Erickson 演示的简短比较。 代码编辑器 rgee 易于上手 易于在脚本之间共享代码。 分享脚本很简单 更轻松地过渡到 Web 应用程序 ( Shiny )。...组成该组的依赖项是: 已激活 Earth Engine 的 Google 帐户 Python >= v3.5 EarthEngine Python API(Python 包) 地球引擎账号的激活因用户而异...另一方面,凭证依赖项 仅用于将数据从 Google Drive 和 Google Cloud Storage 移动到您的本地环境。这些依赖项不是强制性的。...= 'csaybar@gmail.com', drive = TRUE, gcs = TRUE) 如果 Google 帐户已通过验证并授予权限,您将被定向到身份验证令牌。

    23310

    从0开始的Python学习013编写一个Python脚本

    通过之前的学习我们已经了解了Python的很多基础运用了,现在我们尝试着做一个有使用价值的小脚本。 问题 ---- 需求: 我想要一个可以给我备份重要文件的程序。...根据命令的输出,我们打印对应的消息,显示备份是否创建成功。 版本二 ---- 第一个脚本已经可以工作了,然而我们还可以对他进行优化,使它更强大。...\\' #3.使用日期创建一个文件路径 today = target_dir + time.strftime('%Y%m%d') now = time.strftime('%H%M%S') #4.从用户处获取注释以创建...注意我们把注释中的空格替换成下划线——这是因为处理这样的文件名要容易得多。  进一步优化 ---- 另一个可能的改进是使文件和目录能够通过命令行直接传递给脚本。...我们可以通过sys.argv列表来获取它们,然后我们可以使用list类提供的extend方法把它们加到source列表中去。 我还希望有的一个优化是使用tar命令替代zip命令。

    82220

    【Python】如何使用 Python 自动发送每日电子邮件报告

    所需库和工具 首先,我们需要一些 Python 库来实现这个功能: smtplib 和 email:这是 Python 内置的库,用于处理电子邮件的发送。 schedule:用于安排每天的任务。...编写脚本 下面是一个完整的 Python 脚本,它将在每天早上8点发送一封电子邮件报告: import smtplib from email.mime.multipart import MIMEMultipart...设置邮箱安全:如果使用 Gmail,你可能需要启用“低安全性应用访问”或生成应用专用密码。具体步骤可以在 Gmail 的帮助中心找到。...例如,从数据库中提取数据、读取文件内容、或调用其他API来生成报告。 结语 通过以上步骤,你可以轻松地使用 Python 脚本实现每日自动发送电子邮件报告的功能。...这不仅可以节省时间,还能确保你不会忘记发送重要的报告。如果你有更多的需求,可以进一步扩展脚本,比如添加附件、发送HTML格式的邮件等。希望这个教程对你有所帮助,祝你在自动化的道路上越走越远!

    20810

    python 从subprocess运行的子进程中实时获取输出

    起因是这样的,c++程序开发后 功能号和指令,校验需要人工去看对照二进制代码,量大还费力, 于是打算利用python 去调用 c++程序去校验指令, 首先要做的就是用python 获取c++程序的...printf() 或cout 的输出; 环境linux python 3.8.x 以下代码实现,获取子程序输出 command='....linux shell指令,如果要用shell 指令如ls 要将false 变成true, 通过指定stderr=subprocess.STDOUT,将子程序的标准错误输出重定向到了标准输出,以使我们可以直接从标准输出中同时获取标准输出和标准错误的信息...p.poll() 返回子进程的返回值,如果为None 表示 c++子进程还未结束. p.stdout.readline() 从 c++的标准输出里获取一行....参考文章1 python中的subprocess.Popen()使用 参考文章 2 python 从subprocess运行的子进程中实时获取输出

    10.5K10

    Python—蜕变的必经之路(从脚本到应用程序)

    这个周总算度过去了,这一个周的时间都在做ATM的一个作业,这个题目是写一个应用程序,而不是写一个简单的脚本代码。...└── settings.py │ ├── core #主要程序逻辑都 在这个目录 里 │ │ ├── __init__.py │ │ ├── accounts.py #用于从文件里加载和存储账户数据.../usr/bin/env python3.6 # -*- coding: utf-8 -*- #__author__: Ed Frey #date: 2018/8/14 import os import...五颜六色的,看起来还是挺直观的有木有 再追加它2个亿,再次走向人生巅峰 最后进入这期的重点,搞这么复杂的逻辑框架,方便的是后期的维护、拓展。...总之,要增删改什么功能,直接定位到对应的模块去修改一定要清晰明了。如果一个程序代码揉成一团,修改某个功能,很有可能引起整个程序崩溃。 这,就是脚本跟应用程序的不同之处。

    1.3K30
    领券