Отправка писем через localhost/WAMP Server на почту Gmail с помощью sendmail

При создании профессиональных веб-приложений может возникнуть необходимость тестирования email-функциональности (отсылаются ли письма, верно ли задана стилизация для них, правильно ли сформирована новостная рассылка и т.д.).

Чтобы настроить отправку писем через WAMP, нам понадобится воспользоваться следующим решением (будет работать для версий WAMP Server от 2.0c и старше).

Для начала нам понадобится скачать sendmail.exe (CLI-программа, которая соединяется с SMTP-сервером и отправляет электронное письмо).

Далее делаем следующие шаги.

1. Создаем папку с именем «sendmail» в каталоге «C:\wamp\»

2. Извлекаем следующие 4 файла в папку «sendmail»: «sendmail.exe», «libeay32.dll», «ssleay32.dll» и «sendmail.ini».

3. Открываем файл sendmail.ini и настраиваем для него следующие данные:

  • smtp_server=smtp.gmail.com
  • smtp_port=465
  • smtp_ssl=ssl
  • default_domain=localhost
  • error_logfile=error.log
  • debug_logfile=debug.log
  • auth_username=[your_gmail_account_username]@gmail.com
  • auth_password=[your_gmail_account_password]
  • pop3_server=
  • pop3_username=
  • pop3_password=
  • force_sender=
  • force_recipient=
  • hostname=localhost

Задавать значения свойств pop3_server, pop3_username, pop3_password, force_sender, force_recipient не нужно. Параметры error_logfile и debug_logfile должны быть оставлены пустыми, если вы успешно отправляли ранее письма, иначе размер этих файлов будет увеличиваться. Включите эти лог-файлы, если у вас не получится отправить email через sendmail.

4. Включите IMAP Access в настройках своей GMail-почты: «Settings» -> «Forwarding and POP/IMAP» -> «IMAP Access».

GMail-IMAP-Access

5. Включите «ssl_module» для сервера Apache:

WAMP-Server-Apache-Module-2

6. Включите расширения «php_openssl» и «php_sockets» для компилятора PHP:

WAMP-Server-PHP-Extensions-2

7. Откройте файл php.ini, который содержится в папке «C:\wamp\bin\apache\Apache2.2.17\bin» и настройте его следующим образом (вам нужно просто сконфигурировать последнюю строку в представленном коде. Напротив остальных строк ставится префикс точка с запятой):

[mail function]
; For Win32 only.
; http://php.net/smtp
;SMTP =
; http://php.net/smtp-port
;smtp_port = 25

; For Win32 only.
; http://php.net/sendmail-from
;sendmail_from = you@domain.com
; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
sendmail_path = "C:\wamp\sendmail\sendmail.exe -t -i"

Примечания:

php.ini в «C:\wamp\bin\php\php5.3.x» не будет работать.

8. Делаем рестарт WAMP Server.

9. Создаем PHP-файл и вносим в него следующий код:

<?php
$to       = 'recipient@yahoo.com';
$subject  = 'Testing sendmail.exe';
$message  = 'Hi, you just received an email using sendmail!';
$headers  = 'From: sender@gmail.com' . "\r\n" .
            'Reply-To: sender@gmail.com' . "\r\n" .
            'MIME-Version: 1.0' . "\r\n" .
            'Content-type: text/html; charset=iso-8859-1' . "\r\n" .
            'X-Mailer: PHP/' . phpversion();
if(mail($to, $subject, $message, $headers))
    echo "Email sent";
else
    echo "Email sending failed";
?>

10. Вносим необходимые изменения в переменные $to и $headers, чтобы задать получателя, отправителя и адрес ответа. Сохраняем файл как send-mail.php (вы можете сохранить его в любой подпапке C:\wamp\www).

11. Открываем этот файл в браузере. Теперь он должен работать.

Примечание: если путь к sendmail.exe содержит в себе пробелы (к примеру, «C:\Program Files\PHP\sendmail\»), то в таком случае Apache не сможет найти этот файл. Потому либо сохраняйте sendmail.exe в таком месте, чтобы путь к нему не содержал пробелов, либо запишите путь в DOS-стиле: «C:\Progra~1\PHP\sendmail\». Пример: sendmail_path = «C:\Progra~1\PHP\sendmail\sendmail.exe -t -i»).

P.S. Я лично проверил работоспособность данного решения на своем локальном сервере. Письмо успешно отправилось!

Источник: blog.techwheels.net

Блог про WordPress
Комментарии: 17
  1. Денис

    Полезная статья!

  2. Constantine Shevchuk

    Большое спасибо,отличный гайд. Все работает.

  3. Vij

    А без этого wamp где-нибудь хранит письма локально? Как денвер, например.

    1. Дмитрий (автор)

      Этого, к сожалению, сказать не могу.

      1. Vij

        Ответ уже нашла: в WAMP Server нет почтового эмулятора, так что буду пробовать Ваш вариант. Спасибо. Возможно, удастся его настроить на локальную работу.

  4. Александр

    Спасибо все классно работает!

  5. dusk

    Добрый день. помогите. уже 1000 сайтов перечитал и делал все как написано. и Вашу статью 4 раза перепроверял. и все равно не отправляет моя джумла письма.
    Стоит вамп сервер. вроде все повключал. пхп ини настроил. сендмеил настроил. нифига не отправляется. сил нету уже…
    даже почту другую регил думал мало ли что. пишет не могу отправить письмо и все тут…

    1. Дмитрий (автор)

      С Джумлой не знаю, как быть. В WordPress у меня данная инструкция сработала, поскольку сам сталкивался с такой проблемой, и все удалось настроить.

  6. Oleg

    Здраствуйте, когд начад настаивать wampp, и вносил изменения в send-mail.php

    то никакой реакции нет от отправки!

  7. Oleg

    $to = ‘recipient@yahoo.com’;
    $subject = ‘Testing sendmail.exe’;
    $message = ‘Hi, you just received an email using sendmail!’;
    $headers = ‘From: my_email@gmail.com‘ . «rn» .
    ‘Reply-To:my_email@gmail.com’ . «rn» .
    ‘MIME-Version: 1.0’ . «rn» .
    ‘Content-type: text/html; charset=iso-8859-1’ . «rn» .
    ‘X-Mailer: PHP/’ . phpversion();
    if(mail($to, $subject, $message, $headers))
    echo «Email sent»;
    else
    echo «Email sending failed»;

    1. Дмитрий (автор)

      Так а вы $to и $headers настроили?

  8. Алексей

    Спасибо! Единственное толковое пошаговое руководство из тех, что мне удалось найти.

  9. Глеб

    Спасибо огромное, все работает!

  10. michael

    не сработало. :(

    1. michael

      sorry , мой косяк. вске работает. Спасибо за дельную инструкцияю

      1. Дмитрий (автор)

        Ok :)

  11. Александр

    Подскажите плиз, а для Open Servera какие настройки.

Добавить комментарий для Oleg Отменить ответ

Получать новые комментарии по электронной почте.