Domain-Name-System
使用 1and1.com 伺服器,SMTP 郵件受限 - 本地 XAMPP 伺服器按預期工作
我開始不太喜歡 1and1.com。我已經使用它們多年,但主要用於不需要太多配置的簡單站點。我知道有更好的託管公司,我可能會去找他們。
這裡的問題是,在我的本地 XAMPP 伺服器(與 Comcast ISP 的網路上)上,我有一個 PHP 腳本,它使用 PEAR::Mail 使用 MIME 發送郵件。
smtp.1and1.com
該腳本使用相應的憑據和smtp.gmail.com
相應的憑據,使用適當的埠等在本地查找。1and1 告訴我,我必須更改執行此腳本的域上的 MX 記錄才能使其正常工作。這對我來說沒有意義。
版本:
PEAR Version: 1.5.0 PHP Version: 4.4.9 Zend Engine Version: 1.3.0
我知道系統(伺服器)非常不同(感謝 nojak 提出這個問題;我最初的問題很模糊)。作業系統、PHP 版本以及可能許多其他配置都完全不同。我的主要問題是,如果 PEAR 和 PHP 在這兩種情況下都具有電子郵件功能,並且我的腳本在我的本地設置上工作,那麼什麼樣的事情會使 1and1 伺服器無法工作?我正在尋找其他故障排除方法來嘗試。
我為我的無知提前道歉。我在這裡先向您的幫助表示感謝。
編輯
這是我的功能:
require_once('Mail.php'); require('Mail/mime.php'); function send_form_mail($body) { $from = "<***>"; $to = "<***>"; $subject = $body[0]; $host = "smtp.1and1.com"; $port = "587"; $username = "***"; $password = "***"; $headers = array( 'From' => $from, 'To' => $to, 'Subject' => $subject ); $smtp = Mail::factory('mail', array( 'host' => $host, 'port' => $port, 'auth' => true, 'username' => $username, 'password' => $password )); $text_field_array = array( '', '' ); for ($i = 1, $size = sizeof($body) + 1; $i < $size; $i++) { $text_body .= $text_field_array[$i] . $body[$i] . '\n'; } $html_field_array = array( '', '' ); for ($i = 1, $size = sizeof($body) + 1; $i < $size; $i++) { $html_body .= $html_field_array[$i] . $body[$i] . '<br />'; } $mime = new Mail_mime(); $mime -> setTXTBody($text_body); $mime -> setHTMLBody($html_body); $email_body = $mime -> get(); $headers = $mime -> headers($headers); $mail = $smtp -> send($to, $headers, $email_body); if (PEAR::isError($mail)) { echo("<p>We've encountered and an error: " . $mail -> getMessage() . "</p>"); } }
請注意,我在上面的函式中標出了敏感字元。
以下是與我分享的要點 1and1:
- 告訴我 PEAR Mail 不起作用
- 我對此進行了測試並且確實如此,所以第一個技術是不正確的
- 通過電子郵件,使用 PEAR 從他們那裡獲得了一個測試腳本
- 測試了它,它工作,但沒有 SMTP
- 然後,他們給了我其他 SMTP 伺服器
- 測試了這些,它們也能正常工作,但仍然沒有 SMTP
- 我問為什麼我不能只使用其他電子郵件伺服器,例如 smtp.gmail.com
- 然後,他們告訴我必須更改我的 MX 記錄
- 然後我問為什麼,因為我還不想這樣做,我只想使用另一個 SMTP 伺服器
- 他們告訴我這是不可能的
- 我開始感到困惑並來這裡尋求幫助
這是通過調整伺服器上 PEAR 的路徑來解決的。我實際上將它安裝在另一個目錄中並將我的功能指向那裡。