PEAR Mail, "невозможно установить отправителя" - PullRequest
4 голосов
/ 10 июля 2010

У меня есть почтовый скрипт PHP, который успешно отправляет письма на все, НО адреса GMail, поэтому сейчас я пытаюсь создать его с пакетами PEAR Mail и Mail_Mime, которые можно отправлять в GMail. У меня сложилось впечатление, что это возможно только при подключении через SMTP-сервер GMail для отправки сообщений. Попробовав простой тестовый скрипт, я получаю следующую ошибку:

невозможно установить отправителя на [Username@gmail.com]

В адресе нет ничего плохого, и этот сайт предполагает, что если в адресе нет ничего неправильно отформатированного, то это проблема с подключением к серверу. Но как мне устранить проблему с подключением в этой ситуации? Или я что-то не так делаю? Или есть другой, более простой способ получить PHP-скрипт для успешной отправки почты в GMail?

Мой код выглядит следующим образом (адрес электронной почты и пароль, очевидно, изменены)

$from = "username@gmail.com";
$to = "username@gmail.com";
$subject = "Test";
$crlf = "\n";
$text = 'Text message';
$html = '<html><body>HTML message</body></html>';
$headers = array (
    'From' => $from,
    'Return-Path' => $from,
    'Subject' => $subject
);

$mime = new Mail_mime($crlf);
$mime->setTXTBody($text);
$mime->setHTMLBody($html);
$body = $mime->get();
$headers = $mime->headers($headers);

$smtp = Mail::factory(
    'smtp',
    array (
        'host' => 'ssl://smtp.gmail.com',
        'port' => 465,
        'auth' => true,
        'username' => "username@gmail.com",
        'password' => "password",
        'debug' => true
    )
);

$mail = $smtp->send($to, $headers, $body);

if (PEAR::isError($mail)) {
    echo("<p>" . $mail->getMessage() . "</p>");
    echo 'FAILURE';
} else {
    echo 'SUCCESS';
}

1 Ответ

1 голос
/ 17 июля 2010

Я не могу себе представить, почему простой адрес username@gmail.com не будет работать, так что это, вероятно, еще одна ошибка, маскирующаяся под это. Убедитесь, что вы случайно не подавляете сообщения об ошибках (перед вызовом send отправьте вызов error_reporting (E_ALL)).

Однако следует иметь в виду, что вам не нужно использовать SMTP-сервер GMail для отправки почты на адреса GMail. Вы можете использовать тот же хостинг, что и на вашем хостинге.

...