【发布时间】:2016-03-04 07:03:21
【问题描述】:
如何通过 GMAIL API 使用密件抄送发送电子邮件?我向 TO 或 CC 发送电子邮件,但 BCC 不起作用。我使用Base64.urlsafe_encode64(email.to_s),这段代码创建了没有密件抄送的字符串。我的工作代码示例:
email = Mail.new
email.date = Time.now
email.subject = subject
email.to = email_array_to_email_to(to)
email.cc = email_array_to_email_to(cc)
email.bcc = email_array_to_email_to(bcc)
email.reply_to = email_array_to_email_to(reply_to)
email.html_part do
body message
end
request = {
api_method: @google_api.users.messages.to_h['gmail.users.messages.send'],
parameters: { userId: 'me' },
body_object: {
raw: Base64.urlsafe_encode64(email.to_s)
},
}
我是否必须再次调用 GMAIL API 并使用线程 ID 和 BCC 作为 TO 发送此电子邮件? 我用google-api-client0.7.1
编辑: 邮件对象:
#<Mail::Message:70336725981360,
Multipart: true,
Headers: <Date: Tue,
01 Dec 2015 14:09:08 +0100>,
<Reply-To: >,
<To: ["quatermain32 <my_email@gmail.com>"]>,
<Cc: ["quatermain32 <my_email@gmail.com>"]>,
<Bcc: ["my_email@gmail.com"]>,
<Subject: Test subject>,
<Content-Type: multipart/mixed>>
带有to_s的邮件对象:
"Date: Tue, 01 Dec 2015 14:09:08 +0100\r\n
To: my_email <my_email@gmail.com>\r\n
Cc: my_email <my_email@gmail.com>\r\n
Message-ID: <565d9c6e3cf0b_058b7@Olivers-MacBook-Pro.local.mail>\r\n
Subject: Test subject\r\n
Mime-Version: 1.0\r\n
Content-Type: multipart/mixed;\r\n
boundary=\"--==_mimepart_565d9bf468e77_cb0d35e200577a\";\r\n
charset=UTF-8\r\n
Content-Transfer-Encoding: 7bit\r\n
\r\n
\r\n
----==_mimepart_565d9bf468e77_cb0d3ff88645e200577a\r\n
Content-Type: text/html;\r\n
charset=UTF-8\r\n
Content-Transfer-Encoding: 7bit\r\n
\r\n
<p>Test content</p>\r\n
----==_mimepart_565d9bf468e77_cb0d3ff88645e200577a--\r\n
"
【问题讨论】:
-
你能告诉我们
email.to_s在编码之前的样子吗? -
@Tholle 是的,我将其添加到问题中。没事吧?
-
您在
Mail object中的<Bcc: ["my_email@gmail.com"]>似乎是错误的。请改用<Bcc: ["<my_email@gmail.com>"]>。 -
一样
=> #<Mail::Message:70354473411500, Multipart: true, Headers: <Date: Tue, 01 Dec 2015 16:29:10 +0100>, <Reply-To: >, <To: ["Kriska Quatermain <kriska@quatermain.org>"]>, <Cc: >, <Bcc: ["oliver@techvoxinc.com <oliver@techvoxinc.com>"]>, <Subject: test bad bcc 2>, <Content-Type: multipart/mixed>> [2] pry(#<GoogleApi::Gmail::Message>)> email.bcc => ["oliver@techvoxinc.com"] [3] pry(#<GoogleApi::Gmail::Message>)> email.to => ["kriska@quatermain.org"] -
不。是一样的。我读它是因为电子邮件协议不允许在原始电子邮件中显示密件抄送,这是原始电子邮件。所以我可以向google api发出第二个请求,但我认为这是最后一个选择。谢谢
标签: ruby-on-rails ruby gmail gmail-api google-api-client