При использовании серверов 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
Я понимаю, что системы (серверы) сильно различаются (спасибо Нояку за то, что поднял этот вопрос; мой первоначальный вопрос был расплывчатым). Операционные системы, версии 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
- Протестировал и все заработало, но нет SMTP
- Затем они дали мне другие SMTP-серверы
- Протестировал их, и они работали так же, но все еще без SMTP
- Я спросил, почему я не могу просто использовать другие почтовые серверы, такие как smtp.gmail.com
- Затем они сказали мне, что я должен изменить свою запись MX
- Затем я спросил, почему, так как я еще не хотел этого делать, и что я хотел просто использовать другой SMTP-сервер
- Мне сказали, что это невозможно
- Я запутался и пришел сюда за помощью
1 ответ
Это было решено путем настройки путей PEAR на сервере. Я фактически установил его в другой каталог и указал свои функции там.