- 締切済み
PHPプログラムからプロバイダーのメールサーバを使用
プロバイダーに入会するとメールアカウントがもらえますが、そのメールアカウントを使って、PHPモジュールよりメールを送信したいと考えております。 プロバイダーのメールサーバを使用する際、 認証用のアカウント、パスワードが必要ですが、 PHPモジュールに実装するロジック、関数など 存在しますでしょうか? 要は、PHPモジュールからプロバイダのメールサーバ経由でメールを送信したい、ということです。 またphp.iniの設定も必要になってくるのでしょうか? よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- Nii
- ベストアンサー率48% (79/162)
サーバーの環境が違うのと、不要な部分と一緒に必要な箇所をそぎ落としてしまった可能性もあり、参考になるかどうかもわかりませんが、私はこんな感じで送信出来ました。 htmlとPHPの日本語コードが違うと送信したメールが文字化けしたので、注意して下さい。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <script language="JavaScript" type="text/JavaScript"> <!-- /* メールチェック */ function MailCheck() { var str = document.msg.mail.value; if(! str.match(/^[-\.\w]+\@[-\.\w]+\.[-\.\w]+$/) ) { alert("メールアドレスが正しく入力されていません。"); return 1; } return 0; } /* 入力クリア確認 */ function init() { if (confirm("入力された内容を全てクリアしてもよろしいですか?")) document.con.reset(); else return false; } //--> </script> </head> <body> <form name="con" action="send.php" method="POST"> Mail<input name="mail" onblur="MailCheck();"> 内容<textarea name="msg" rows="5" cols="50"> <input type="submit" value="確認" onclick="return MailCheck();"> <input type="reset" value="リセット" onclick="return init();"> </form> </body> </html> <?php //送信先メールアドレス $to = "XXX@XXXXX.XXX"; //データファイル $LogFile = "data.cgi"; //再送信制限時間 $limittime = 30; $mail = trim($_POST['mail']); $msg = trim($_POST['msg']); //同一クライアントからの連続送信チェック $time = time(); $addr = $_SERVER['REMOTE_ADDR']; $fp = fopen($LogFile,'r'); while(!feof($fp)){ $line = fgets($fp); $items = explode("\t", $line); if($time - $items[0] < $limittime) $data[$items[1]] = $line; } fclose($fp); $err = ""; //メール形式のみ一応チェック if (ereg('^[a-zA-Z0-9_\.\-]+@[A-Za-z0-9_\-]+\.[A-Za-z0-9_\.\-]+$', $mail)) { } else { $err = "メールアドレスが正しく入力されていません。\n"; } if ($data[$addr] == "" and $err == "") { $headers = "From: " . $to . "\r\n" . "Reply-To: " . $to . "\r\n" . "Return-Path: " . $to . "\r\n" . "X-Mailer: PHP/" . phpversion() . "MIME-Version: 1.0\r\n" . "Content-type: text/plain; charset=ISO-2022-JP\r\n" . "Content-Transfer-Encoding: 7bit"; //メール作成 $subject = mk_subject("subject"); $message = mk_message($msg); mb_send_mail($mail, $subject, $message, $headers); } //アクセス履歴格納 $line = "$time\t$addr\t\n"; $data[$addr] = $line; $fp = fopen($LogFile, 'w'); foreach($data as $line) fputs($fp, $line); fclose($fp); function mk_subject($subject){ $subject = mb_convert_encoding($subject,"JIS","EUC-JP"); $subject = base64_encode($subject); $subject = "=?iso-2022-jp?B?" . $subject . "?="; return $subject; } function mk_message($message){ // 1 行が 70 文字を超える場合は行を分割 $message = wordwrap($message, 70); $message = mb_convert_encoding($message,"JIS","EUC-JP"); return $message; } ?> なので、認証用のアカウント、及び、パスワードは、私の環境では必要ありませんでした。
補足
詳細な回答ありがとうございます。 携帯端末にも届きますでしょうか?