【问题标题】:PHP email SMTP server response: 554PHP 电子邮件 SMTP 服务器响应:554
【发布时间】:2013-02-15 01:11:03
【问题描述】:

朋友,我有这个 php 代码:

$emailTo = 'proyectogoyapatrimonio@gmail.com';
$subject = "Firma // Salvemos el Goya";
$name=$_REQUEST['nombre'];
$apellido=$_POST['apellido'];
$dni=$_POST['dni'];
$email=$_POST['mail'];
$msg=$_POST['msg'];

$ask = "INSERT INTO firmas(nombre,apellido,dni,email,created_at) VALUES('".htmlentities($name)."','".htmlentities($apellido)."','".$dni."','".$email."','".date("Y-m-d H:i:s")."')";
if(mysql_query($ask,$conn)){
    $body = "<html>\n";
    $body .="<head></head>\n";
    $body .="<body>\n";
    $body .="<h4>Firma ProyectoGoya</h4><br/>\n";
    $body .="<h5>Datos:</h5>\n";
    $body .="<b>Nombre Completo:</b> ".$name." ".$apellido." <br/>\n";
    $body .="<b>E-mail:</b> ".$email." <br/>\n";
    $body .="<b>DNI:</b> ".$dni." <br/>\n";
    $body .="</body>\n";
    $body .= "</html>\n";

    $headers = "From: \"".$name."\" <$email>\n";
    $headers .= "To: \"Proyecto Goya\" <".$emailTo.">\n";
    $headers .= "Return-Path: <".$email.">\n";
    $headers .= "MIME-Version: 1.0\n";
    $headers .= "Content-Type: text/HTML; charset=ISO-8859-1\n"; 

    echo $headers."<br/>";

    mail($emailTo, $subject, $body, $headers);
}else{
    echo "Imposible salvar registro en DB.\n Intente nuevamente. \n Si el error persiste, contacte al proovedor del servicio.";
}   

现在,问题是,当我向这个 php 发送一个包含所有需要变量的 POST 请求时,我收到了这个错误:

Warning: mail() [function.mail]: SMTP server response: 554 Debe utilizar como remitente una cuenta de correo v�lida. in \\hmfsw\web\DTC001\proyectogoya.org\public_html\send.php on line 36

我已经回应了 $headers,我明白了:

From: "Pablo" To: "Proyecto Goya" Return-Path: MIME-Version: 1.0Content-Type: text/HTML; charset=ISO-8859-1

如您所见,我没有收到打印在标题上的“发件人”电子邮件。 知道为什么会发生这种情况吗?

谢谢!

【问题讨论】:

  • 我已经读过了。我试图弄清楚为什么它没有在 $headers 上打印 $email。谢谢
  • 您确定 $email 设置正确吗?此外,请尝试过滤您的数据,以便用户无法在 $email 中输入电子邮件地址以外的其他内容。
  • 我确定。如果我将它与 $headers 分开,它就会被打印出来。但不在 $headers 中。与 $emailTo 相同
  • 试试echo $email." -- ".$headers."&lt;br/&gt;"; 我很确定在--之前什么都不会。

标签: php


【解决方案1】:

让你的代码更好看:

确保您发送的电子邮件具有标头和转换器返回路径。

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'Return-Receipt-To: '.$email.'\r\n'; 

$headers .= 'To: Proyecto Goya <'.$emailTo.'>\r\n';
$headers .= 'From: '.$name.' <'.$email.'>' . '\r\n';

对于错误 554,尝试更改 php.ini 文件:

[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25

; For Win32 only.
;sendmail_from = admin@localhost

或者试试

[mail function]
; For Win32 only.
SMTP = smtp.srv.net
smtp_port = 25

; For Win32 only.
;sendmail_from = from@srv.net

【讨论】:

    猜你喜欢
    • 2014-03-30
    • 1970-01-01
    • 2014-10-26
    • 2021-10-01
    • 2021-05-15
    • 2018-10-17
    • 1970-01-01
    相关资源
    最近更新 更多