php mail на MAMP

Мне нужно протестировать скрипт, используя почту 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

http://swiftmailer.org/

Это делает работу электронной почты с 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.

  1. добавьте в httpd.conf файл следующие строки:

    php_admin_value sendmail_path
    "/Applications/MAMP/somefolder/mysendmail.sh"

  2. В файле mysendmail.sh добавьте следующее:

    #! / Bin / Баш

    в то время как прочитанная строка делает эхо «$ line» >> ../mail_log.txt done

    echo "————- следующая почта —————-" >> ../mail_log.txt

    выход 0

  3. Не забудьте установить привилегии: chmod 755 mysendmail.sh