作者liveoutmyway (friend forever)
看板PHP
标题[请益] 用mail()成功,但PHPMailer和PEAR::mail发信失败!
时间Wed Sep 1 00:30:43 2010
在下我边看书
边照范例执行
按照书上执行mail()很成功
一开始PHPMailer失败还不以为意
没想到後来连PEAR::mail 都不行
才发现情况严重...
因为後面不少章节范例都有用到PEAR::mail寄信的设定
结果遇到窘境跳脱不出来
这个问题困扰了我好几天了
如果是程式语法理解能力太差
结果卡住的问题我还能接受
没想到会卡在设定上..
但我都是按照书上的去设定不知道哪出了问题?
-------------------骗钱的分隔线-------------------
这本书是用WAMP5架设Apache和MySQL
目前安装的是WAMP5_1.72版 PHP5.2.3版
(和用过的AppServ不同的是有2个php.ini
分别在
C:\wamp\php\php.ini ==>不知道有啥用,但书上还是会设定到这个
C:\wamp\Apache2\bin\php.ini ==>我只知道这个Apache伺服器会用到 )
一般用mail()
书上按照下列设定php.ini就可以成功寄信了
(2个php.ini都有设定)
------------------------------------
[mail function]
; For Win32 only.
SMTP = smtp.tbcnet.net ===>是用TBC台湾宽频通讯的网路
; For Win32 only.
sendmail_from = 我的信箱@mail.tbcnet.net
------------------------------------------
後来PHPMailer的用法
书上只说把下载完档案中的"class.phpmailer.php" 和"class.smtp.php"
复制到寄信网页的程式资料夹
我就和范例一起都放在C:\wamp\www 资料夹
-----------------------------------------------
书上光碟的范例 只改了"=>"指的地方
第5行改了 SMTP
第6.7.8行书上说不用验证可省略
第11行就是TBC帐号的信箱
1. $mail = new PHPMailer; // 引入类别档
2.
3. // 所使用的邮件伺服器设定
4. $mail->IsSmtp(); // 使用 SMTP 伺服器寄信
=> 5. $mail->Host = "smtp.tbcnet.net"; // SMTP伺服器网址
=> 6. //$mail->SMTPAuth = true; // SMTP伺服器是否要求验证
=> 7. //$mail->Username = "foo"; // SMTP 帐号
=> 8. //$mail->Password = "123456"; // SMTP 密码
9.
10. // 寄件人与发送格式设定
=>11. $mail->From = '我的信箱@mail.tbcnet.net';
12. $mail->FromName = '旗标出版股份有限公司';
13. $mail->WordWrap = 72; // 超过 72 个字元就换行
14. $mail->CharSet = 'utf-8'; // 使用 UTF-8 编码
15. $mail->Subject = $_POST['subject']; // 使用者输入的主旨
16. $mail->Body = $_POST['body']; // 使用者输入的信件内容
我查过使用mail()成功寄信TBC的SMTP不用验证
错误提示为
Language string failed to load: recipients_failed 信箱@gmail.com
^^^^^^^^^^^^^^收件者
但是後来尝试把TBC信箱的帐号密码打进去了
还是一样,错误提示只多了"寄送失败:"的字样
寄送失败:
Language string failed to load: recipients_failed 信箱@mail.tbcnet.net
^^^^^^^^^^^^^收件者
google上有查"错误提示"相关资料 说我的信箱格式不对??
信箱还是复制贴上的应该不会打错阿!!
----以下为google的错误说明(主要还是中文看的懂为主,就先看有中文的)----------
没有定义发送邮箱$mail->From或格式不正确,
错误提示:Language string failed to load: recipients_failed
[email protected],
注意,这个配置一定要正确,而且是正确的邮箱
-------------------------------------------------------------------------
再来就是书中大量提到的重头戏PEAR::Mail
按照书上的设定更改Apache用的php.ini
C:\wamp\Apache2\bin\php.ini
-----------------------------
; Paths and Directories ;
; Windows: "\path1;\path2"
include_path = ".;c:\wamp\php\pear;C:\wamp\php\Smarty\libs"
^^^^^^^目前用到Smarty之後才加进去的
----------------------------------------------------------------------
按照书上的范例我也是只输入了SMTP和我的信箱而已..
第1行输入TBC的SMTP
第2.3.4行省略不用
第11行输入TBC的信箱
=> 1. $params = array('host' => 'smtp.tbcnet.net');
=> 2. //'auth' => true,
=> 3. //'username' => 'foo', // SMTP 帐号
=> 4. //'password' => '123456'); // SMTP 密码
5. $mailer = &Mail::factory('smtp',$params); // 建立使用SMTP的物件
6.
7. mb_internal_encoding('utf-8'); // 指定编码格式
8. $headers = array( // 设定档头资讯
9. // 用 mb_encode_mimeheader() 将寄件人中的字串
10. // 转成符合 SMTP 通讯协定要求的格式
=> 11. 'From' => ' <我的信箱@mail.tbcnet.net>',
12. 'To' => $_POST['to'],
13. // 用 mb_encode_mimeheader() 将邮件标题
14. // 转成符合 SMTP 通讯协定要求的格式
15. 'Subject' => mb_encode_mimeheader($_POST['subject']),
16. 'Content-Type' => 'text/plain; charset="UTF-8"',
17. 'Content-Transfer-Encoding' => '8bit');
错误提示为
(之後将第2.3.4行的帐号密码输入错误提示还是一样)
----------------------------------
寄送失败:Failed to add recipient:
@localhost [SMTP: Invalid response code received from server
(code: 501, response: <@localhost>: no local part)]
------------------------------------------------------
用google查"SMTP Error 501"
(不知道有没有人想看原文的我可以在PO上来)
英文用google翻译完大概是
"该命令是正确的,确认,但参数(参数,如电子邮件 地址)是无效的。"
"在绝大多数情况下是由於SMTP错误501
由无效的电子邮件地址,一个无效的域名 收件人,
或一个Unix / Linux的发送邮件命令 不按照既定的标准。"
"如果你写你自己的SMTP程序,而不是使用 建立的SMTP软件,
你可能会得到一个501错误,
如果你 发送到收件人驻留在一个Microsoft Exchange服务器
并添加一个尾随空格或点到域名 你的程序代码。
在这种情况下,你通常会得到 一个 “501 5.5.4无效的地址”错误。"
"最後,如果你传入的电子邮件病毒扫描在Exchange 服务器,
与防病毒扫描软件集成到 兑换,那麽问题可能是一个错误在你的防毒软体-
尝试将其关闭,看看问题能否解决。"
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^小红伞关了没啥差别.
------------------------------------------------------------------
不晓得有没有可能是软体版本的问题?
目前按照书上安装的是WAMP5_1.72版 PHP5.2.3版
书上也说pear 套件之间有依存性
一并附上全部安装的套件
可能版本还是哪个套件没装好?
PACKAGE VERSION STATE
Archive_Tar 1.3.7 stable
Console_Getopt 1.2.3 stable
Date 1.4.7 stable
MDB2 2.4.1 stable
MDB2_Driver_mysql 1.4.1 stable
Mail 1.2.0 stable
Mail_Mime 1.8.0 stable
Net_SMTP 1.4.2 stable
Net_Socket 1.0.9 stable
PEAR 1.9.1 stable
Pager 2.4.8 stable
Structures_Graph 1.0.3 stable
XML_Util 1.2.1 stable
---------------------------------------------------
目前是考虑到软体版本?
或是TBC的SMTP的问题?
或是书中的设定有遗漏的地方?
这个问题卡住了我好几天了
现在还在找解决的办法...
如果都两个问题都能解决的话那当然是最好的情况 :)
但没那麽多心力指点两个问题的话
目前优先希望解决的是PEAR::Mail的问题
(主要也是书上PHPMail只有提到一小节,後面比较多PEAR::Mail相关的范例讲解)
已经尝试找google和板上的解决方法
可能是关键字没用对或是卡在某个症结点没发现
希望劳烦各位板友不吝指教,协助解惑
谢谢
-------------------end-------------------
ps.若觉得PO太长不易阅读的话
我可以修成两篇
或是把比较紧急的PEAR::Mail的问题留着就好
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.110.129.251
※ 编辑: liveoutmyway 来自: 123.110.129.251 (09/06 03:21)