Настройте сервер 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:
- В Gmail щелкните значок (в правом верхнем углу)-> Управление учетной записью Google -> Безопасность -> Двухэтапная проверка.
- настройте его (вам нужно будет получить СМС).
- Затем, когда он настроен, перейдите к
2-Step Verification
снова - Внизу есть
App password
-> нажмите на него -
- затем выберите приложение как «почта»
- Выберите устройство как «Компьютер с Windows».
- нажмите "сгенерировать"
- Вы получите пароль из 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(). Он также отлично работает в качестве почтового сервера, если вы хотите, чтобы адрес электронной почты заканчивался вашим доменным именем.