##メールに自動的に署名は付かない
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