Web

Отправка электронной почты с помощью SMTP-сервера GMail со страницы PHP

Я пытаюсь отправить электронное письмо через SMTP-сервер GMail со страницы PHP, но получаю такую ошибку:

ошибка аутентификации [SMTP: SMTP-сервер не поддерживает аутентификацию (код: 250, ответ: mx.google.com, [98.117.99.235] SIZE 35651584 8BITMIME STARTTLS ENHANCEDSTATUSCODES PIPELINING)]

 

Кто-нибудь может помочь? Вот мой код:

<?php

require_once "Mail.php";

$from    = "Sandra Sender <sender@example.com>";

$to      = "Ramona Recipient <ramona@microsoft.com>";

$subject = "Привет!";

$body    = "Привет,\n\nКак твои дела?";

$host    = "smtp.gmail.com";

$port    = "587";

$username= "testtest@gmail.com";

$password= "testtest";

 

$headers = array ('From' => $from,

  'To'      => $to,

  'Subject' => $subject);

$smtp = Mail::factory('smtp',

  array ('host' => $host,

    'port'      => $port,

    'auth'      => true,

    'username'  => $username,

    'password'  => $password));

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

if (PEAR::isError($mail)) {

  echo("<p>".$mail->getMessage()."</p>");

 } else {

  echo("<p>Сообщение отправлено успешно!</p>");

 }

?>

 

Ответ 1

// Pear Mail Library

require_once "Mail.php";

$from    = '<fromaddress@gmail.com>';

$to      = '<toaddress@yahoo.com>';

$subject = 'Привет!';

$body    = "Привет,\n\nКак твои дела?";

$headers = array(

    'From' => $from,

    'To'      => $to,

    'Subject' => $subject

);

$smtp = Mail::factory('smtp', array(

        'host'     => 'ssl://smtp.gmail.com',

        'port'     => '465',

        'auth'     => true,

        'username' => 'johndoe@gmail.com',

        'password' => 'passwordxxx'

    ));

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

if (PEAR::isError($mail)) {

    echo('<p>'.$mail->getMessage().'</p>');

} else {

    echo('<p>Сообщение отправлено успешно!</p>');

}

 

Ответ 2

Используя почтовую программу Swift, довольно легко отправить письмо с учетными данными Gmail:

<?php

require_once 'swift/lib/swift_required.php';

$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, "ssl")

  ->setUsername('GMAIL_USERNAME')

  ->setPassword('GMAIL_PASSWORD');

$mailer = Swift_Mailer::newInstance($transport);

$message = Swift_Message::newInstance('Test Subject')

  ->setFrom(array('abc@example.com' => 'ABC'))

  ->setTo(array('xyz@test.com'))

  ->setBody('This is a test mail.');

$result = $mailer->send($message);

?>

 

Ответ 3

Я не рекомендую Pear Mail. Не обновлялся с 2010 года. Также читайте исходные файлы; исходный код устарел, написан в стиле PHP 4, и было обнаружено много ошибок/багов (Google it). Я использую Swift Mailer.

Swift Mailer интегрируется в любое веб-приложение, написанное на PHP 5, предлагая гибкий и элегантный объектно-ориентированный подход к отправке электронных писем с множеством функций:

  1. Отправляет электронные письма, используя SMTP, sendmail, postfix или собственную реализацию транспорта.

  2. Серверы поддержки, требующие имени пользователя и пароля и/или шифрования.

  3. Защита от атак путем внедрения заголовка без удаления содержимого данных запроса.

  4. Отправляет MIME-совместимые HTML/многостраничные электронные письма.

  5. Использует плагины, управляемые событиями, для настройки библиотеки.

  6. Обрабатывает большие вложения и встроенные изображения с низким потреблением памяти.

Это бесплатный и открытый исходный код, который вы можете загрузить на свой сервер.

Рабочий пример Gmail SSL/SMTP и Swift Mailer находятся здесь:

// Swift Mailer Library

require_once '../path/to/lib/swift_required.php';

// Почтовый транспорт

$transport = Swift_SmtpTransport::newInstance('ssl://smtp.gmail.com', 465)

    ->setUsername('username@gmail.com')   // Логин    ->setPassword('my_secure_gmail_password'); // Пароль

$mailer = Swift_Mailer::newInstance($transport);

// Создание сообщения

$message = Swift_Message::newInstance('Wonderful Subject Here')

    ->setFrom(array('sender@example.com' => 'Sender Name'))

    ->setTo(array('receiver@example.com' => 'Receiver Name'))

    ->setBody('Это тестовое<strong>сообщение</strong>. Это текст в <h1>HTML</h1>.', 'text/html');

// Отправка

if ($mailer->send($message)) {

    echo 'Почта успешно отправлена.';

} else {

    echo 'Ошибка. Не корректная конфигурация.:(';

}

Схожие статьи

Web

Как отсортировать многомерный массив по некоторому значению?

Web

Что это значит: ошибка 720 при подключении к VPN, можно ли исправить

Web

Как предотвратить SQL-инъекцию в PHP?

Компьютерная сеть 90-х: подробная история развития компьютерных сетей
Web

Компьютерная сеть 90-х: подробная история развития компьютерных сетей

×