mailtest.php
<?php require_once("/usr/share/pear/Mail.php"); mb_language("japanese"); mb_internal_encoding("UTF-8"); $params = array( 'host' => 'tls://smtp.gmail.com', 'port' => 465, 'auth' => true, 'username' => 'アカウント名@gmail.com', 'password' => 'パスワード', 'debug' => false, 'protocol'=>'SMTP_AUTH' ); $headers = array( 'From' => 'example@gmail.com', 'To' => 'target@example.net', 'Subject' => mb_encode_mimeheader(mb_convert_encoding("件名","JIS","UTF-8")) ); $recipients = 'target@example.net'; $body = mb_convert_encoding("メールの内容","JIS","UTF-8"); $smtp = Mail::factory('smtp', $params); $e = $smtp->send($recipients, $headers, $body); if ( PEAR::isError($e) ) echo $e->getMessage() . "\n";
上記のスクリプトは587(STARTTLS)では送信できません。
Gmail経由からでしか送信しないので465で良いです。
もくじ
465, 587? これって何?
メールサーバ同士、クライアントでやりとりする時のとりきめ、プロトコル。
587番ポート STARTTLS
- 相手側もTLSに対応していたら暗号通信を行う
465番ポート SMTP OVER SSL
- 必ず暗号化通信を行う
- 相手が対応していないと送受信出来ないので安心だけれどトラブルになる
STARTTLS, SMTP Over SSLはどちらを使うべきなの?
使い分けるが面倒なら587 STARTTLS!
- 普通のメールサーバならSTARTTLS
- 今回はGmailをSMTPサーバとして経由して送信するのでSMTP Over SSLが最適解
PEAR::Mail以外を使う
PEARは更新されていないから、composerを利用して違うライブラリを利用しよう