Подтвердить что ты не робот

Php mail на MAMP

Мне нужно протестировать несколько script с помощью PHP-почты. Я бы хотел, чтобы наконец-то это работало локально. Я использую MAMP. Есть ли способ сделать это без установки стороннего программного обеспечения?

Я немного поработал над этим, но не нашел ничего привлекательного.

Спасибо

4b9b3361

Ответ 1

Вы специально пытаетесь проверить отправку почты или проверяете остальную часть кода?

В случае первого вам необходимо настроить:

 SMTP = smtp.example.com
 smtp_port = 25
 sendmail_from = [email protected]

в вашем файле php.ini(проверьте, где он находится с phpinfo()), подставляя соответствующие значения.

Чтобы проверить код, отличный от процесса отправки почты, я бы рекомендовал создать 2 включенных файла:

<?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.

С.

Ответ 2

Возможно, вы захотите рассмотреть библиотеку Swift Mailer

http://swiftmailer.org/

Это делает работу с кодом PHP намного более надежной. Вы даже можете указать свою почтовую программу script на реальную службу SMTP. Это может устранить множество проблем, с которыми вы столкнулись при переходе от локальной к рабочей среде.

Использование быстрой почтовой программы так же просто, как использование одного включить в верхней части вашего PHP script и писать блок кода для отправки простого сообщения. И он полностью объектно ориентирован.

Ответ 3

Несколько месяцев назад у меня была аналогичная проблема при разработке на моей локальной машине приложения, которое включало отправку автоматических уведомлений по электронной почте. Я потерял довольно некоторое время, установив Sendmail на OSX, и в итоге я не смог заставить его работать правильно.

Мой подход состоял в том, чтобы использовать PEAR Mail в качестве временной замены для обычной почтовой функции php. В основном вы можете определить функцию, называемую send-mail (см. Код ниже), и после развертывания приложения на сервере вы можете заменить вызовы этой функции на вызовы mail().

     <?php
     require_once 'Mail.php';
     function send_mail($recipient,$subject,$body){

            $host = "yourmailserver.net"; 
            $username = "[email protected]";
            $password = "password";
            $port = 25; 

            $headers = array ('From' => "Your agent <[email protected]>",
              'To' => $recipient,
              'Subject' => $subject
            );  

            $smtp = Mail::factory(
             'smtp',
              array ('host' => $host,
                'auth' => true,
                'port' => $port,
                'username' => $username,
                'password' => $password)
            );  
            $smtp->send($recipient, $headers, $body);
       }
    ?>    

Ответ 4

что я делаю, я использую класс phpmailer (предупреждение: ужасный сайт!) и укажите реальный smtp-сервер, на котором у меня есть Счет. Поэтому я не использую mail(), но использую smtp. Таким образом, неважно, нахожусь ли я на локальном сервере или на реальном сервере. Но вам нужен рабочий smtp-доступ к этому почтовому серверу smtp. Лучше всего было бы использовать производственный почтовый сервер (тот, который будет использоваться вашим приложением, когда он будет жить). Таким образом, у вас не будет сюрпризов в последнюю минуту, когда вы обнаружите, что почтовый сервер испортил ответное поле и мелочи вроде этого.

Ответ 5

Вы можете использовать свою учетную запись gmail и отправлять тестовые электронные письма через SMTP-сервер gmail.

Для этого вы можете использовать класс phpmailer (http://phpmailer.worxware.com/). В примере/папке при загрузке этого класса есть основной пример gmail.

Ответ 6

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

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

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

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

    #!/Bin/bash

    во время чтения строки делать echo "$ line" → ../mail_log.txt сделано

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

    выход 0

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