1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

GmailでAPIから署名付きでメールを送る方法

Last updated at Posted at 2021-08-02

##メールに自動的に署名は付かない
gmailでAPI経由でメールを送信する際、署名を付ける方法がわからなかったので調査しました。
日本語の記事がほとんど見当たらず、結構詰まったので残しておきます。
railsでの書き方になりますが、gmailのAPIとして提供されている機能ですので、他言語でも対応する書き方が存在するはずです。

##結論
署名などのユーザー設定的なものを扱うSendAsなるクラスが存在するため、自身のメアドを指定してそれを取得します[1]。
取得できたsend_asのsignature(署名)を参照すると、署名を文字列として取得できます。

require 'google/apis/gmail_v1'

Gmail = Google::Apis::GmailV1 # Alias the module
service = Gmail::GmailService.new
send_as = service.get_user_setting_send_as('me', 'my-address@gmail.com')
pp send_as.signature
# これで署名が表示されるはず

あとはこの署名を本文の下にくっつけて、署名付きメールの完成です。

※当初、メール送信メソッドの引数に「署名付与フラグ」的なものがあると思ったのですが、それとおぼしき引数はありませんでした。
現状、自分が調べた限りではこのような方法でしか署名を付けられそうになかったのですが、他のやり方あれば教えていただきたいです、、、

##プレーンテキストへの変換
自分はプレーンテキストの署名が欲しかったのですが、どうもhtml形式でしか取得できなさそうです[2]。

railsでは、html2textというhtmlをいい感じにプレーンテキストに変換してくれるgemがあったため、こちらを利用しました[3]。

##参考サイト
[1] SendAsの取得メソッド
https://googleapis.dev/ruby/google-api-client/v0.34.1/Google/Apis/GmailV1/GmailService.html#get_user_setting_send_as-instance_method
[2] SendAsの詳細
https://googleapis.dev/ruby/google-api-client/v0.34.1/Google/Apis/GmailV1/SendAs.html
[3] html2text
https://github.com/soundasleep/html2text_ruby

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?