Мне нужно протестировать скрипт, используя почту PHP. Я бы хотел, чтобы наконец-то это работало локально. Я использую MAMP. Есть ли способ сделать это без установки стороннего программного обеспечения?
Я сделал некоторые поиски по этому поводу, но не нашел ничего привлекательного.
благодаря
Вы конкретно пытаетесь проверить отправку почты или проверяете остальную часть кода?
В случае первого вам необходимо настроить:
SMTP = smtp.example.com smtp_port = 25 sendmail_from = me@example.com
в файле php.ini (проверьте, где он находится с phpinfo ()), заменив соответствующие значения.
Чтобы проверить код, отличный от процесса отправки почты, я бы рекомендовал создать 2 include-файла:
<?php // for live usage/mail send testing function ori_mail() { return call_user_func_array('mail',func_get_args()); }
и для тестирования другого кода
function ori_mail() { file_put_contents('debug_mail_scripts.txt' ,date('r') . ':' . var_export(func_get_args(), true) , FILE_APPEND); }
И включите соответствующий тест.
Обратите внимание, что интеграция тестирования с SMTP-сервером и тестирование доставки вашего кода довольно сложны, но должны выполняться независимо от тестирования вашего PHP.
C.
Возможно, вы захотите рассмотреть библиотеку Swift Mailer
Это делает работу электронной почты с PHP-кода более надежной. Вы даже можете указать свой почтовый скрипт на реальную службу SMTP. Это может устранить множество проблем, с которыми вы столкнулись при переходе от локальной к рабочей среде.
Использование быстрой почтовой программы так же просто, как использование одного включить в верхней части вашего PHP-скрипта и писать блок кода для отправки простого сообщения. И он полностью объектно ориентирован.
Несколько месяцев назад у меня была аналогичная проблема при разработке на моей локальной машине приложения, которое включало отправку автоматических уведомлений по электронной почте. Я потерял довольно некоторое время, установив Sendmail на OSX, и в итоге я не смог заставить его работать правильно.
Мой подход состоял в том, чтобы использовать PEAR Mail в качестве временной замены собственной почтовой функции php. В основном вы можете определить функцию, называемую send-mail (см. Код ниже), и после развертывания приложения на сервере вы можете заменить вызовы этой функции на вызовы mail ().
<?php require_once 'Mail.php'; function send_mail($recipient,$subject,$body){ $host = "yourmailserver.net"; $username = "you@yourmailserver.net"; $password = "password"; $port = 25; $headers = array ('From' => "Your agent <noreply@yoursite.net>", 'To' => $recipient, 'Subject' => $subject ); $smtp = Mail::factory( 'smtp', array ('host' => $host, 'auth' => true, 'port' => $port, 'username' => $username, 'password' => $password) ); $smtp->send($recipient, $headers, $body); } ?>
что я делаю, я использую класс phpmailer (предупреждение: ужасный сайт!) и укажите реальный smtp-сервер, на котором у меня есть учетная запись. Поэтому я не использую mail (), но использую smtp. Таким образом, неважно, нахожусь ли я на локальном сервере или на реальном сервере. Но вам нужен рабочий smtp-доступ к этому почтовому серверу smtp. Лучше всего было бы использовать производственный почтовый сервер (тот, который будет использоваться вашим приложением, когда он будет жить). Таким образом, у вас не будет сюрпризов в последнюю минуту, когда вы обнаружите, что почтовый сервер испортил ответное поле и мелочи вроде этого.
Вы можете использовать свою учетную запись gmail и отправлять свои тестовые письма через SMTP-сервер gmail.
Для этого вы можете использовать класс phpmailer ( http://phpmailer.worxware.com/ ). При загрузке этого класса в примерах / папке есть основной пример gmail.
Я думаю, что лучшим решением является запись всех сообщений в файл. Поэтому вам просто нужно создать собственный sendmail.
добавьте в httpd.conf файл следующие строки:
php_admin_value sendmail_path
"/Applications/MAMP/somefolder/mysendmail.sh"
В файле mysendmail.sh добавьте следующее:
в то время как прочитанная строка делает эхо «$ line» >> ../mail_log.txt done
echo "————- следующая почта —————-" >> ../mail_log.txt
выход 0
Не забудьте установить привилегии: chmod 755 mysendmail.sh