2012-10-21 112 views
1

我想在joomla網站建立一個聯繫表單模塊。聯繫人模塊非常適合我的每個個人電子郵件地址,例如[email protected][email protected]等。但是當我用我的客戶的公司郵件收件人測試它時,郵件功能會失敗。PHP郵件的作品,但我無法發送郵件到公司郵箱

爲了獲得約我設置mailsender屬性,以我個人的郵件地址失敗一些更多的信息如下:

$mailSender->setSender('[email protected]'); 
$mailSender->addReplyTo('[email protected]'); 

,這就是我得到:

在收到原始郵件太陽,2012年10月21日15:05:00 +0200 從阿帕奇@本地

-----下列地址擁有永久致命錯誤-----

[email protected] 
(reason: 553 5.3.0 <[email protected]>... No such user here) 
(expanded from: [email protected]) 

-----答問全文如下-----

... while talking to [127.0.0.1]: 
>>> DATA 
<<< 553 5.3.0 <[email protected]>... No such user here 
550 5.1.1 [email protected] 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; [email protected] 
Action: failed 
Status: 5.3.0 
Remote-MTA: DNS; [127.0.0.1] 
Diagnostic-Code: SMTP; 553 5.3.0 <[email protected]>... No such user here 
Last-Attempt-Date: Sun, 21 Oct 2012 15:05:01 +0200 

看來公司的webmail不接受郵件來自它自己的服務器。 我不是一個電子郵件專家,也不是一個專業的PHP程序員。 有什麼想法?

遵循其中的郵件功能instatiated並推出了我的Joomla模塊的一部分:

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

$mailSender->setSender('[email protected]'); 
$mailSender->addReplyTo('[email protected]'); 

$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; 
} 

回答

0

可能是因爲發件人的電子郵件是不是你嘗試發送郵件列表的註冊會員發郵件給。某些郵件列表只接受來自注冊爲成員的電子郵件地址的電子郵件(可以在允許的發件人中,在郵件列表的選項中進行管理)。

2

您通過本地主機(您正在與127.0.0.1通話)中繼郵件,因此您本地的sendmail安裝可能認爲它應該爲您的域處理郵件,而不是僅僅中繼。系統上沒有用戶名爲info,因此它返回錯誤550 No such user here

檢查/etc/mail/local-host-names並查看該域是否在那裏列出,如果它註釋掉並重新啓動sendmail與service sendmail restart

此外,還應確保您允許本地主機接力/etc/mail/access,我的文件看起來像這樣在CentOS 5.8和Sendmail的8.13.8

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

另一種選擇是使用真正的郵件服務器作爲SMTP中繼,而不是sendmail上localhost - 我不能說這是什麼問題的域,但可能smtp.example.commail.example.com。另外需要注意的是,該服務器可能需要身份驗證來中繼來自Web服務器的郵件 - 您需要與管理員聯繫並相應地更新您的PHP代碼。

+0

我沒有控制網絡郵件,也沒有我的客戶公司的服務器我只有ftp訪問我目前正在製作的網站的根目錄。 我可以使用php腳本進行測試嗎? – user1761575

+0

不幸的是,您需要root或sudo訪問才能更改該文件。 – doublesharp

+0

另一種選擇是*不*通過本地主機SMTP服務器發送郵件。你確實失去了一些健壯性(如果你的Web服務器無法到達郵件服務器),但它應該工作。很難說主機是什麼,但可能是mail.example.com或smtp.example.com。相應地更新 – doublesharp

0

讓我看看我是否得到你告訴我的: 1)託管我的joomla網站的服務器有一個郵件「引擎」來管理郵件發送請求; 2)假設收件人信息@ xxxxxx。它在同一個郵件服務器上收集它調用的請求127.0.0.1;

3)找不到用戶叫做info;

事實是,我沒有任何控制我的客戶的公司webmail或web服務器。

我可以掩蓋請求爲了不顯示它來自本地主機?其他解決方案? 對不起,我的英語不好....

相關問題