PHP mail()函数未发送


PHP mail() function is not sending

我正在尝试使用PHP发送电子邮件我使用这个表格:

<form class="pure-form pure-form-aligned" action="contact.php">
    <fieldset>
        <input type="Text" placeholder="Nome" name="Name">
        <input type="email" placeholder="Email" name="email">
         </fieldset>
         <fieldset>
        <button type="Reset" class="pure-button pure-button-primary">Limpar</button>
        <button type="submit" class="pure-button pure-button-primary">Enviar</button>
        </fieldset>
</form>

这个php代码

<?php
$headers  = 'MIME-Version: 1.0' . "'r'n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "'r'n";
$field_name = $_POST['cf_name'];
$field_email = $_POST['cf_email'];
$mail_to = 'nelson.maia@geralucros.com';
$subject = 'GeraRelax: '.$field_name;
$body_message = 'De: '.$field_name."'n";
$body_message .= 'E-mail: '.$field_email."'n";
$headers = 'De: '.$field_email."'r'n";
$headers .= 'Responder para: '.$field_email."'r'n";
$mail_status = @mail($mail_to, $subject, $headers);
if ($mail_status) { ?>
    <script language="javascript" type="text/javascript">
        alert('Obrigado pela contacto.');
        window.location = 'index.php';
    </script>
<?php
}
else { ?>
    <script language="javascript" type="text/javascript">
        alert('Envio falhado');
        window.location = 'index.php';
    </script>
<?php
}
?>

我以前用过,但现在不管用了。我猜这与服务器配置有关?有人能告诉我这件事吗?

您需要添加表单METHOD!

<form class="pure-form pure-form-aligned" action="contact.php" METHOD="POST">

也不见了。添加到标头。

$headers .= 'De: '.$field_email."'r'n";

此外,NOME中的类型应为NAME

<input type="Text" placeholder="Nome" name="Name">

变量名中的打字错误

$field_name = $_POST['name'];
$field_email = $_POST['Email'];

如果您查看PHP手册,您的问题是您错误地创建了mail:http://php.net/manual/pt_BR/function.mail.php//http://php.net/manual/en/function.mail.php

您将看到mail($to, $usbject, $message, $headers);和您的版本没有这样做,您的邮件项目中没有$message值。

同时添加

error_reporting(E_ALL);
ini_set('display_errors', 1);

在代码顶部显示错误消息,这将为您提供更多关于电子邮件发送失败原因的反馈。并从您的邮件功能中删除@,直到您确定它有效为止。


你应该有

 error_reporting(E_ALL);
 ini_set('display_errors', 1);
 ...
 $mail_status = mail($mail_to, $subject, $body_message, $headers); 

建议:

  • 如果可能,请使用UTF-8字符集或UTF-16。

  • 使用专用的Mailer扩展,如PHPMailerSwift Mailer

  • 在代码中添加错误跟踪(如示例所示),直到您确定它有效为止。

  • 每天吃五种新鲜水果和蔬菜。

  • 还从PHP邮件中注意到:

发送邮件时,邮件必须包含"发件人"标头。这可以是使用additional_headers参数设置,或者可以在中设置默认值php.ini.

否则将导致类似"警告"的错误消息:mail():"sendmail_from"未在php.ini或自定义"from:"标头中设置丢失的From标头还设置了Windows下的Return Path。

在此处添加表单方法:

<form class="pure-form pure-form-aligned" action="contact.php">

在此处添加提交按钮名称:

 <button type="submit" name="submit" class="pure-button pure-button-primary">Enviar</button>

将php代码更改为:

<?php if(isset($_POST['submit'])){
   // your code here..
    .
    .
    .
   // change the mail headers..
   $headers .= 'De: '.$field_email."'r'n";    
} ?>