使用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) => # #But then I get Bounce  - An error occurred. Your message was not sent. 

即他们都没有工作……

通过Gmail API接口测试程序发送基本的加密字符串(上面的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) 

希望能够拯救别人免受过度热情的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)