Jetson Nanoからのメール送信
NVIDIA Jetson Nanoの利用を開始すると、Jetson Nanoの各種モジュールへ通知先のメールアドレスを設定することがあります。
パッケージのアップデートやログのローテーション処理時のエラーなどもメール通知することが可能です。
今回は、SSMTPをJetson Nanoに導入し、PHP経由で以前に構築したSynology SMTPを経由し、e-mailを送信できる環境の構築を行います。
SynologyでSMTP(メールサーバ)構築
ssmtpインストール
root@jetson:~# apt install ssmtp
ssmtp.confを編集。
root@jetson:~# vi /etc/ssmtp/ssmtp.conf
# # Config file for sSMTP sendmail # # The person who gets all mail for userids < 1000 # Make this empty to disable rewriting. root=postmaster # The place where the mail goes. The actual machine name is required no # MX records are consulted. Commonly mailhosts are named mail.domain.com mailhub=@SynologyIP@ # Where will the mail seem to come from? rewriteDomain=miki-ie.com # The full hostname hostname=jetson.miki-ie.com # Are users allowed to set their own From: address? # YES - Allow the user to specify their own From: address # NO - Use the system generated From: address FromLineOverride=YES
PHP構成定義ファイル(php.ini)変更
php.iniのファイルパス確認
PHPの利用するコンフィグファイルを確かめます。
コマンドラインで実行する場合は、WEBサーバで利用するコンフィグファイルは、通常異なります。
root@jetson:~# php --ini Configuration File (php.ini) Path: /etc/php/7.2/cli Loaded Configuration File: /etc/php/7.2/cli/php.ini Scan for additional .ini files in: /etc/php/7.2/cli/conf.d Additional .ini files parsed: /etc/php/7.2/cli/conf.d/10-mysqlnd.ini, /etc/php/7.2/cli/conf.d/10-opcache.ini, /etc/php/7.2/cli/conf.d/10-pdo.ini, /etc/php/7.2/cli/conf.d/20-calendar.ini, /etc/php/7.2/cli/conf.d/20-ctype.ini, /etc/php/7.2/cli/conf.d/20-curl.ini, /etc/php/7.2/cli/conf.d/20-exif.ini, /etc/php/7.3/cli/conf.d/20-curl.ini, /etc/php/7.3/cli/conf.d/20-dom.ini, /etc/php/7.3/cli/conf.d/20-exif.ini, /etc/php/7.3/cli/conf.d/20-fileinfo.ini, /etc/php/7.3/cli/conf.d/20-ftp.ini, /etc/php/7.3/cli/conf.d/20-gd.ini, /etc/php/7.3/cli/conf.d/20-gettext.ini, /etc/php/7.3/cli/conf.d/20-iconv.ini, /etc/php/7.3/cli/conf.d/20-imap.ini, /etc/php/7.3/cli/conf.d/20-json.ini, /etc/php/7.3/cli/conf.d/20-mbstring.ini, /etc/php/7.3/cli/conf.d/20-mysqli.ini, /etc/php/7.3/cli/conf.d/20-pdo_mysql.ini, /etc/php/7.3/cli/conf.d/20-pdo_pgsql.ini, /etc/php/7.3/cli/conf.d/20-pgsql.ini, /etc/php/7.3/cli/conf.d/20-phar.ini, /etc/php/7.3/cli/conf.d/20-posix.ini, /etc/php/7.3/cli/conf.d/20-readline.ini, /etc/php/7.3/cli/conf.d/20-shmop.ini, /etc/php/7.3/cli/conf.d/20-simplexml.ini, /etc/php/7.3/cli/conf.d/20-sockets.ini, /etc/php/7.3/cli/conf.d/20-ssh2.ini, /etc/php/7.3/cli/conf.d/20-sysvmsg.ini, /etc/php/7.3/cli/conf.d/20-sysvsem.ini, /etc/php/7.3/cli/conf.d/20-sysvshm.ini, /etc/php/7.3/cli/conf.d/20-tokenizer.ini, /etc/php/7.3/cli/conf.d/20-wddx.ini, /etc/php/7.3/cli/conf.d/20-xmlreader.ini, /etc/php/7.3/cli/conf.d/20-xmlwriter.ini, /etc/php/7.3/cli/conf.d/20-xsl.ini
コマンドライン向けPHP構成ファイルphp.iniのsendmail_pathを変更
root@jetson:~# vi /etc/php/7.2/cli/php.ini ; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). ; http://php.net/sendmail-path sendmail_path = /usr/sbin/ssmtp -t
PHPのメール送信サンプルスクリプト
メールヘッダーにマルチバイト文字を利用する際は、mb_encode_mimeheaderを用いて、エンコーディングを行います。
php-mbstringをインストール
php-mbstringを導入していないと、エラーとなります。
PHP Fatal error: Uncaught Error: Call to undefined function mb_encode_mimeheader()
root@jetson:~# apt install php-mbstring
<?php function send_notice($title, $message){ $to = "kenichi.miki@gmail.com"; $headers = "From:". mb_encode_mimeheader("メール通知") ."<notice@192.168.0.108>".PHP_EOL; if(mb_send_mail($to, $title, $message,$headers)){ echo "メールを送信しました"; } else { echo "メールの送信に失敗しました"; } } send_notice("テストRaspi","メッセージテスト");