0

我已经使用 php 邮件表单有一段时间了,现在它不能在新网站上运行。

以下错误结果:

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

这是 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>

有人可以帮我吗?=/

感谢您的耐心等待!

4

3 回答 3

1

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

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

;sendmail_from =

并将此设置更改为此例如(如果是本地主机)

sendmail_from = localhost@localhost

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

于 2013-10-08T09:32:44.017 回答
0

正如它所说,您可能缺少变量From:中的声明$headers

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

$headers到你的弦的顶部附近。尽管为了将来的参考,您可能想看看 PHPMailer Class,这是一个非常好的和安全的类,可以mail有效地处理 PHP。

PHPMailer Github

于 2013-10-08T09:27:19.553 回答
0

您没有设置导致该问题的From标头,正如以下文档中所述。

笔记:

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

不这样做将导致类似于警告的错误消息:mail(): "sendmail_from" not set in php.ini or custom "From:" header missing。From 标头还设置了 Windows 下的 Return-Path。

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

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

$headers = "From: webmaster@example.com" . "\r\n";
于 2013-10-08T09:27:46.207 回答