ポイントは下記
- 全体的にシンプルに
- HTML部分はERBを使用
- 全てを1fileで、見通しよく
mail送信ライブラリを選ぶ
mail送信ライブラリですが、ruby toolboxをみると、Action MailerとMailの2つが主なライブラリのようです。さらにこちらをみると、Action MailerもMailも書き方はあまり変わらないようです。今回はRubyでMailを送信するだけなので、Mailを使うことにします。
ERBを使う
ERBはHTMLなどの文章の中にRubyスクリプトを埋め込むためのライブラリです。Railsで、erb fileで馴染みがあったので、今回同じように使いたいなと思った次第です。 ERBについては、るびまの説明が参考になりました。標準添付なのであらためてのinstall不要です。
DATAと__END__を使う
Perlの__DATA__と同様に、RubyではDATAと__END__で、スクリプトファイルにDATAを埋め込むことができます。 DATA部分の読み込みは上述のるびまのサンプルを参考にしました。サンプル
以上よりサンプルを作ってみました。事前にMailライブラリは
gem install mail
などでinstallしてください。
下記は、smtpサーバを指定していますが、スクリプト動かしているマシンのsendmailに渡せるのであれば、sendmailを使った方が簡単です。#! /usr/bin/env ruby
# -*- coding: utf-8 -*-
require 'mail'
require 'erb'
user = 'あああ'
name = 'いいい '
mail = Mail.new do
from 'aaa@aaa.com'
to 'bbb@bbb.com'
subject 'sample_subject'
html_part do
content_type 'text/html; charset=UTF-8'
body ERB.new(DATA.read).result(binding)
end
end
# sendmailに渡すだけでよければ、こちらをコメントイン
=begin
mail.delivery_method :sendmail
mail.deliver
=end
# sendmailに渡すだけでよければ、こちらをコメントアウト
mail.delivery_method :smtp, {
address: 'smtp.aaa.com',
port: 587,
domain: 'aaa.com',
user_name: 'aaa@aaa.com',
password: 'xxxxxxxxxxxxxxx',
}
mail.deliver
__END__
<!DOCTYPE html>
<html>
<body>
<h1>こんにちは、<%= user %>さん!</h1>
<p>
あなたの名前は<%= name %>さんです。よろしくね!
</p>
</body>
</html>
まとめ
- 書いてみるとこんだけなんですが、調べるとそのものずばりの情報がなかったので、忘備録として書いてみました。
- 「こんな方法があるよ」的な話があると教えてもらえると幸いです。