我在网上下载了一个5.0.2的phpMailer类,是个文件夹,里面主要三个文件也都有。我想用一个text的输入框,写些邮件内容发给十个左右的平时常用人员,假设内容为“祝各位新年好!”,用gmail的smtp
,当然,用其它也可以,最好用gmail,网上查了一些代码,测了都不好用,到现在没有一个人有收到内容,有的有提示出错,有的就没有提示了。请问如何写代码?可以贴上来,也可以发邮件到[email protected],只要能发送得出去,就给分。

解决方案 »

  1.   

    下面是我用phpMailer发送的邮箱,不过我用的是163的.没有gmail的账号require_once './PHPMailer/class.phpmailer.php';
    require_once './PHPMailer/class.smtp.php';$mail = new phpmailer();
    $mail->IsSMTP();
    $mail->SMTPAuth=true;
    $mail->Host="smtp.163.com";
    $mail->Port=25;$mail->Username="[email protected]";
    $mail->Password="aaa";$mail->From="[email protected]";
    $mail->FromName="aaa";
    $mail->Subject="hello";
    $mail->WordWrap=50;$mail->MsgHTML("HELLO WORLD!");
    $mail->AddAddress("[email protected]",'xums');
    $mail->IsHTML(true);if( !$mail->Send() ){
    echo $mail->ErrorInfo;
    }else{
    echo "success";
    }
      

  2.   

    测试过的,ssl验证的,至于增加文件你网上查就行了
    include('Phpmailer.php');$mail             = new Common_Phpmailer();
    $mail->IsSMTP();
    $mail->SMTPAuth   = true;
    $mail->SMTPSecure = "ssl";
    $mail->Host       = "smtp.gmail.com";
    $mail->Port       = 465;
    $mail->CharSet   = "gb2312"; 
    $mail->Username   = "[email protected]";
    $mail->Password   = "sdfdsf";
    $mail->From       = "[email protected]";
    $mail->FromName   = "haohaha";
    $mail->Subject    = "Linux Mailer Test!";
    $mail->AltBody    = "This is the body when user views in plain text format";
    $mail->WordWrap   = 50;
    $content   = 'phpmailer test';
    $mail->MsgHTML($content);
    $mail->AddReplyTo("[email protected]","Webmaster");
    $mail->AddAddress('[email protected]',"First Last");
    $mail->IsHTML(true);if(!$mail->Send()) {
    //  echo $mail->ErrorInfo;
    }else{
    echo 'Send OK!';
    }
    //注意:xxx是发送者,yyy是接受
      

  3.   

    我用gmail成功发送了分享一下:
    将class.smtp.php文件中的这句话$this->smtp_conn = @fsockopen($host,    // the host of the server
                                     $port,    // the port to use
                                     $errno,   // error number if any
                                     $errstr,  // error message if any
                                     $tval);   // give up after ? secs修改为$this->smtp_conn = @fsockopen('ssl://'.$host,    // the host of the server
                                     $port,    // the port to use
                                     $errno,   // error number if any
                                     $errstr,  // error message if any
                                     $tval);   // give up after ? secs
        再开启你的ssl扩展,由于我的是win下面,开扩展很简单哦呵呵~
    extension=php_openssl.dll php代码如下:
    require_once './PHPMailer/class.phpmailer.php';
    require_once './PHPMailer/class.smtp.php';$mail = new phpmailer();
    $mail->IsSMTP();
    $mail->SMTPAuth=true;
    $mail->Host="smtp.gmail.com";
    $mail->Port=465;$mail->Username="[email protected]";
    $mail->Password="aaaa";/*$mail->Username="[email protected]";
    $mail->Password="aaaa";*/$mail->From="[email protected]";
    $mail->FromName="xums";
    $mail->Subject="hello";
    $mail->WordWrap=50;$mail->MsgHTML("HELLO WORLD!");
    $mail->AddAddress("[email protected]",'xums');
    $mail->IsHTML(true);if( !$mail->Send() ){
    echo $mail->ErrorInfo;
    }else{
    echo "success";
    }
      

  4.   

    不改动那个类里面的代码也可以 ,不过必须要开启ssl扩展
    呵呵~~~
    终于搞定了
      

  5.   

    首先感谢csdn管理员删除掉了我发错的贴子,反应非常及时,衷心感谢!!!现在重写并发新回复贴子:kyzy_yy_pm:你好,可能我下载的phpmailer类与你所下载的不同,所以我没有Phpmailer.php文件,也没有Common_Phpmailer类,提示如下:Fatal error: Class 'common_phpmailer' not found in D:\wamp\www\Tests\11_php_Email\phpMailer_pack\02\PHPMailer_v5.0.2\my7_test_gmail.php on line 7所以,请教你所下载的phpmailer类具体是什么名字什么版本,或它下载的网址,我可以下载测一下,谢。
      

  6.   

    ms_X0828:你好,我注册了一个163的帐号,然后按你第1号楼的代码修改后,在localhost上做测试,代码如下:require_once("../PHPMailer_v5.0.2/class.phpmailer.php"); 
    require_once("../PHPMailer_v5.0.2/class.smtp.php"); 
    //require_once '../PHPMailer_v5.0.2/class.phpmailer.php';
    //require_once '../PHPMailer_v5.0.2/class.smtp.php';$mail = new phpmailer();
    $mail->IsSMTP();
    $mail->SMTPAuth=true;
    $mail->Host="smtp.163.com";
    $mail->Port=25;$mail->Username="[email protected]";
    $mail->Password="我的密码";$mail->From="[email protected]";
    $mail->FromName="lxdcoms";
    $mail->Subject="hello";
    $mail->WordWrap=50;$mail->MsgHTML("HELLO WORLD!");
    $mail->AddAddress("[email protected]",'lxdcoms');
    $mail->IsHTML(true);if (!$mail->Send())
        echo $mail->ErrorInfo;
    else
        echo "success";在ie 6 和 firefox 3.6中测试,结果为:ie6:SMTP Error: SMTP Error: Could not connect to SMTP host. SMTP Error: Could not connect to SMTP host. firefox:SMTP Error: Could not connect to SMTP host. SMTP Error: Could not connect to SMTP host. 请问这段代码错误在哪里,还需要在哪里进行修改?因为在163中没通过,所以我还没有做gmail的进一步测试,请再进一步指点一下,谢谢!
      

  7.   


    请先确认php.ini中的扩展openssl是开启的
      

  8.   

    kyzy_yy_pm:你好,我下载的正是PHPMailer_v5.0.2.zip,你看我出错提示上所出现的目录就是解压出的那个,只是没有那个文件,也没有那个类。刚才,我刚才php和apache目录下的phi.ini都改了一下,把openssl都打开了,测试了一下,结果还是一样,不知是为何原因。能否给个邮箱,我把程序发过去,你帮忙调一下,可用发过来?或是?若还有不需发,改动改动就可好的方法,也可以告诉,我直接改动一下,谢谢。
      

  9.   

    'common_phpmailer' 就是phpmailer,只不过我在网站用的时候为了适应框架要求改的,如果你还弄不出来的话,把邮箱告诉我,我给你发个过去
      

  10.   

    kyzy_yy_pm:你好,,这个你可以看我在发贴时就已经公开了,我测实在累了,头晕了,希望你帮助一下,发回个代码包过来吧,谢谢,我已经将我的程序发过去了,你修改一下发回也可,期待中,谢谢!!
      

  11.   

    我测过了,还是不行,其提示及所在行数我已经以回复形式回发一份给你了,请帮忙再看一下,当然,也有可能与ini文件有关,所以我也将两个ini文件作为附件发给你,请一并查看一下,谢谢。
      

  12.   

    哦,对了,我忘记说明一下,我用的是windows系统,不是unix系统,你发过来的邮件上写着linux mail test,可能你的这个程序是在lunix下运行的吧,是否是这个原因? 
      

  13.   

    我也是在windows上成功的,不过我是又在linux上测试了一下而已
      

  14.   

    当前结果是:wamp已重装,扩展已装到指定目录上,gmail 465可以拼通,且很快,在localhost上程序运行后什么提示也没有,是对是错,什么提示都没有,就是白白的一页,下面提示栏中一个done,到gmail里看,没有邮件有收到,在ie 6和firefox 3.6中测了几次,都是样的结果。很奇怪,出错也应该有个提示才对,发不出,连不上,提示也要有呀,什么都没有,只是邮件没收到,这是什么原因呢?我刚才也在你的邮件里给了你封回复,说的也是这样,但不知如何解决,请再深入帮助解决一下,谢谢。
      

  15.   

    在smtp.class.php文件中搜索"fsockopen"去掉前面的@,或者输出$errstr看看
      

  16.   

    我打开文件搜索了一下,那个fsockopen前,原来就是没有加@符号的,程序里想输出$errstr,却输不出来,我在程序里打了断点调试,到if mail.send前,都还是正确运行且可以输出的,就是一个send,后面什么都不运行了,我把send段输出段改写如下:if(!$mail->Send()) {
    echo "ddd";
    echo $errstr;
      //echo $mail->ErrorInfo;
    }else{
    echo "ddd";
    echo $errstr;
    //echo 'Send OK!';
    }就是这样,那个最简单的ddd字符串也输出不出来,更不用说是$errstr了,然而在前一句,就可以正确输出,这又是在哪里可能存在的问题呢?现在还需怎样改或测试?请指教,谢。
      

  17.   

    测试结果出来了,它为空值,显示结果为“aaabbbccc$errstr=”就是从它之后出不来,还有ddd也出不来,那么,它为空值代表什么含义呢?下一步继续怎样测呢?
      

  18.   


        $this->smtp_conn = fsockopen($host,    // the host of the server
                                     $port,    // the port to use
                                     $errno,   // error number if any
                                     $errstr,  // error message if any
                                     $tval);   // give up after ? secs
    var_dump($this->smtp_conn);//这块
    echo '<br<', $host, '<br>', $port, '<br>', $errno, '<br>', 'errstr:'.$errstr, '<br>', $tval, '<br>';//这块输出的东西弄出来看看
      

  19.   

    终于出现不同的结果了,在ie6中:aaabbbcccsmtp.gmail.com
    465
    0
    errstr:
    10
    在firefox 3.6中:aaabbbcccsmtp.gmail.com
    465
    0
    errstr£º
    10以上数据是否有价值,我接下来还需改哪才可以好呢?
      

  20.   

    不好意思,刚才少开了一句注释,最终再测了几次的结果是:ie6:aaabbbcccresource(4) of type (stream) smtp.gmail.com
    465
    0
    errstr:
    10firefox 3.6:aaabbbcccresource(4) of type (stream) smtp.gmail.com
    465
    0
    errstr£º
    10请帮忙再分析一下,谢谢。
      

  21.   

    我刚刚也确认了我开了ssl,不然就会报错了SMTP Error: Could not connect to SMTP host. SMTP Error: Could not connect to SMTP host.
      

  22.   

    ms_X0828: 您好啊,我的问题还没解决呢,因为连着一个多星期没人回,我以为没人愿意再回答了呢,所以就有一段时间都没上csdn了,近期也忙于做其它程序,所以就没顾上,我把你的gmail程序段上传到远程服务器上后,出现如下提示:SMTP Error: Could not authenticate. SMTP Error: Could not authenticate. 这是何原因,还需要如何改或配置些什么?请赐教,谢谢!
      

  23.   

    经过修改调试后,远程服务器上终于调通了,但每点击发送一次,就向hotmail发4条,向gmail发3条,向163发3条,向sina发2条,这是为什么?是什么地方出了问题?大概需要怎样修改?
      

  24.   

    综合了kyzy_yy_pm发来的代码、本贴上贴出的代码、网上搜索来的其它代码,终于在服务器上用gmail的邮箱调试成功了,本地上虽然不成功,但无所谓,只要服务器上成功,就算是成功了。非常感谢kyzy_yy_pm及ms_X0828两位朋友,决定各发一半分。