- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在 VBA 中使用 CDO 访问 gmail 帐户中的收件箱。
我已经设法发送了一封邮件,但不知道如何将收件箱消息提取到 Excel 表中。
如果可能的话,我也希望能够识别每条消息的标签。
最佳答案
虽然问题特别要求 CDO,但来自 this similar SO question看起来这不可能直接使用 CDO。
作为获取收件箱邮件消息的另一种方法,谷歌最近发布了一个可以与 Excel 一起使用的 Gmail API。以下是使用 VBA-Web 的示例:
' Setup client and authenticator (cached between requests)
Private pGmailClient As WebClient
Private Property Get GmailClient() As WebClient
If pGmailClient Is Nothing Then
' Create client with base url that is appended to all requests
Set pGmailClient = New WebClient
pGmailClient.BaseUrl = "https://www.googleapis.com/gmail/v1/"
' Use the pre-made GoogleAuthenticator found in authenticators/ folder
' - Automatically uses Google's OAuth approach including login screen
' - Get API client id and secret from https://console.developers.google.com/
' - https://github.com/timhall/Excel-REST/wiki/Google-APIs for more info
Dim Auth As New GoogleAuthenticator
Auth.Setup "Your client id", "Your client secret"
Auth.AddScope "https://www.googleapis.com/auth/gmail.readonly"
Auth.Login
Set pGmailClient.Authenticator = Auth
End If
Set GmailClient = pGmailClient
End Property
' Load messages for inbox
Function LoadInbox() As Collection
Set LoadInbox = New Collection
' Create inbox request with userId and querystring for inbox label
Dim Request As New WebRequest
Request.Resource = "users/{userId}/messages"
Request.AddUrlSegment "userId", "me"
Request.AddQuerystringParam "q", "label:inbox"
Dim Response As WebResponse
Set Response = GmailClient.Execute(Request)
If Response.StatusCode = WebStatusCode.Ok Then
Dim MessageInfo As Dictionary
Dim Message As Dictionary
For Each MessageInfo In Response.Data("messages")
' Load full messages for each id
Set Message = LoadMessage(MessageInfo("id"))
If Not Message Is Nothing Then
LoadInbox.Add Message
End If
Next MessageInfo
End If
End Function
' Load message details
Function LoadMessage(MessageId As String) As Dictionary
Dim Request As New WebRequest
Request.Resource = "users/{userId}/messages/{messageId}"
Request.AddUrlSegment "userId", "me"
Request.AddUrlSegment "messageId", MessageId
Dim Response As WebResponse
Set Response = GmailClient.Execute(Request)
If Response.StatusCode = WebStatusCode.Ok Then
Set LoadMessage = New Dictionary
' Pull out relevant parts of message (from, to, and subject from headers)
LoadMessage.Add "snippet", Response.Data("snippet")
Dim Header As Dictionary
For Each Header In Response.Data("payload")("headers")
Select Case Header("name")
Case "From"
LoadMessage.Add "from", Header("value")
Case "To"
LoadMessage.Add "to", Header("value")
Case "Subject"
LoadMessage.Add "subject", Header("value")
End Select
Next Header
End If
End Function
Sub Test()
Dim Message As Dictionary
For Each Message In LoadInbox
Debug.Print "From: " & Message("from") & ", Subject: " & Message("subject")
Debug.Print Message("snippet") & vbNewLine
Next Message
End Sub
关于excel - 在 vba excel 中通过 CDO 获取 gmail 收件箱邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13825223/
我们编写了一个 Delphi 程序,用 CDO 发送一些信息。 在我的 Win7 机器(匈牙利语)中,重音工作正常。 因此,如果我发送一封带有“ÁÉÍÓÖŐÚÜŰ”的邮件,我就会收到这种格式的邮件。我
我有几个变量定义如下: dimensions: t = UNLIMITED ; // (1 currently) y = 3963 ; x = 5762
我们目前正在更改我们的邮件递送系统以单独使用 UTF-8 . 发件人姓名似乎有问题,当电子邮件包含非 ASCII 字符(希伯来语)时,主题和正文可以正常显示,但发件人姓名在我的 gmail 帐户中显示
我有每日时间分辨率的气候数据,并希望按月和按年计算有降水(例如,大于 1 毫米/天)的天数。 我试过 eca_pd,1 和 eca_rr1 ,但这些命令返回所有年份的雨天总数。 例如,cdo eca_
我下载了一个包含 4-5 个变量的 netcdf 文件,但它只有 2 个维度(纬度和经度)。时间不够了,这不允许我合并时间步或做任何有用的事情。 有没有办法通过使用 CDO 来解决这个问题? 有 10
正在将 EMF 用于 RCP 应用程序。该模型非常复杂,我有很大的 xml 文件,因此加载模型需要更多时间。使用 Eclipse CDO 模型存储库和 EMF 将模型存储在数据库中从而减少加载时间是否
我需要实时时区大师的帮助! 我的目标是编写一个工具(在 .Net 中)来显示来自具有选定时区偏移量的 SharePoint 数据库的日期时间值。我发现 SharePoint 在其数据库中将日期时间值保
我正在尝试计算具有特定经度/纬度的选定区域的平均 SPI 值。我制作了以下区域,我想在其中计算平均值。 ds_mlw1 = ds.sel(lat=slice(-16.74833, -16.75613)
我已经创建了一个应用程序(编译了任何 cpu),它使用一个 lib 也编译为任何 cpu(库引用 interop.CDO),我有这个错误消息: 无法加载文件或程序集“Interop.CDO,Versi
我想从 C# winform 应用程序发送电子邮件,我的互联网连接使用代理。 这是我目前所做的 WebProxy proxy = WebProxy.GetDefaultProxy();
我有一个需要发送电子邮件的 ASP.NET 应用程序。起初我使用 System.Net.Mail,一切都很好。我的应用程序可以发送 html 消息,人们可以很好地接收它们。 但后来我们添加了一个新的网
于是研究了一会。写出个粗糙的DEMO。 exe2hex.vbs //xiaolu写的exe2vbs ,我修改成直接拖放,转成十六进制 ================================
CDO 似乎对我来说工作得很好,直到我遇到这个。我有一个从 2101 年到 2228 年的每日数据的 netcdf,我想获得一个只有从 2101 年到 2227 年的文件,所以我运行: cdo sel
我正在尝试使用 Microsoft Office Excel 2007 VBA 代码发送邮件,但出现错误: Run-time error '-2147220973 (80040213)': Autom
我有一个 ERA5 nc 文件,记录了从 3 月到 10 月的每小时降水量,时间跨度为 30 年。数据是从本地时间午夜到中午(所以 UTC 时区的凌晨 4 点到下午 4 点)。我需要找到每个像素直到中
我知道有几个线程与此相关,但没有一个能回答我的问题。 只是代码 (VBScript): With cdomsg.Configuration.Fields .Item("http://schemas
我正在处理 netcdf 文件,并且有一些我一直在用 CDO 和 R 进行的分析。我想知道是否有可能在同一个脚本中直接从 R“调用”CDO .我不确定如何(我一直在尝试使用 System() 来调用命
我们在经典 ASP 中使用 CDO 对象在电子邮件正文中获得随机感叹号 (!) 标记。 我们在 Outlook 中没有得到这个感叹号。问题只发生在 Lotus Notes 客户端。我们使用 IIS S
我编写了使用 CDO.Message 的例程。它很久以前就开始工作了。 但是现在,在某些站点中,他们安装了证书,然后之前的工作版本在所有调用中都出错了。 我使用简单的变体来保存 CDO.Message
当我尝试在 VBScript 中将 MHTML 文件作为附件添加到电子邮件中时,ContentMediaType 被错误地设置为 “message/rfc822” ( RFC 822 )。据我了解,根
我是一名优秀的程序员,十分优秀!