php xampp mail()函数不工作 [英] php xampp mail() function not working

查看:119
本文介绍了php xampp mail()函数不工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用php(xampp)从我的Gmail帐户发送电子邮件。
我搜索stackoverflow,并且我得到的东西我改变了我的xampp文件sendmail.ini和php.ini as,



在C:\xampp\\ \\php\php.ini我从行的开头删除分号 extension = php_openssl.dll ,使SSL可以用于本地主机的gmail。



在php.ini文件中的[邮件功能]我更改了

  SMTP = smtp.gmail .com 
smtp_port = 25
sendmail_from = mukul.agrawal19@gmail.com
sendmail_path =\C:\xampp\sendmail\sendmail.exe\-t

然后在C:\xampp\sendmail\sendmail.ini中。我用以下代码替换了sendmail.ini中的所有现有代码。

  [sendmail] 

smtp_server = smtp.gmail.com
smtp_port = 25
error_logfile = error.log
debug_logfile = debug.log
auth_username = mukul.agrawal19@gmail.com
auth_password = my -gmail-password
force_sender=mukul.agrawal19@gmail.com

然后我写了一个简单邮件功能

 <?php 
$ to ='mukulagrawal13@live.com';
$ subject ='测试电子邮件';
$ message =Hello World!\\\
\\\
这是我的第一封邮件。
$ headers =From:mukul.agrawal19@gmail.com\r\\\
Reply-To:mukul.agrawal19@gmail.com;
$ mail_sent = @mail($ to,$ subject,$ message,$ headers);
echo $ mail_sent? 邮件发送:邮件失败;
?>

然后我的浏览器进入此页面,
收到回复为邮件失败。 / p>

我看到我的调试文件,我有

  14/12 / 03 18:24:00 ** --- MESSAGE BEGIN --- 
14/12/03 18:24:00 **至:mukulagrawal13@live.com
14/12/03 18: 24:00 **主题:测试电子邮件
14/12/03 18:24:00 **来自:mukul.agrawal19@gmail.com
14/12/03 18:24:00 **回复:mukul.agrawal19@gmail.com
14/12/03 18:24:00 **
14/12/03 18:24:00 ** Hello World!
14/12/03 18:24:00 **
14/12/03 18:24:00 **这是我的第一封邮件。
14/12/03 18:24:00 ** --- MESSAGE END ---
14/12/03 18:24:01 **连接到smtp.gmail.com:25
14/12/03 18:24:08 **已连接。
14/12/03 18:24:08<< 220 mx.google.com ESMTP o17sm23150442pdn.33 - gsmtp< EOL>
14/12/03 18:24:08>> EHLO Mukul-PC&EOL
14/12/03 18:24:10<< 250-mx.google.com在您服务时,[223.186.182.29]< EOL> 250-尺寸35882577< EOL> 250-8BITMIME< EOL> 250-STARTTLS< EOL> 250-增强型细胞< EOL" 250-管道& ; 250-CHUNKING< EOL> 250 SMTPUTF8< EOL>
14/12/03 18:24:10 **认证为mukul.agrawal19@gmail.com
14/12/03 18:24:10>> STARTTLS< EOL>
14/12/03 18:24:12<< 220 2.0.0准备启动TLS< EOL>
14/12/03 18:24:14>> QUIT< EOL>

许多未知语言的代码。

14/12/03 18:21:47 **断开连接。
14/12/03 18:21:47 **断开与smtp.gmail.com:25
14/12/03 18:21:47 **断开连接。
14/12/03 18:21:47 **断开连接。
14/12/03 18:21:47 **连接正常。

我没有得到什么问题。

解决方案

好的,我得到了这个工作。不幸的是没有TLS,因为587端口在我们的网络被阻止,所以我不得不使用端口465.但我预计TLS也将工作。



我使用XAMPP 5.6。 3。



Sendmail配置:

  [sendmail] 
smtp_server = smtp.gmail.com
smtp_port = 465
smtp_ssl = auto
error_logfile = error.log
debug_logfile = debug.log
auth_username == *** **@gmail.com
auth_password = *********
force_sender=*****@gmail.com

PHP配置:

  [邮件功能] 
