Настройте сервер WAMP для отправки электронной почты

Есть ли способ, которым я могу настроить сервер WAMP для PHP, чтобы включить mail() функционировать?

9 ответов

Решение

Настроить работающий почтовый клиент с localhost довольно непросто, я потратил часы разочарования, пытаясь это сделать. Я уверен, что кто-то более опытный может помочь, или они, возможно, согласятся со мной.

Если вы просто хотите протестировать, вот отличный инструмент для локального тестирования почты, который почти не требует настройки:

http://www.toolheap.com/test-mail-server-tool/

Это сработало для меня, надеюсь, это поможет вам.

Установите Поддельный Sendmail (скачать sendmail.zip). Затем настройте C:\wamp\sendmail\sendmail.ini:

smtp_server=smtp.gmail.com
smtp_port=465
auth_username=user@gmail.com
auth_password=your_password

Вышеуказанное будет работать против учетной записи Gmail. А затем настройте php.ini:

sendmail_path = "C:\wamp\sendmail\sendmail.exe -t"

Теперь перезапустите Apache, и это все, что вам нужно сделать.

Используя программу с открытым исходным кодом вызова Send Mail, вы можете довольно легко отправлять через Wamp. Я все еще настраиваю его, но вот отличный урок от Джо Джордана. Занимает менее 2 минут, чтобы настроить.

Просто попробовал, и это сработало как шарм! После того, как я раскомментировал журнал ошибок и обнаружил, что он зависает при аутентификации pop3, я просто удалил это, и он отправил приятно. Удачи!

Вместо установки и настройки собственного SMTP-сервера можно (проще) использовать личную электронную почту Gmail и настроить PHP/WAMP для ее использования и отправки электронной почты через него.

С 2023 года Gmail по умолчанию не поддерживает SMTP для личных пользователей. Поэтому некоторые более ранние ответы кажутся устаревшими. Теперь вроде бы надо включить2-Way Authenticationсначала, а затем генерируетсяApp Password.

Итак, давайте сначала настроим сторону Google:

  1. В Gmail щелкните значок (в правом верхнем углу)-> Управление учетной записью Google -> Безопасность -> Двухэтапная проверка.
  2. настройте его (вам нужно будет получить СМС).
  3. Затем, когда он настроен, перейдите к2-Step Verificationснова
  4. Внизу естьApp password-> нажмите на него
    • затем выберите приложение как «почта»
    • Выберите устройство как «Компьютер с Windows».
    • нажмите "сгенерировать"
  5. Вы получите пароль из 16 букв, который вы будете использовать позже. Так что скопируйте это.

Затем вы загружаетеSendmail with TLS support. По сути, это приложение, которое принимает текстовый файл с адресом электронной почты, темой и телом. Затем подключается к SMTP-серверу и отправляет его.

Вы можете скачать его из git Hub:

https://github.com/sendmail-tls1-2/main

Если быть точным, я использовал этот файл:Sendmail_v33_TLS1_2.zip .

Разархивируйте и настройтеsendmail.iniкак показано ниже (не забудьте изменитьauth_usernameиauth_passwordна ваш адрес электронной почты и пароль):

      smtp_server=smtp.gmail.com
smtp_port=587
smtp_ssl=tls
error_logfile=error.log
; note this is useful to uncoment and peek if something doesnt work
; debug_logfile=debug.log
auth_username=yourEmail@gmail.com
auth_password= that-16-letters-password-you-got-from-Google-App-Password

Чтобы проверить работу sendmail, создайтеtest.txtв папке sendmail. Вот так (но отредактируйте свой адрес электронной почты для получения ):

      From: anything@example.com 
To: FillYourReceive@email.com 
Subject: Your Subject 
Your Body message
Your Body message second line

Затем перейдите в командную строку, чтобыsendmailпапку и запустите ее как:

      sendmail.exe < test.txt

Вы получите электронное письмо через несколько секунд. Если нет, проверьтеerror.logфайл или включите файл отладки вsednmail.iniи проверьdebug.logфайл также.

