処理完了後にG-Mailで通知する方法!
[ Updated at 2019/11/12 ]
MATLAB

はじめに

研究室などで深層学習などを用いたり、大量の生体情報を処理する際に、処理時間が膨大にかかると思います。そんな時に、処理が終わったのかを確認するために、Gmailで通知をする方法についてまとめました。

具体的には、処理が完了した時に、

  • 完了したこと
  • いつ完了したか (timestamp)
  • 得られた結果 (attachment file)

を送信します。

 

方法

手順①:関数の作成 (sendMail.m)

手順②:関数の実行 (main.m)

手順③:Gmailの認証設定の変更

 

手順①:関数の作成 (sendMail.m)

以下の関数 (sendMail.m) を作成します。

% ===== Info =====
% Function for Send Mail
% URL: https://www.umi-mori.jp/article/matlab/send_mail.php
% Github: https://github.com/Masumi-M/SendMail_matlab

% ===== Main =====
function [] = sendMail(attachmentFilePath, attachmentFileName)

email = 'send_from@gmail.com';
password = 'send_from_password';
recipients = 'send_to@gmail.com';

setpref('Internet', 'E_mail', email);
setpref('Internet', 'SMTP_Server', 'smtp.gmail.com');
setpref('Internet', 'SMTP_Username', email);
setpref('Internet', 'SMTP_Password', password);

props = java.lang.System.getProperties;
props.setProperty('mail.smtp.auth','true');
props.setProperty('mail.smtp.socketFactory.class', 'javax.net.ssl.SSLSocketFactory');
props.setProperty('mail.smtp.socketFactory.port','465');  %Socket for SSL (465)

subject = 'Matlab Notification.';
message_line1 = strcat('Matlab PGM Ended.');
message_line2 = strcat('Attachment: [ ', char(attachmentFileName), ' ]');
message_line3 = strcat('Datetime: [ ', datestr(datetime('now','TimeZone','local','Format','d-MMM-y HH:mm:ss Z')), ' ]');

sendmail(recipients, subject, [message_line1 10 message_line2 10 message_line3], {char(attachmentFilePath)});

return

end

 

この時、以下の3行を書き換えます。

email = 'send_from@gmail.com';
password = 'send_from_password';
recipients = 'send_to@gmail.com';
変数 概要
email メールの送信元のアドレス (From)
password メールの送信元のパスワード (From)
recipitents メールの宛先のアドレス (To)

 

手順②:関数の実行 (main.m)

以下のようなスクリプトで sendMail.m 関数を実行します。

attachmentFilePath = './OutputFigure/t-value.png';
attachmentFileName = 't-value.png';
sendMail(attachmentFilePath, attachmentFileName);

Figureのpathと、file名を引数として渡しています。

 

手順③:Gmailの認証設定の変更

このまま実行すると、以下のようにブロックされてしまいます。

blockImage

そのため、「安全性の低いアプリのアクセス」を許可すると、送れるようになります。

security

 

結果:sampleDataの送信

sampleData_result

 

デモデータ

以下のGithubのリポジトリにサンプル用のデモデータを用意しました。

Github : SendMail_matlab - Github

umi-mori
umi-mori