Rubyでメール送信

Rubyでのメール送信について調べてみたので、備忘録的な意味も兼ねて、今回の記事を書いてみた。

「Rubyでメール送信するのってどうやんの?」といった人に読んでほしい。

mailというgem

メール送信には、mailというgemを使用する。

>gem install mail

余談だが、このmailというgemは、Ruby on Railsでメール機能を担うActionMailerも、内部的に使用しているから、メールの設定内容なんかはRuby on Railsのドキュメントよりもmail gemの本家のほうが参考になったりする。

 

mail gemを使ってメールを送る、hello world的なスクリプトはこんな感じになる。

(SMTPプロトコルの場合)

 

このスクリプトを実行すれば、receiver@example.com宛にメールが届く。

パスワードの誤魔化し方

ところで、パスワードをソースコードに直書きするのもなんか落ち着かない。

チラッとソースを見られただけで、パスワードが盗まれたんじゃないかと心配になるし、かといって手の込んだ暗号化とかは面倒。

 

心配性だけど面倒くさがりの私の妥協点ということで、パスワードはBase64に変換することで一見しただけでは読めない程度に誤魔化すことにした。

 

まずはirbなんかで対話的にパスワードをbase64化する。

>irb
irb(main):001:0> require 'base64'
=> true
irb(main):002:0> Base64.encode64('mypassword')
=> "bXlwYXNzd29yZA==\n"

 

base64化したパスワードをソースコード中に堂々と記述して、使うときにはBase64から普通の文字列に戻して使用する。

これで、一見されただけでは覚えられまいっと。

ファイルの添付方法

ファイルを添付したい場合は、メール作成時にadd_fileメソッドにファイルパスを指定すればいい。

 

または、元ファイルに対して異なるファイル名で送りたい場合は、ファイル名とデータを別々に指定できる。

例えば、「サンプルファイル.xlsx」というファイルの内容を送りたいけど、実際に送った時のファイル名は「散布る.xlsx」とちょっとおどけた感じのファイル名にしたい場合。

本家説明ではFile.readメソッドを使用していたが、File.binreadメソッドでないとどうにも送れない気がする。

コメントを残す

トラックバック: http://pgnote.net/wp-trackback.php?p=1842