【问题标题】:PEAR::Mail 'failed to add recipient'PEAR::Mail '添加收件人失败'
【发布时间】:2012-05-14 03:51:01
【问题描述】:

这是失败的代码:

require_once "Mail.php";

$host           = "mail.domain.com";
$username       = "USER";
$password       = "PASS";

$mailto     = $name . ' <' . $email . '>';
$subject        = 'My Subject';
$from           = 'Client Name <info@clientdomain.com>';

$headers = array (
    'From' => $from,
    'To' => $mailto,
    'Subject' => $subject
);

$smtp = Mail::factory('smtp', array (
        'host' => $host,
        'port' => '25',
        'auth' => true,
        'username' => $username,
        'password' => $password
    )
);

$mail = $smtp->send($mailto, $headers, $msg);

if (PEAR::isError($mail)) {    
    echo '<br /><br />' . $mail->getMessage();
} else {
    echo '<br /><br />Worked';
}

我将 $email 值传递给脚本,如下所示:

$name = 'Joe Schmoe';
$email = 'webmaster@domain.com';
include ($_SERVER['DOCUMENT_ROOT'] . '/path/to/my/code/above.php');

当我运行脚本时,出现以下错误:

Failed to add recipient: webmaster@domain.com@localhost
[SMTP: Invalid response code received from server
(code: 504, response: 5.5.2 :
    Recipient address rejected: need fully-qualified address)]

如果我将 $mailto 变量更改为:

$mailto     = $name . ' <' . $email . '>';

...到以下内容:

$mailto     = $name . ' <webmaster@domain.com>';

效果很好。

谁能告诉我我错过了什么?

【问题讨论】:

  • $email 变量的值是多少?
  • 尝试打印出$email 的内容看起来好像@localhost 以某种方式添加到您的webmaster@domain.com 字符串中
  • ADRIEN:$email 在包含之前动态加载。具体到这个例子,'webmaster@domain.com' (sans-quotes)

标签: php email smtp pear


【解决方案1】:

我认为@localhost 已添加到Mail.php 中的$email 变量中

尝试在脚本中更改 $email 变量的名称。

您还可以在脚本中使用die($email); 来测试电子邮件在各个阶段的价值。

【讨论】:

  • 是的,我看到 @localhost 正在被添加 - 但只有当我使用 $email 变量加载 $mailto 时。我正在使用“webmaster@domain.com”(无引号)加载 $email,并且可以输出 $email(来自脚本)而没有错误。这可能是字符串编码问题吗?
  • 更新:当我更改变量的名称时没有区别。 $email 正在“正确”传递地址(呵呵)。我不明白为什么它会在通过变量加载时将电子邮件地址附加到@localhost;然后当值被硬编码时不附加(并正常工作)。
  • 只是为了测试,你可以把die($email);放在这一行之后:$mailto = $name . ' &lt;' . $email . '&gt;';$email被定义之后还包​​括require_once "Mail.php";,所以这可能是添加@localhost的地方。跨度>
  • 知道了!您的 die() 放置建议表明它毕竟不是 php 脚本。那是'当' $email 被加载的时候。我没有足够早地在脚本中测试该值以查看任何差异。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-14
  • 2013-03-03
  • 2013-07-07
  • 2015-10-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多