令和 3年 2月 17日 フォームメール送信、PHP7.4 ------------------------------------------------------- Apache(httpd) + PHP7.4 + Postfix が稼働しいる事。 PHPのVerUpでは、Postfixが削除されるので確認する必要がある。 # yum install postfix <- MariaDB10.5、PHP7.4 にしたので、再インストール。 パッケージ 2:postfix-2.10.1-9.el7.x86_64 はインストール済みか最新バージョンです 何もしません Postfix は、デフォルトのままで良い。 # systemctl status postfix # systemctl start postfix # systemctl restart postfix # systemctl restart httpd # systemctl enable postfix <-起動時の自動実行 # setsebool -P httpd_can_sendmail=1 <- PHPからmd_send_mailを実行するため mail コマンドで送信できることを確認する。 # echo "mail-send-test1" | mail -s "test1" info@parknet.co.jp 一番簡単なサンプルのメール送信プログラムを実行してみる。 /var/www/html に WinCSPでファイル mail_sd_mail.php を転送して確認する。 http://xxx.xxx.xxx.xxx/mail_sd_test.php mail_sd_mail.php ------------------------------------------------------------------------------------- メール送信フォーム "; if (mb_send_mail($mailto, $subject, $content, $mailfrom)) { echo "メールを送信しました。"; } else { echo "メールの送信が失敗しました。"; } ?> ------------------------------------------------------------------------------------- フォームメールのプログラムで確認を行う。 form_mail : Postfix の 初期時の設定のローカルから送信する。 : http://xxx.xxx.xxx/form_mail/mail_test.html mail_send.php にある送信先のメールアドレスを変更する。 $to = "info@parknet.co.jp"; <- 送信先メールアドレス。 /var/www/html/form_mail/ mail_test.html、mail_data.php、mail_send.php を転送します。 ブラウザからメール送信の試験を行います。 http://xxx.xxx.xxx.xxx/form_mail/mail_test.html 上記で指定したメールアドレスに日本語で送信されていることを確認して下さい。 ------------------------------------------------------------------------------------- 外部にあるメールサ-バーにSMTP認証して送信する方法。 qdmail というフリーソフトを使用します。 PHP7.4 に対応する修正をしてある2つの関数ファイル。 qdmail.php qdsmtp.php 送信するために記述するファイル。 smatpauth.php 上記の3つのファイルを下記のフォルダに転送します。 /var/www/html/qdmail/ メール送信方法。 http://xxx.xxx.xxx.xxx/qdmail/smtpauth.php smtpauth.php ------------------------------------------------------------------------------------- errorDisplay( false ); $mail -> smtp( true ); $param = array( 'host' => 'mail.parknet.co.jp', 'port' => 587, 'from' => 'postmail@mail.parknet.co.jp', 'protocol' => 'SMTP_AUTH', 'user' => 'postmail', 'pass' => 'past1234' ); $mail -> timeZone( '+0900' ); // 日本時間の場合 $mail -> smtpServer($param); $mail->to('info@parknet.co.jp'); $mail->from('postmail@mail.parknet.co.jp'); $mail->subject('qdmail お知らせ'); $mail->text('これはメールの送信テストです。'); if ( $mail->send() ) { echo 'メール送信が成功しました。'; } else { echo 'メール送信が失敗しました。'; } ?> Postfix の最小限の設定をするなら。 ------------------------------------------------------------------------------------- /etc/postfix/master.cf <- サブミッションポートの準備(587番) submission inet n - n - - smtpd <- #をとる。 # firewall-cmd --permanent --add-port=587/tcp --zone=public <- 587番をあける。 # systemctl restart postfix # systemctl restart httpd これで設定が完了。 # rebbot <- 念のためサーバーを再起動した方が良い -------------------------------------------------------------------------------------