それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

rubyのプロセス起動で、smtpを使わずに、sendmail コマンドでメール送信するとカンタン

ubuntuシステムからメールを送りたい。

メールを送ろうとすると、SMTPをつかって、MIMEエンコードして SMTP over TLSで接続してとあれこれ手順が必要。

その手順をrubygemでインストールして使い方を調べるのも面倒。

ローカルの postfix にリレーさせる。

ubuntu とかサーバーで使ってるとローカルホストに exim4 や postfix くらいは用意していると思うんですよ。するとsendmail コマンドが使えるじゃないですか。

sendmail でメール送信する例。

$ sendmail takuya@example.com
Subject: Hi Hi

hello from test
.

ruby のプロセス open は標準入力を渡すのがとても楽。

ruby はIO周りと列挙周りだけは、本当にガチで便利ですよね。

シンプルなExim4と、シンプルなsendmail、そしてシンプルな ruby open。単純なものを組み合わせてしまう。

#!/usr/bin/env  ruby
#

open("|sendmail -i -t > /dev/null",'w'){|f|

  f.puts 'To:takuya@example.com'
  f.puts 'Subject: Hello from ruby '
  f.puts '  '
  f.puts '  '
  f.puts 'this is sample from ruby stdin'
  f.puts '  '
  f.puts ''
}

gem 何も要らない

gem のインストールの管理が面倒だったり、 bundler といえども、どこにgemを導入しているか GEM_HOMEのLOAD_PATHであれこれ考える必要もない。gem を外すと楽だった。

単純なことは単純にやるのが一番ですよね。

KISS / Keep it simple stupid が大事ですよ。ほんと。凝りだすときりがない。

ローカルホストにpostfix などMTAを導入する例

takuya-1st.hatenablog.jp