SMTP = smtp.gmail.com
smtp_port = 465
sendmail_from = *****@gmail.com
sendmail_path =\c:\xampp\sendmail\sendmail .exe \-t

代码:

 <?php 
$ to ='repicient@example.com';
$ subject ='测试电子邮件';
$ message =Hello World!\\\
\\\
这是我的第一封邮件。
$ headers =From:*****@gmail.com\r\\\
Reply-To:*****@gmail.com;
$ mail_sent = @mail($ to,$ subject,$ message,$ headers);
echo $ mail_sent? 邮件发送:邮件失败;
?>

重要提示:



您将需要在GMAIL中启用SMTP访问,您还需要允许不安全的客户端:



https://www.google.com/settings/security/lesssecureapps
https://support.google.com/mail/answer/75726



请注意您要使用的smtp端口在您的防火墙中打开!我建议您尝试使用雷鸟从您的开发机器进行连接检查。那么你知道客户端是否可以连接。



这是我的结果:

 code> 14/12/03 12:19:32 ** --- MESSAGE BEGIN --- 
14/12/03 12:19:32 ** To:***** @ example .com
14/12/03 12:19:32 **主题:测试电子邮件
14/12/03 12:19:32 **来自:******@gmail.com
14/12/03 12:19:32 **回复:******@gmail.com
14/12/03 12:19:32 **
14/12/03 12:19:32 **你好世界!
14/12/03 12:19:32 **
14/12/03 12:19:32 **这是我的第一封邮件。
14/12/03 12:19:32 ** --- MESSAGE END ---
14/12/03 12:19:34 **连接到smtp.gmail.com:465
14/12/03 12:19:34 **已连接。
14/12/03 12:19:34<< 220 mx.google.com ESMTP pl1sm22468617wic.16 - gsmtp< EOL>
14/12/03 12:19:34>> EHLO vm-test-03.devnet.local< EOL>
14/12/03 12:19:35<< 250-mx.google.com在您的服务中,[xxx.xxx.xxx.xxx]< EOL> 250-SIZE 35882577< EOL> 250-8BITMIME< EOL> 250-AUTH登录平台XOAUTH XOAUTH2普通话客户端OAUTHBEARER< EOL& ; 250增强稳定剂< EOL> 250管道< EOL> 250-CHUNKING< EOL> 250 SMTPUTF8< EOL>
14/12/03 12:19:35 **认证为****@gmail.com
14/12/03 12:19:35>> AUTH LOGIN< EOL>
14/12/03 12:19:35<< 235 2.7.0接受< EOL>
14/12/03 12:19:35>> MAIL FROM:< ***** @ gmail.com>< EOL>
14/12/03 12:19:35<< 250 2.1.0 OK pl1sm22468617wic.16 - gsmtp< EOL>
14/12/03 12:19:35>> RCPT TO:< repicient@example.com.de>< EOL>
14/12/03 12:19:35<< 250 2.1.5 OK pl1sm22468617wic.16 - gsmtp< EOL>
14/12/03 12:19:35>> DATA< EOL>
14/12/03 12:19:35<< 354 Go ahead pl1sm22468617wic.16 - gsmtp< EOL>
14/12/03 12:19:35>>日期:Wed,3 Dec 2014 12:19:35 -0800< EOL>
14/12/03 12:19:35>>至:repicient@example.com< EOL>
14/12/03 12:19:35>>主题:测试电子邮件< EOL>
14/12/03 12:19:35>>来自:***** @ gmail.com< EOL>
14/12/03 12:19:35>>回覆:***** @ gmail.com< EOL>
14/12/03 12:19:35>> < EOL>
14/12/03 12:19:35>> Hello World!< EOL>
14/12/03 12:19:35>> < EOL>
14/12/03 12:19:35>>这是我的第一封邮件。< EOL>
14/12/03 12:19:35>> < EOL>
14/12/03 12:19:36<< 250 2.0.0 OK 1417637977 pl1sm22468617wic.16 - gsmtp< EOL>
14/12/03 12:19:36>> QUIT< EOL>
14/12/03 12:19:36<< 221 2.0.0关闭连接pl1sm22468617wic.16 - gsmtp< EOL>
14/12/03 12:19:36 **断开与smtp.gmail.com:465
14/12/03 12:19:36 **断开连接。
14/12/03 12:19:36 **断开连接。


