処理完了後にG-Mailで通知する方法【MATLAB】

はじめまして、フリーランスのますみです!

一人一人が自立・共存・革新している「クリエイターエコノミー」を創る。』というビジョンに向けて活動しています。

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

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

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

を送信します。

方法

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

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

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

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

以下の関数 (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

最後に

いかがだったでしょうか?
この記事を通して、少しでもあなたの困りごとが解決したら嬉しいです^^

おまけ(お知らせ)

エンジニアの仲間(データサイエンティストも含む)を増やしたいため、公式LINEを始めました🎉

「一緒に仕事をしてくれる方」「友だちとして仲良くしてくれる方」は、友だち追加をしていただけますと嬉しいです!(仲良くなった人たちを集めて、「ボードゲーム会」や「ハッカソン」や「もくもく会」もやりたいなと考えています😆)

とはいえ、みなさんにもメリットがないと申し訳ないので、特典を用意しました!

友だち追加後に、アンケートに回答してくれた方へ「エンジニア図鑑(職種20選)」のPDFをお送りします◎