使用 ruby gmail api v0.9 发送电子邮件
Sending an email with ruby gmail api v0.9
有没有人有关于如何使用 v0.9 从头开始发送电子邮件的简单示例 API。
只是想要一个发送以下内容的示例:
m = Mail.new(
to: "test1@test.com",
from: "test2@test.com",
subject: "Test Subject",
body:"Test Body")
现在要创建需要发送的消息对象,我们可以使用:
msg = Base64.urlsafe_encode64 m.to_s
然后尝试发送(其中 message_object = msg):
client = Google::Apis::GmailV1::GmailService.new #Appropriately authorised
client.send_user_message("me", message_object)
客户想要一个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.
即None 他们工作...
通过 Gmail API 界面测试器 here 发送基本编码字符串(上面的消息)有效。
我显然在这里遗漏了一些明显的东西,即如何构建使其通过 API.
所需的对象。
好的。所以答案......谢谢你的帮助霍尔格......
是文档有误吗?它要求您编码为 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)
希望这样可以避免其他人被过分热心的人光顾mod。
Carpela 的答案很好,但对于 message_object,它在 Message.new 中缺少 "raw"。正确的代码应该如下:
message_object = Google::Apis::GmailV1::Message.new(raw: m.encoded) # or m.to_s
client.send_user_message('me', message_object)
有没有人有关于如何使用 v0.9 从头开始发送电子邮件的简单示例 API。
只是想要一个发送以下内容的示例:
m = Mail.new(
to: "test1@test.com",
from: "test2@test.com",
subject: "Test Subject",
body:"Test Body")
现在要创建需要发送的消息对象,我们可以使用:
msg = Base64.urlsafe_encode64 m.to_s
然后尝试发送(其中 message_object = msg):
client = Google::Apis::GmailV1::GmailService.new #Appropriately authorised
client.send_user_message("me", message_object)
客户想要一个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.
即None 他们工作...
通过 Gmail API 界面测试器 here 发送基本编码字符串(上面的消息)有效。
我显然在这里遗漏了一些明显的东西,即如何构建使其通过 API.
所需的对象。好的。所以答案......谢谢你的帮助霍尔格...... 是文档有误吗?它要求您编码为 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)
希望这样可以避免其他人被过分热心的人光顾mod。
Carpela 的答案很好,但对于 message_object,它在 Message.new 中缺少 "raw"。正确的代码应该如下:
message_object = Google::Apis::GmailV1::Message.new(raw: m.encoded) # or m.to_s
client.send_user_message('me', message_object)