I am trying to send emails from my gmail account using php (xampp). I search over stackoverflow and as I got the things I changed my xampp's files sendmail.ini and php.ini as,

In C:\xampp\php\php.ini I removed the semicolon from the beginning of the line extension=php_openssl.dll to make SSL working for gmail for localhost.

in php.ini file under [mail function] I changed

SMTP=smtp.gmail.com
smtp_port=25
sendmail_from = mukul.agrawal19@gmail.com
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"

Then in C:\xampp\sendmail\sendmail.ini. I replaced all the existing code in sendmail.ini with following code

[sendmail]

smtp_server=smtp.gmail.com
smtp_port=25
error_logfile=error.log
debug_logfile=debug.log
auth_username=mukul.agrawal19@gmail.com
auth_password=my-gmail-password
force_sender=mukul.agrawal19@gmail.com

then I wrote a simple mail function

<?php
$to = 'mukulagrawal13@live.com';
$subject = 'Test email'; 
$message = "Hello World!\n\nThis is my first mail."; 
$headers = "From: mukul.agrawal19@gmail.com\r\nReply-To: mukul.agrawal19@gmail.com";
$mail_sent = @mail( $to, $subject, $message, $headers );
echo $mail_sent ? "Mail sent" : "Mail failed";
?>

then went on the this page by my browser, got echo as Mail Failed.

I saw my debug file and I got

14/12/03 18:24:00 ** --- MESSAGE BEGIN ---
14/12/03 18:24:00 ** To: mukulagrawal13@live.com
14/12/03 18:24:00 ** Subject: Test email
14/12/03 18:24:00 ** From:mukul.agrawal19@gmail.com
14/12/03 18:24:00 ** Reply-To:mukul.agrawal19@gmail.com
14/12/03 18:24:00 ** 
14/12/03 18:24:00 ** Hello World!
14/12/03 18:24:00 ** 
14/12/03 18:24:00 ** This is my first mail.
14/12/03 18:24:00 ** --- MESSAGE END ---
14/12/03 18:24:01 ** Connecting to smtp.gmail.com:25
14/12/03 18:24:08 ** Connected.
14/12/03 18:24:08 << 220 mx.google.com ESMTP o17sm23150442pdn.33 - gsmtp<EOL>
14/12/03 18:24:08 >> EHLO Mukul-PC<EOL>
14/12/03 18:24:10 << 250-mx.google.com at your service, [223.186.182.29]<EOL>250-SIZE 35882577<EOL>250-8BITMIME<EOL>250-STARTTLS<EOL>250-ENHANCEDSTATUSCODES<EOL>250-PIPELINING<EOL>250-CHUNKING<EOL>250 SMTPUTF8<EOL>
14/12/03 18:24:10 ** Authenticating as mukul.agrawal19@gmail.com
14/12/03 18:24:10 >> STARTTLS<EOL>
14/12/03 18:24:12 << 220 2.0.0 Ready to start TLS<EOL>
14/12/03 18:24:14 >> QUIT<EOL>

lots of codes in unknown language.

14/12/03 18:21:47 ** Disconnected.
14/12/03 18:21:47 ** Disconnecting from smtp.gmail.com:25
14/12/03 18:21:47 ** Disconnected.
14/12/03 18:21:47 ** Disconnected.
14/12/03 18:21:47 ** Connection Closed Gracefully.

I am not getting whats the problem.

解决方案

Ok, I got this working. Unfortunately not with TLS, because Port 587 is blocked in our network so I had to use Port 465. But I expect that TLS will also work.

I used XAMPP 5.6.3.

Sendmail config:

[sendmail]
smtp_server=smtp.gmail.com
smtp_port=465
smtp_ssl=auto
error_logfile=error.log
debug_logfile=debug.log
auth_username==*****@gmail.com
auth_password=*********
force_sender=*****@gmail.com

PHP config:

[mail function]
SMTP=smtp.gmail.com
smtp_port=465
sendmail_from = *****@gmail.com
sendmail_path = "\"c:\xampp\sendmail\sendmail.exe\" -t"

