PHP Mail导致错误:“标头丢失”

时间:2013-10-08 09:23:44

标签: php forms email

我一直在使用php邮件表格已有一段时间了,现在它还没有在新网站上运行。

以下错误结果:

  

PHP警告:mail()[function.mail]:未在php.ini中设置“sendmail_from”或在第16行的E:\ home \ -mypagefoldername- \ Web \ form.php中缺少自定义“From:”标头

这是form.php文件中的php代码:

<?
$mensagem = "Nome: ".$_POST['nome']." \n";
//email que o usuário preencheu
$mensagem .= "Email: ".$_POST['email']." \n";
$mensagem .= "Assunto: ".$_POST['assunto']." \n";
$mensagem .= "Telefone: ".$_POST['fone']." \n";
$mensagem .= "Endereço: ". $_POST['mensagem'];
$headers = "";
//email do seu domínio hospedado
$emailsender = "email@mydomain.com";
//email de quem vai receber
$emaildestinatario = "email@mydomain.com";
$assunto = "Mensagem do Parceiro Pipa";

// Envio dos dados do Formulário para seu e-mail:
if(!mail($emaildestinatario, $assunto, $mensagem, $headers ,"-r".$emailsender))

{ 
// Se for Postfix - hospedagem linux
$headers .= "Return-Path: " . $emailsender . $quebra_linha; 
}
echo '
<script type="text/JavaScript">
alert("Email sent! Thank you!");
location.href="index.html"
</script>
';

?>

对葡萄牙语感到抱歉。

表单页面是一个简单的html页面,其中包含以下表单代码:

<form method="post" action="form.php">

                    <label>Nome</label>
                    <input name="nome" placeholder="Nome completo.">

                    <label>Telefone</label>
                    <input name="fone" placeholder="Número de telefone com DDD.">                    

                    <label>Assunto</label>
                    <input name="assunto" placeholder="Qual o motivo do seu contato?">                    

                    <label>Mensagem</label>
                    <textarea name="mensagem" placeholder="Escreva aqui sua mensagem."></textarea>



                    <label>Email</label>
                    <input name="email" type="email" placeholder="Email para contato.">

                    <input id="submit" name="submit" type="submit" value="Enviar">

</form>
有人可以帮帮我吗? = /

感谢您的耐心等待!

3 个答案:

答案 0 :(得分:0)

正如它所说,您可能错过了From:变量中的$headers声明!

<?php
   $From = "YourEmailAddress@example.com";
   $headers .= "From: Your Name <". $From .">\n";
?>

靠近$headers字符串的顶部。虽然为了将来参考,你可能想看看PHPMailer Class,一个非常好的&amp;有效处理PHP mail的安全类。

PHPMailer Github

答案 1 :(得分:0)

您没有设置 From 标头,导致该问题,完全按照以下文档中的说明进行。

  

注意:

     

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

     

如果不这样做,将导致类似于警告的错误消息:   mail():“sendmail_from”未在php.ini中设置或自定义“From:”标题   失踪。 From标头还设置了Windows下的Return-Path。

来自http://php.net/manual/en/function.mail.php

在您的情况下,您应该使用;

$headers = "From: webmaster@example.com" . "\r\n";

答案 2 :(得分:0)

请更改php.ini文件中的以下设置

要启用电子邮件,您应该取消注释以下行或在行的开头删除分号

;sendmail_from =

并将此设置更改为此示例(如果是localhost)

sendmail_from = localhost@localhost

如果您在生产服务器上,则必须根据您的域更改默认地址,因此administrator@domain.com