php邮件有效但我无法发送邮件到公司webmail

时间:2012-10-21 13:56:37

标签: php apache email joomla

我正在尝试在joomla网站中设置联系表单模块。联系模块适用于我的每个个人电子邮件地址,如xxxxxxxxxxxx@gmail.com或xxxxxxxxxxxx@libero.it等。但是,当我用我的客户的公司邮件收件人测试它时,邮件功能无法完成它的工作。

为了获得有关失败的更多信息,我将mailsender属性设置为我的个人邮件地址,如下所示:

$mailSender->setSender('xxxxxxx@libero.it');
$mailSender->addReplyTo('xxxxxxx@libero.it');

这就是我得到的:

最初的消息是在2012年10月21日星期日15:05:00 +0200收到的 来自apache @ localhost

-----以下地址有永久致命错误-----

info@xxxxxx.it
(reason: 553 5.3.0 <info@xxxxxx.it>... No such user here)
(expanded from: info@xxxxxx.it)

-----会议记录如下-----

... while talking to [127.0.0.1]:
>>> DATA
<<< 553 5.3.0 <info@xxxxxx.it>... No such user here
550 5.1.1 info@xxxxxx.it... User unknown
<<< 503 5.0.0 Need RCPT (recipient)

并在附件中:

Reporting-MTA: dns; xxxxxx.yyyyyyy.com
Arrival-Date: Sun, 21 Oct 2012 15:05:00 +0200

Final-Recipient: RFC822; info@xxxxxx.it
Action: failed
Status: 5.3.0
Remote-MTA: DNS; [127.0.0.1]
Diagnostic-Code: SMTP; 553 5.3.0 <info@xxxxxx.it>... No such user here
Last-Attempt-Date: Sun, 21 Oct 2012 15:05:01 +0200

公司webmail似乎不接受来自自己服务器的邮件。 我不是电子邮件专家,也不是专业的php程序员。 任何想法?

跟随我的joomla模块的部分,其中邮件功能被实例化并启动:

 $mailSender = &JFactory::getMailer();
$mailSender->addRecipient($recipient);

$mailSender->setSender('xxxxxxxxxxxxx@libero.it');
$mailSender->addReplyTo('xxxxxxxxxxxxx@libero.it');

$mailSender->setSubject('Richiesta informazioni da sito web');
$mailSender->setBody($myMessage);

if ($mailSender->Send() !== true) {
  $myReplacement = '<span style="color: ' . $error_text_color . ';">' . $errorText . '</span>';
  //header("Location: $url",303);
  print $myReplacement;
  return true;
}
else {
  $myReplacement = '<span style="color: '.$thanksTextColor.';">' . $pageText . '</span>';
  print $myReplacement;
  return true;
}

3 个答案:

答案 0 :(得分:2)

您正在通过localhost中继邮件(您正在与127.0.0.1通话),因此您的本地sendmail安装可能会认为它应该为您的域处理邮件而不是仅仅中继。系统上没有名为info的用户,因此它返回错误550 No such user here

检查/etc/mail/local-host-names并查看该域是否已列出,如果已将其注释掉,请使用service sendmail restart重新启动sendmail。

同时验证您是否允许/etc/mail/access中的localhost中继,我的文件在CentOS 5.8和Sendmail 8.13.8上如下所示

Connect:localhost.localdomain           RELAY
Connect:localhost                       RELAY
Connect:127.0.0.1                       RELAY

另一个选择是使用真实邮件服务器作为SMTP中继而不是localhost上的sendmail - 我无法说明相关域的内容,但可能是smtp.example.commail.example.com。另外需要注意的是,此服务器可能需要身份验证才能从您的Web服务器中继邮件 - 您需要与管理员联系并相应地更新您的PHP代码。

答案 1 :(得分:0)

这可能是因为发件人的电子邮件不是您尝试将电子邮件发送到的邮件列表的注册成员。某些邮件列表只接受来自注册为会员的电子邮件地址的电子邮件(可以在允许的发件人中管理,在邮件列表的选项中)。

答案 2 :(得分:0)

让我看看你是否得到了你告诉我的内容: 1)托管我的joomla网站的服务器有一个邮件“引擎”来管理邮件发送请求; 2)如果收件人info@xxxxxx.it在收集请求的同一邮件服务器上,则调用127.0.0.1;

3)找不到名为info的用户;

事实是,我对客户的公司网络邮件或网络服务器没有任何控制权。

我是否可以屏蔽请求以便不显示它来自localhost?还有其他方法吗? 抱歉我的英语不好......