【问题标题】:Warning: mail() [function.mail]: SMTP server response: 550 Invalid recipient:警告:mail() [function.mail]:SMTP 服务器响应:550 收件人无效:
【发布时间】:2012-03-10 16:41:27
【问题描述】:

我正在创建一个“忘记密码”页面,用户在其中输入他们的电子邮件地址,脚本会找到与该电子邮件关联的密码,并将其发送到存储的电子邮件地址。

我认为问题与我的 SMTP 邮件服务器有关。我正在使用没有的 WAMP,所以我下载了一个免费的。

这是我正在使用的 php 脚本:

    $id = checkEmail($email);
    $record = readMemberRecord($id);
    $password = @mysql_result($record,0,'cred');

    if($password){
        $email_subject = "Email Request";
        $email_body = "Your password is ".$password.".";
        $header = "NinjaMan";
        mail($email, $email_subject, $email_body,$header);
        $msg = "Your password has been sent to ".$email.".";
    }else{
        $msg = "Sorry, the email ".$email." wasn't found.";
    }

$msg 输出正确,所以我知道代码正在传递邮件函数。

【问题讨论】:

  • 如果错误消息“无效收件人”后面没有电子邮件地址,我敢打赌 $email 变量为空。
  • var_dump 你的变量,看看它们是否是你期望它们首先出现的。如果是,那么问题可能出在您的 SMTP 配置上,在这种情况下,您可能希望在 serverfault 上发布。
  • 它不是空的。正在输出第二个 if 语句中的 $msg 变量。它带有 $email 变量并正确显示。 "$msg = "您的密码已发送到 ".$email.".";"工作。
  • 您是否尝试过使用 telnet 解决此问题?这也可能是端口问题。

标签: php


【解决方案1】:

尝试在$header 中发送正确的“发件人”。

$emailFrom = "admin@yourdomain.com"; // match this to the domain you are sending email from
$email = "example@example.com";
$subject = "Email Request";
$headers = 'From:' . $emailFrom . "\r\n";
$headers .= "Reply-To: " . $email . "\r\n";
$headers .= "Return-path: " . $email;
$message = "Your password is ".$password.".";
mail($email, $subject, $message, $headers);

查看mail() function的详细信息。

如果这不起作用,请尝试使用PHPMailer。您在代码中配置它,无需编辑 php.ini。

我在一些项目中使用过它(v 2.0.4,我看到最新的是 5.1)并且没有任何问题。

【讨论】:

  • 我犯了一个错误并编辑了答案。发件人地址应该是您发送电子邮件的地址。
  • 好的,我想通了。好吧,我发现了一些有用的东西。首先,我下载了 phpMailer 类并将其包含在最顶部的脚本中,如下所示:require_once("PHPMailer_5.2.1/class.phpmailer.php");接下来,我删除了我正在使用的另一个 SMTP,并下载了另一个名为 PostCaster 的 SMTP。在设置过程中,它试图使 SMTP 成为我计算机的名称。我只是在设置为'localhost'后将其更改。最后,我运行了脚本。电子邮件进入 postcaster,我在 post caster 中点击“发送”。
  • 这封邮件立即进入了我的垃圾邮件文件夹。虽然因为谷歌希望我自己的电子邮件地址发送的电子邮件是从谷歌发送的,但它却将其标记为欺诈性电子邮件。所以它有效!我可以将其设置为在收到电子邮件时自动发送,这样我就不必手动发送它们。它还可以定期发送它们。干杯
【解决方案2】:

尝试使用谷歌的服务器发送邮件,你可以看到如何做到这一点here

【讨论】:

  • 如果 xamp 在我的计算机上运行,​​我会尝试这样做。我收到一个错误,说明某个实例已经在运行,并且端口 88 不可访问或类似情况。所以我改用 WAMP。
【解决方案3】:

试试这个

//Email information
$to = "garggarima@gmail.com";
$subject = "Test mail";
$message = "Hello! This is a test email message.";
$from = "support@sltechsoft.com";
$headers = "From:" . $from;

$mail=mail($to,$subject,$message,$headers);
if($mail) {
    echo "Thanks for mail";
} else {
    echo "Mail not Sent";
}

//Email response
echo "Thank you for contacting us!";

【讨论】:

    猜你喜欢
    • 2012-04-16
    • 2014-03-30
    • 2018-05-18
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    相关资源
    最近更新 更多