加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用ruby gmail api v0.9发送电子邮件

发布时间:2020-12-17 03:57:08 所属栏目:百科 来源:网络整理
导读:有没有人有一个简单的例子,说明如何使用v0.9 API从头开始发送电子邮件. 只想要一个发送以下内容的例子: m = Mail.new(to: "test1@test.com",from: "test2@test.com",subject: "Test Subject",body:"Test Body") 现在要创建需要发送的消息对象,我们可以使用
有没有人有一个简单的例子,说明如何使用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.

即他们都没有工作……

通过Gmail API接口测试器here发送基本的加密字符串(上面的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的光顾.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读