经过STMP发邮件,这段代码错在哪

WBOY
Release: 2016-06-13 13:09:01
Original
858 people have browsed it

通过STMP发邮件,这段代码错在哪?
发不出邮件,也不返回错误提示。各位高手看看代码错在哪?

PHP code
<!--

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' => '',
    'Date' => date( 'r' ),
    '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;
} 

?>
Copy after login


------解决方案--------------------
不知道是不是1楼所说的问题

只能提供一个我用的发邮件的php,楼主可以试试
PHP code

                                <?php if($_SERVER["REQUEST_METHOD"]=="POST"){?>
                                <?php //ok的邮箱发送。
                                include "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);   //第三个值为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>
Copy after login
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template