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

Дата публикации:Апрель 1, 2013

При создании профессиональных веб-приложений может возникнуть необходимость тестирования 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

Поделиться

11 комментариев

  1. Денис says:

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

  2. Constantine Shevchuk says:

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

  3. Vij says:

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

    • Дмитрий Алёшин says:

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

      • Vij says:

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

  4. Александр says:

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

  5. dusk says:

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

    • Дмитрий Алёшин says:

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

  6. Oleg says:

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

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

  7. Oleg says:

    $to = ‘recipient@yahoo.com’;
    $subject = ‘Testing sendmail.exe’;
    $message = ‘Hi, you just received an email using sendmail!’;
    $headers = ‘From: my_email@gmail.com‘ . «\r\n» .
    ‘Reply-To:my_email@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»;

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Получать новые комментарии по электронной почте. Вы можете подписаться без комментирования.