首页
学习
活动
专区
工具
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.2K40

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开始执行

8.7K40

python自动化之电子邮件

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

1.3K30

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

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

24910

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

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

1.7K100

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 帐户已通过验证并授予权限,您将被定向到身份验证令牌。

17210

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命令。

80920

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

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

14310

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 pythonsubprocess.Popen()使用 参考文章 2 python subprocess运行子进程中实时获取输出

10.2K10

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

如何在Ubuntu 14.04上安装Mailpile

像Mailpile这样Webmail客户端是确保您可以任何地方访问电子邮件,而无需配置标准电子邮件客户端。Mailpile只是一个邮件客户端,这意味着它只管理现有的邮件帐户。...它不会在会话之间保存您信息。(也就是说,每次重新启动Mailpile服务时,您都必须重新输入帐户详细信息。) 它也缺乏一种简单服务运行方式。默认情况下,它仅在SSH会话中作为交互式脚本运行。...由于Mailpile处于测试阶段,因此尚未进行适当守护。它还需要一个交互式命令行,因此您不能直接运行Python脚本。...这个Upstart脚本是一种通过Screen运行Python应用程序作为服务hacky方式: sudo nano /etc/init/mailpile.conf 文件内容如下: description...Gmail阻止Mailpile使用您Gmail帐户凭据,因此您无法将Gmail帐户添加到Mailpile。

1.9K00
领券