Car*_*ela 4 ruby gmail google-api google-api-ruby-client gmail-api
有没有人有一个简单的例子,说明如何使用v0.9 API从头开始发送电子邮件.
只想要一个发送以下内容的例子:
m = Mail.new(
to: "test1@test.com",
from: "test2@test.com",
subject: "Test Subject",
body:"Test Body")
Run Code Online (Sandbox Code Playgroud)
现在要创建需要发送的消息对象,我们可以使用:
msg = Base64.urlsafe_encode64 m.to_s
Run Code Online (Sandbox Code Playgroud)
然后尝试发送(其中message_object = msg):
client = Google::Apis::GmailV1::GmailService.new #Appropriately authorised
client.send_user_message("me", message_object)
Run Code Online (Sandbox Code Playgroud)
客户端需要RFC822兼容的编码字符串,以上应该是.
我试过了:
message_object = msg
=> Google::Apis::ClientError: invalidArgument: 'raw' RFC822 payload message string or uploading message via /upload/* URL required
message_object = raw:msg
=>ArgumentError: unknown keyword: raw
message_object = {raw:msg}
=>ArgumentError: unknown keyword: raw
message_object = Google::Apis::GmailV1::Message.new(raw:msg)
=> #<Google::Apis::GmailV1::Message:0x007f9158e5b4b0 @id="15800cd7178d69a4", @thread_id="15800cd7178d69a4">
#But then I get Bounce <nobody@gmail.com> - An error occurred. Your message was not sent.
Run Code Online (Sandbox Code Playgroud)
即他们都没有工作......
通过Gmail的API接口测试仪发送基本encded字符串(MSG以上),在这里工作.
我显然在这里遗漏了一些明显的东西,关于如何构建使其通过API工作所需的对象.
好.所以答案是......感谢你的帮助Holger ......那文档是错的.它要求你编码到base64.不需要base64编码(它由api客户端在内部完成).
正确的发送方式是
msg = m.encoded
# or m.to_s
# this doesn't base64 encode. It just turns the Mail::Message object into an appropriate string.
message_object = Google::Apis::GmailV1::Message.new(raw:m.to_s)
client.send_user_message("me", message_object)
Run Code Online (Sandbox Code Playgroud)
希望能够拯救别人免受过度热情的mod的光顾.
| 归档时间: |
|
| 查看次数: |
886 次 |
| 最近记录: |