"smtp.gmail.c"/> "smtp.gmail.c">
STMP 経由で電子メールを送信する場合、このコードの何が問題になっていますか?
電子メールは送信できず、エラー メッセージも返されません。専門家の方、コードのどこが間違っているか教えていただけますか?
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><?php header( "content-type:text/html;charset=utf-8" ); $smtp = array( "url" => "smtp.gmail.com", "port" => "465", "username" => "", //用户名 "password" => "", //密码 "from" => "", //发件人e-mail "to" => "", //收件人e-mail "subject" => "测试一下标题", "body" => "测试一下内容" ); $CRLF = "\r\n"; $test = ""; $header = array( 'Return-path' => '<' . $smtp['from'] . '>', 'Date' => date( 'r' ), 'From' => '<' . $smtp['from'] . '>', 'MIME-Version' => '1.0', 'Subject' => inlineCode( $smtp['subject'] ), 'To' => $smtp['to'], 'Content-Type' => 'text/html; charset=UTF-8; format=flowed', 'Content-Transfer-Encoding' => 'base64' ); $data = buildHeader( $header ) . $CRLF . chunk_split( base64_encode( $smtp['body'] ) ); $content = "EHLO " . $smtp["url"] . $CRLF; // 先得hello一下 $content .= "AUTH LOGIN" . $CRLF . base64_encode( $smtp["username"] ) . $CRLF . base64_encode( $smtp["password"] ) . $CRLF; // 验证登陆 $content .= "MAIL FROM:" . $smtp["from"] . $CRLF; // 发件地址 $content .= "RCPT TO:" . $smtp["to"] . $CRLF; // 收件地址 $content .= "DATA" . $CRLF . $data . $CRLF . "." . $CRLF; // 发送内容 $content .= "QUIT" . $CRLF; // 退出 $curl = curl_init(); curl_setopt( $curl, CURLOPT_URL, $smtp['url'] ); curl_setopt( $curl, CURLOPT_PORT, $smtp['port'] ); curl_setopt( $curl, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; .NET CLR 3.0.4506.2152)' ); curl_setopt( $curl, CURLOPT_TIMEOUT, 10 ); curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true ); // curl接收返回数据 curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false ); curl_setopt( $curl, CURLOPT_SSL_VERIFYHOST, false ); curl_setopt( $curl, CURLOPT_CUSTOMREQUEST, $content ); $test = curl_exec( $curl ); var_dump( $test ); curl_close( $curl ); function inlineCode( $str ) { $str = trim( $str ); return $str ? '=?UTF-8?B?' . base64_encode( $str ) . '?= ' : ''; } function buildHeader( $headers ) { $ret = ''; foreach( $headers as $k => $v ) { $ret .= $k . ': ' . $v . "\n"; } return $ret; } ?>
を試すことができます。 <?php if($_SERVER["REQUEST_METHOD"]=="POST"){?> <?php // OK メールで送信します。 「smtp.class.php」をインクルードします。 //$smtpserver = "SMTP.163.com" //SMTP サーバーのアドレス $smtpserver=""; $port =25; //SMTP サーバーのポート、通常は 25 //$smtpuser = "" //SMTP サーバーにログインするためのユーザー名 //$smtppwd = "" //SMTP サーバーにログインするためのパスワード $mailtype = "HTML"; //電子メールのタイプ。オプションの値は TXT または HTML です。TXT はプレーンテキスト電子メールを意味し、HTML は HTML 形式の電子メールを意味します。 $sender = "{$email}"; //送信者は通常、smtp サーバーへのログインに使用するユーザー名 ($smtpuser) と同じである必要があります。そうしないと、smtp サーバーの設定により送信が失敗する可能性があります。 $smtp = new smtp($smtpserver,$port,false,$smtpuser,$smtppwd,$sender); //3 番目の値が false の場合、匿名でログインしてメールを送信し、$smtpuser と $smtppwd をコメントアウトできます。 //$smtp->debug = true; //デバッグを有効にするかどうか。プログラムのテスト時にのみ使用されます。正式に使用する場合はこの行をコメントしてください。 $to = "受信者のメールアドレス" //受信者 //メールを使用できるようになりました $subject = "相談"; $body= コンサルタント:{$firstname}.{$familyname}<br> コンサルタント名のピンイン: {$firstnamepy}.{$familynamepy}<br> コンサルタントの性別:{$sex}<br> 相談タイプ:{$zixun1}<br> 相談内容:{$zixun}<br> 会社名(法人): {$faren}<br> 連絡先エリア:{$address}<br> 電話番号:{$phone}<br> 電子メール:{$email}"; //<?php for($i=0;$i<count($zixun1);$i++) echo $zixun1[$i] $send=$smtp->sendmail($to,$sender,$subject,$body,$mailtype); ?><div class="clear"></div>