2012-03-29 33 views
1

发送这是应该(在我的PHP代码)发送邮件:邮件无法通过形式

$message = 
"Hello \n 
Thank you for registering with us. Here are your login details...\n 

User ID: $user_name 
Email: $usr_email \n 
Passwd: $data[pwd] \n 

"; 

mail($usr_email, "Login Details", $message, 
"From: \"Member Registration\" <[email protected]>\r\n" . 
"X-Mailer: PHP/" . phpversion()); 

header("Location: thankyou.php"); 
exit(); 

这是我的php.ini细节:

; For Win32 only. 
; http://php.net/smtp 
;SMTP = localhost 
; http://php.net/smtp-port 
;smtp_port = 25 

; For Win32 only. 
; http://php.net/sendmail-from 
;sendmail_from = [email protected] 

; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). 
; http://php.net/sendmail-path 
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t" 

; Force the addition of the specified parameters to be passed as extra parameters 
; to the sendmail binary. These parameters will always replace the value of 
;the 5th parameter to mail(), even in safe mode. 
;mail.force_extra_parameters = 

; Add X-PHP-Originating-Script: that will include uid of the script followed by the 
;filename 
mail.add_x_header = Off 

; Log all mail() calls including the full path of the script, line #, to address and 
;headers 
;mail.log = "C:\xampp\apache\logs\php_mail.log" 

和我sendmail.ini

[sendmail] 

smtp_server=smtp.gmail.com 
smtp_port=25 
error_logfile=error.log 
debug_logfile=debug.log 
[email protected] 
auth_password=xxxxxxx 
[email protected] 

我是一个完整的初学者,所以这可能是完全错误的。 当我提交邮件功能的表单时,会显示thankyou.php页面

+0

你试过用var_dump()函数来查看出现了什么错误?如果不尝试将你的邮件函数放入'var_dump(mail(...));' – orustam 2012-04-01 22:22:16

回答

0

检查邮件日志以查看sendmail是否在传递邮件时遇到问题。通常你的应用可以正确地将它发送到sendmail,但是sendmail不能发送它。

+0

nothings出现在php_mail.log中。我确实有水银邮件运行,这就是说:HELO Emzys-PC MAIL FROM:<[email protected]> RCPT TO:<[email protected]> DATA DATA - 31行,627字节。 QUIT 0秒。已关闭,连接已关闭Thu Mar 29 19:58:31 2012 – user1257518 2012-03-29 18:59:40

+0

您是否收到该电子邮件?如果汞认为它已发送,但您从未收到过,请检查下游。也许防火墙或其他软件阻止邮件进入您的xxx.ac.uk邮件处理程序。 – 2012-03-29 19:07:11

+0

没有收到它。我只是想知道为什么汞说QUIT 0秒连接关闭。这是否意味着它失败了? – user1257518 2012-03-29 19:13:07

0

我注意到这个在你的php.ini中:

;仅适用于Unix。您也可以提供参数(默认值:“sendmail -t -i”)。 ; http://php.net/sendmail-path sendmail_path = “\” C:\ XAMPP \ sendmail的\ sendmail.exe \ “-t”

我看这里:

http://digiex.net/guides-reviews/guides-tutorials/application-guides/544-configuring-php-under-windows-use-gmail-external-smtp-server-ssl.html

,发现sendmail的路径是这样定义的:

sendmail_path = “C:\的Inetpub \ sendmail的\ sendmail.exe -t”

据我所知,你真的不应该需要这些额外的报价和斜杠所使用。我会尝试上面的格式,并检查你的sendmail日志,看它是否出错。