2016-10-25 11 views
2

v0.9 APIを使用して電子メールを送信する方法の簡単な例がありますか?ruby​​ gmail api v0.9で電子メールを送信

msg = Base64.urlsafe_encode64 m.to_s 

そしてどこ(送信しよう:

m = Mail.new(
to: "[email protected]", 
from: "[email protected]", 
subject: "Test Subject", 
body:"Test Body") 

を我々が使用することができます送信するために必要とされるメッセージオブジェクトを作成する:

は、単純に次を送信する例をしたいです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 <[email protected]> - An error occurred. Your message was not sent. 

すなわちどれも動作しません...

をGmailのAPIインターフェーステスターに​​よる基本的なencded文字列(上記MSG)here作品を送信します。

私は明らかに、APIを使用して動作させるために必要なオブジェクトをどのように構築するかについてはっきりとわかりません。

+1

正確には機能しないものはありますか?何が起こると思いますか、実際には何が起こりますか?どのような例外がありますか?正確なコードを実行しているときは?他の人があなたの問題を解決するのを助ける、最小限で完全で検証可能な例の作成方法については、http://stackoverflow.com/help/mcveを参照してください。 –

+0

手がかりはメソッドの名前であった。メッセージを送信するメッセージが送信されます。 Googleのoauthプロセスの非常に長い、引き出されたウォークスルーなしで、その例は、私がそれを作ることができるほど明確である。 GoogleのRubyクライアントライブラリのメソッドを使用しています。 Gmail APIのクライアントライブラリ。 Gmailは電子メールサービスです 電子メールの目的の1つは、2者間で電子通信を送信することです。 上記の例は、2者間で電子通信を送信する試みです。 私はどのくらい明確になったのかわかりません... – Carpela

+0

あなたの質問が欠けているのは、依然として正確には機能しないものです。コードを実行するとどうなりますか?例外はありますか?その他の行動? 「それはうまくいかない」ことをどのように知っていますか?他の人があなたを助けることを可能にする良い質問を書く方法について上記のリンク先の記事を参照してください。 –

答えて

4

だから答え...すべてのあなたの助けに感謝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) 

希望です。

1

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) 
+0

あなたは絶対に正しいです。私は私の答えを更新します – Carpela

関連する問題