我开始不那么喜欢 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 服务器
- 他们告诉我这是不可能的
- 我开始感到困惑并来这里寻求帮助
答案1
通过调整服务器上 PEAR 的路径解决了这个问题。我实际上将它安装在了另一个目录中,并将我的函数指向那里。