Code:

<?php
$to = 'repicient@example.com';
$subject = 'Test email'; 
$message = "Hello World!\n\nThis is my first mail."; 
$headers = "From: *****@gmail.com\r\nReply-To: *****@gmail.com";
$mail_sent = @mail( $to, $subject, $message, $headers );
echo $mail_sent ? "Mail sent" : "Mail failed";
?>

Important:

You will need to enable SMTP access in GMAIL, also you need to allow unsecure clients:

https://www.google.com/settings/security/lesssecureapps https://support.google.com/mail/answer/75726

Be aware that the smtp port you want to use is open in your firewall! I suggest to try a connection check from your dev machine with thunderbird. Then you know if the client is able to connect.

This is my result:

14/12/03 12:19:32 ** --- MESSAGE BEGIN ---
14/12/03 12:19:32 ** To: *****@example.com
14/12/03 12:19:32 ** Subject: Test email
14/12/03 12:19:32 ** From: ******@gmail.com
14/12/03 12:19:32 ** Reply-To: ******@gmail.com
14/12/03 12:19:32 ** 
14/12/03 12:19:32 ** Hello World!
14/12/03 12:19:32 ** 
14/12/03 12:19:32 ** This is my first mail.
14/12/03 12:19:32 ** --- MESSAGE END ---
14/12/03 12:19:34 ** Connecting to smtp.gmail.com:465
14/12/03 12:19:34 ** Connected.
14/12/03 12:19:34 << 220 mx.google.com ESMTP pl1sm22468617wic.16 - gsmtp<EOL>
14/12/03 12:19:34 >> EHLO vm-test-03.devnet.local<EOL>
14/12/03 12:19:35 << 250-mx.google.com at your service, [xxx.xxx.xxx.xxx]<EOL>250-SIZE 35882577<EOL>250-8BITMIME<EOL>250-AUTH LOGIN PLAIN XOAUTH XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER<EOL>250-ENHANCEDSTATUSCODES<EOL>250-PIPELINING<EOL>250-CHUNKING<EOL>250 SMTPUTF8<EOL>
14/12/03 12:19:35 ** Authenticating as ****@gmail.com
14/12/03 12:19:35 >> AUTH LOGIN<EOL>
14/12/03 12:19:35 << 235 2.7.0 Accepted<EOL>
14/12/03 12:19:35 >> MAIL FROM: <*****@gmail.com><EOL>
14/12/03 12:19:35 << 250 2.1.0 OK pl1sm22468617wic.16 - gsmtp<EOL>
14/12/03 12:19:35 >> RCPT TO: <repicient@example.com.de><EOL>
14/12/03 12:19:35 << 250 2.1.5 OK pl1sm22468617wic.16 - gsmtp<EOL>
14/12/03 12:19:35 >> DATA<EOL>
14/12/03 12:19:35 << 354  Go ahead pl1sm22468617wic.16 - gsmtp<EOL>
14/12/03 12:19:35 >> Date: Wed, 3 Dec 2014 12:19:35 -0800<EOL>
14/12/03 12:19:35 >> To: repicient@example.com<EOL>
14/12/03 12:19:35 >> Subject: Test email<EOL>
14/12/03 12:19:35 >> From: *****@gmail.com<EOL>
14/12/03 12:19:35 >> Reply-To: *****@gmail.com<EOL>
14/12/03 12:19:35 >> <EOL>
14/12/03 12:19:35 >> Hello World!<EOL>
14/12/03 12:19:35 >> <EOL>
14/12/03 12:19:35 >> This is my first mail.<EOL>
14/12/03 12:19:35 >> .<EOL>
14/12/03 12:19:36 << 250 2.0.0 OK 1417637977 pl1sm22468617wic.16 - gsmtp<EOL>
14/12/03 12:19:36 >> QUIT<EOL>
14/12/03 12:19:36 << 221 2.0.0 closing connection pl1sm22468617wic.16 - gsmtp<EOL>
14/12/03 12:19:36 ** Disconnecting from smtp.gmail.com:465
14/12/03 12:19:36 ** Disconnected.
14/12/03 12:19:36 ** Disconnected.

这篇关于php xampp mail()函数不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