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');
実行すると
scripts finished
From hostname.com
/dev/pts/12
/hoge/users/dir1/dir2
01/31/12-13:19:10
といった感じのメールがくる.