Matlab/Octaveからメールを送る

Matlabにはsendmailというコマンドがあって,Matlabからメールを送信することができる.
アドレス リストに電子メールを送信 - MATLAB
初心者によるMATLABメモ | sendmail
しかし,Octaveにこの機能は無い.
なのでPython + Gmail + systemコマンドを使ってつくることにする.
Windowsじゃ使えないけどね.

Pythonを使ったメール送信 via Gmail

以下からZIPファイルをダウンロード
gmailsend.py, send_notify.py, & mail_notify.m
解凍後,send_notify.pyの50行目

sg = sendGmail('utf-8', subject, body, 'xxx@gmail.com', to_addr, 'xxx@gmail.com', 'xxxxxxx')

  • xxx@gmail.com → 自分のGmailアドレス,もしくは別途設定済みの送信アドレス
  • xxx@gmail.com → Gmailアカウントのユーザ名
  • xxxxxxx → Gmailアカウントのパスワード

という感じに書き換える.
これらの解説は,
Pythonを使ってGmail経由でメールを送る
にあります.

gmailsend.pyとsend_notify.pyを適当なフォルダに移動(これ以降の例だと,~/scripts/notify_py).

メールを送信するMatlab/Octaveスクリプト

mail_notify.mを呼び出すことでメールを送信する.

function status = mail_notify(ads, sbj, body)

input = '';
if nargin > 0
	input = sprintf('%s "%s"', input, ads);
end

if nargin > 1
	input = sprintf('%s "%s"', input, sbj);
end

if nargin > 2
	input = sprintf('%s "%s"', input, body);
end

cmd = sprintf('python ~/scripts/notify_py/send_notify.py %s', input);
[output status] = system(cmd);
disp(status)

使い方は,

>> mail_notify_py('xxx@xxx.xx', 'matlab/octave', 'scripts finished');

実行すると

  • 宛先: xxx@xxx.xx
  • 件名: [Nortification] matlab/octave 01/31/12-13:19:10
  • 送信元: xxx@gmail.com
  • 本文:

scripts finished
From hostname.com
/dev/pts/12
/hoge/users/dir1/dir2
01/31/12-13:19:10

といった感じのメールがくる.