PHP邮件不发送电子邮件

时间:2016-03-03 06:10:45

标签: php email

PHP邮件功能不起作用,我无法从我的域test@test.com收到电子邮件。它在几天之前就完美地运行了,但现在还没有。

尝试了Stack Overflow上的所有解决方案,但仍未解决。

HTML表单代码:1.html

<form method="post" name="from" action="2.php">
Company Name : <input type="text" name="cname"><input type="submit" value="submit" name="submit">
</form>

PHP邮件代码:2.php

<?php
if(isset($_POST['submit']))
{
    $cname=trim($_POST['cname']);       
    //$cname='"'.$cname.'"';
    echo $cname;
     /* mail to Admin */
        $to = 'test@test.com';
        $subject = 'Details : From $cname';

        $headers = "MIME-Version: 1.0" . "\r\n";
        $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
        $headers = 'From: $cname';

        $message = 'Company name : $cname';
    if(mail($to, $subject, $message, $headers))
        {

                echo "Mailer sent!";
            } else {
                echo "Message Error:";
            }
}
?>

2 个答案:

答案 0 :(得分:0)

<强> EDIT2:

以下是我测试并正在运行的确切代码。

  <?php
    if(isset($_POST['submit']))
    {
        $cname=trim($_POST['cname']);       
        //$cname='"'.$cname.'"';
        echo $cname;
         /* mail to Admin */
            $to = 'test@test.com';
            $subject = 'Details : From '.$cname;
            $headers = 'From: '.$cname;
            $message = 'Company name : '.$cname;
        if(mail($to,$subject,$message,$headers))
            {

                echo "Mailer sent!";
            } else {
                echo "Message Error:";
            }
    }
    ?>

除了标题变量中的额外空格之外,我改变的唯一另一件事是变量与输入数据($ cname)的串联。

电子邮件仍会在没有连接更改的情况下发送,但会显示“$ cname”而不是输入的数据。

编辑:对于标头变量:

 $headers = 'From : $cname';

实际应该是:

 $headers = 'From: $cname';

我没有注意到From和:之间的额外空间,但是在我测试之后我注意到了它。除非删除了空格,否则未收到电子邮件。

试试这个。

此外,如果发送消息,则mail函数的if语句将触发为true。所以你想交换回波线,因为“​​错误”输出应该在else部分下面。

  <?php
    if(isset($_POST['submit']))
    {
        $cname=trim($_POST['cname']);       
        //$cname='"'.$cname.'"';
        echo $cname;
         /* mail to Admin */
            $to = 'test@test.com';
            $subject = 'Details : From $cname';
            $headers = 'From: $cname';
            $message = 'Company name : $cname';
        if(mail($to,$subject,$message,$headers))
            {

                echo "Mailer sent!";
            } else {
                echo "Message Error:";
            }
    }
    ?>

答案 1 :(得分:0)

你的2.php应该是这样的:(你在错误的地方打印信息)

$ to应该是一些可以查看电子邮件的工作电子邮件地址。它也适用于LIVE服务器。大部分都没有使用localhost。

<?php
if(isset($_POST['submit']))
{
    $cname=trim($_POST['cname']);       
    //$cname='"'.$cname.'"';
    echo $cname;
     /* mail to Admin */
        $to = 'test@test.com';  
        $subject = 'Details : From $cname';
        $headers  = 'MIME-Version: 1.0' . "\r\n";
        $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
        $headers .= 'From: ' . strip_tags($cname) . "\r\n";
        $message = 'Company name : $cname';
    if(mail($to,$subject,$message,$headers))
        {
           echo "Message sent!"; 
        } else {

            echo "Mailer Error: ";
        }
}
?>