douwo1517 2014-12-03 13:37
浏览 77
已采纳

PHP xampp mail()函数无效

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!

This is my first mail."; 
$headers = "From: mukul.agrawal19@gmail.com
Reply-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.

  • 写回答

1条回答 默认 最新

  • doulingqiu4349 2014-12-03 14:07
    关注

    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!
    
    This is my first mail."; 
    $headers = "From: *****@gmail.com
    Reply-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.
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效