ruby - 使用 Ruby 获取电子邮件附件 ID
问题描述
我正在尝试遍历一组电子邮件,并获取他们的电子邮件附件 ID。不过,我似乎无法深入了解 ID。
我已经做到了这一点:
class AccessEmailController < ApplicationController
def access_email
client = Signet::OAuth2::Client.new(access_token: session[:access_token])
service = Google::Apis::GmailV1::GmailService.new
service.authorization = client
user_id = 'me'
email_list = service.list_user_messages('me', q: "subject:(CCC Data)")
message = 'No Emails Found' if email_list.messages.empty?
email_list.messages.each do |message|
message_id = message.id
@subject = service.get_user_message(user_id, message_id).payload.parts
end
end
结尾
而且,如果我在视图中显示@subject,我会得到:
[#<Google::Apis::GmailV1::MessagePart:0x00007f8630c397a0 @headers=[#<Google::Apis::GmailV1::MessagePartHeader:0x00007f8630c344a8 @name="Content-Type", @value="multipart/alternative; boundary=\"00000000000020396d05b7ceda38\"">], @mime_type="multipart/alternative", @body=#<Google::Apis::GmailV1::MessagePartBody:0x00007f8630c39250 @size=0>, @filename="", @part_id="0", @parts=[#<Google::Apis::GmailV1::MessagePart:0x00007f8630c30588 @headers=[#<Google::Apis::GmailV1::MessagePartHeader:0x00007f8630c2d2e8 @name="Content-Type", @value="text/plain; charset=\"UTF-8\"">], @mime_type="text/plain", @body=#<Google::Apis::GmailV1::MessagePartBody:0x00007f8630c2ed50 @size=91, @data="-- \r\nKim Floyd (Davis)\r\n\r\nWeb Developer, EvenVision\r\n707.845.3073\r\nk.davis@evenvision.com\r\n">, @filename="", @part_id="0.0">, #<Google::Apis::GmailV1::MessagePart:0x00007f8630c2be98 @headers=[#<Google::Apis::GmailV1::MessagePartHeader:0x00007f8630c2a840 @name="Content-Type", @value="text/html; charset=\"UTF-8\"">, #<Google::Apis::GmailV1::MessagePartHeader:0x00007f8630c29ff8 @name="Content-Transfer-Encoding", @value="quoted-printable">], @mime_type="text/html", @body=#<Google::Apis::GmailV1::MessagePartBody:0x00007f8630c2b858 @size=344, @data="<div dir=\"ltr\"><br clear=\"all\"><div><br></div>-- <br><div dir=\"ltr\" class=\"gmail_signature\" data-smartmail=\"gmail_signature\"><div dir=\"ltr\">Kim Floyd (Davis)<div><br><div>Web Developer, EvenVision</div><div>707.845.3073</div><div><a href=\"mailto:k.davis@evenvision.com\" target=\"_blank\">k.davis@evenvision.com</a></div></div></div></div></div>\r\n">, @filename="", @part_id="0.1">]>, #<Google::Apis::GmailV1::MessagePart:0x00007f8630c28f68 @headers=[#<Google::Apis::GmailV1::MessagePartHeader:0x00007f8630c27b90 @name="Content-Type", @value="image/png; name=\"image.png\"">, #<Google::Apis::GmailV1::MessagePartHeader:0x00007f8630c26fd8 @name="Content-Disposition", @value="attachment; filename=\"image.png\"">, #<Google::Apis::GmailV1::MessagePartHeader:0x00007f8630c266f0 @name="Content-Transfer-Encoding", @value="base64">, #<Google::Apis::GmailV1::MessagePartHeader:0x00007f8630c25d40 @name="X-Attachment-Id", @value="f_kjdr80n00">, #<Google::Apis::GmailV1::MessagePartHeader:0x00007f8630c25250 @name="Content-ID", @value="<f_kjdr80n00>">], @mime_type="image/png", @body=#<Google::Apis::GmailV1::MessagePartBody:0x00007f8630c28a90 @size=459005, @attachment_id="ANGjdJ9LKnYW-GChtR3_oaBWnwi0DjHG4I8ZeDuMskuJ6htxLGmwNaB-v3x0k_cP94ybJFg0HLPO0AkSLWb-zXvF25qaGyhA20R89kwPSC9j3ttVEsBhByEAxrPkJQVwKuf3H8EblPhNNfPA7iYEJ7zT56do8-_UbMbDuXo-fVU445mtPHSYHWOEX_4z8aUyNTU3MCzNY8EHz90mJRpJnseelK3whaZdcJ2E98XmxQ">, @filename="image.png", @part_id="1">]
其中,确实包含我正在寻找的附件。但是,我怎样才能深入了解该附件并获得它的 ID?
解决方案
email_list.messages.each do |msg|
message = gmail.get_user_message(user_id, msg.id)
parts = message.payload.parts || []
parts.each do |part|
p part.body.attachment_id
end
end
推荐阅读
- sql - 更改增量 ID 以考虑已删除行的最佳方法
- python - Python在放置图像FPDF中获取KeyError
- java - Android Studio 无法识别字符串或接受它,每次都会在 gradle build 中出错
- python - 如何以 Json 格式 Azure 给定 VM 的重要属性值?
- process - 如何找出串行通信停止的原因?
- python - 当我运行此代码时,会出现一个没有按钮的空白 Tkinter 窗口
- ios - Swift 初始化程序调用 Dispatch Queue 异步
- angular - 如何在@ngrx/data 中扩展自定义实体集合缩减器
- python - 将 Python 变量作为参数传递给 shell 脚本
- kubernetes - Tail 停止在 pod sidecar 中拖尾日志