Когда это сработает, настройтеphp.ini(wamp icon->PHP->php.ini [apache module]

      ;SMTP = localhost
;smtp_port = 25
sendmail_from ="admin@wampserver.vbe"
sendmail_path = "c:/wamp64/bin/Sendmail_v33_TLS1_2/sendmail.exe -t"
;mail.force_extra_parameters =
mail.add_x_header = Off

Конечно редактироватьsendmail_pathтуда, где у тебя естьsendmail.exeи лучше скопируйте его вWAMPпапка.

Перезапустить апачwamp icon->Apache->Service Administration 'wampapache64'->Restart Service

Затем создайте веб-страницу в корне вашего документа, напримерtest_mail.phpсо следующими данными. (Просто не забудьте изменитьFillYOurReceiveEmail:

      <?php
echo "<br>sendmail_path:".strval(ini_get('sendmail_path'));

$from = "anything@anywhere.com";
$to = "FillYOurReceiveEmail@gmail.com";
$subject = "Your email subject";
$message = "Your email body message";
$headers = [ "From: $from" ];

$ret = mail( $to, $subject, $message, implode( '\r\n', $headers ) );
// OR - PHP 7.2.0 or greater
//mail( $to, $subject, $message, $headers );
echo "<br>ret :".strval($ret);
?>

Затем откройте в браузере страницуlocalhost/test_mail.php

Вы увидите что-то вроде:

      sendmail_path:c:/wamp64/bin/Sendmail_v33_TLS1_2/sendmail.exe
ret :1

И вы получите электронное письмо на заполненный адрес электронной почты.

Вам нужен SMTP-сервер для отправки вашей почты. Если у вас есть такой, который не требует аутентификации SMTP (может быть, у вашего интернет-провайдера?), Просто отредактируйте параметр "SMTP" ([функция почты]) в вашем файле php.ini.

Если это не вариант, потому что ваш SMTP-сервер требует аутентификации, вы не сможете использовать внутреннюю функцию mail() и должны использовать какой-то сторонний класс, который поддерживает аутентификацию smtp. например, http://pear.php.net/package/Mail/

Я попробовал Test Mail Server Tool, и хотя он отлично работал, вам все равно нужно открыть письмо на каком-нибудь клиенте.

Я нашел Papercut: https://papercut.codeplex.com/

Для настройки это просто, как Test Mail Server Tool (практически нулевой конф), и он также служит почтовым клиентом, с представлениями для Message (отлично подходит для электронных писем HTML), Headers, Body (для проверки HTML) и Raw (полный непарсированное письмо).

У этого также есть представление Разделов, чтобы разделить различные типы СМИ, найденные в электронном письме.

Он имеет очень чистый и удобный пользовательский интерфейс, хороший просмотрщик журналов и дает вам уведомления, когда вы получаете электронное письмо.

Я нахожу это идеальным, поэтому я просто хотел дать свой 2с и, возможно, помочь кому-то.

Sendmail у меня не работал, поэтому я использовал msmtp 1.6.2 w32 и большинство просто следовало инструкциям на DeveloperSide. Вот краткое изложение установки для потомков:

Включен доступ IMAP под вашей учетной записью Gmail (с одного msmtp отправляется электронная почта)

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

редактировать php.ini найдите и измените каждый параметр ниже, чтобы отразить следующее:

; These are commented out by prefixing a semicolon
;SMTP = localhost
;smtp_port = 25

; Set these paths to where you put your msmtp files.
; I used backslashes in php.ini and it works fine.
; The example in the devside guide uses forwardslashes. 
sendmail_path = "C:\wamp64\msmtp\msmtp.exe -d -C C:\wamp64\msmtp\msmtprc.ini -t --read-envelope-from"

mail.log = "C:\wamp64\msmtp\maillog.txt"

Создать и редактировать файл msmtprc.ini в том же каталоге, что и ваш msmtp.exe файл следующим образом, заменив его своим собственным адресом электронной почты и паролем:

# Default values for all accounts
defaults
tls_certcheck off
# I used forward slashes here and it works.
logfile C:/wamp64/msmtp/msmtplog.txt

account Gmail
host smtp.gmail.com
port 587
auth on
tls on
from ReplaceWithYourEmail@gmail.com
user ReplaceWithYourEmail@gmail.com
password ReplaceWithYourPassword
account default : gmail

Сначала вам нужно скачать Sendmail, он действительно отлично работает и может отправлять на несколько писем. Вы можете скачать его с этого адреса Github https://github.com/sendmail-tls1-2/main . Создайте папку с именем sendmail в WAMP и распакуйте ее. Затем откройте файл sendmail.ini для настройки, как для Gmail.

      smtp_server=smtp.gmail.com
smtp_port=587
smtp_ssl=auto
error_logfile=error.log
debug_logfile=debug.log
auth_username=youremail@gmail.com
auth_password= here place the gmail generated app code not your email password

После этого откройте файл PHP.ini, используемый Wamp, в bin>php в разделе [mail function] и настройте следующим образом.

      SMTP = localhost
smtp_port = 587
sendmail_from = youemail@gmail.com
auth_username = youremail@gmail.com
auth_password = here place the same gmail generated app code not your email password
sendmail_path =  path\to\Ampps\sendmail\sendmail.exe

также проверьте, есть ли это расширение в файле php.ini без точки с запятой (используя ctrl+f) Extension=php_openssl.dll, в противном случае, если оно отсутствует, просто добавьте его. Также проверьте, присутствует ли этот файл в папке ext bin>php>php8..>ext (в противном случае загрузите его и вставьте). Не забудьте также создать и использовать пароль приложения Google — зайдите в свою учетную запись Google. Выберите Безопасность. В разделе «Вход в Google» выберите «Двухэтапная аутентификация». Внизу страницы выберите Пароли приложений. Введите имя, которое поможет вам запомнить, где вы будете использовать пароль приложения. Выберите Создать. и все, просто вставьте сгенерированный код в php.ini и sendmail.ini, и все готово!

Я использовал Mercury/32 и Pegasus Mail, чтобы получить функцию mail(). Он также отлично работает в качестве почтового сервера, если вы хотите, чтобы адрес электронной почты заканчивался вашим доменным именем.

Другие вопросы по тегам