簡體   English   中英

MAMP上的php郵件

[英]php mail on MAMP

我需要使用PHP的郵件測試一些腳本。 我希望能夠最終在本地工作。 我正在使用MAMP。 有沒有辦法在不安裝任何第三方軟件的情況下執行此操作?

我已經對此做了一些搜索,但沒有發現任何吸引人的東西。

謝謝

您是否專門嘗試測試郵件的發送,還是在測試其余代碼?

對於前者,您需要配置:

 SMTP = smtp.example.com
 smtp_port = 25
 sendmail_from = me@example.com

在你的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來完成。

C。

您可能想要考慮Swift Mailer庫

http://swiftmailer.org/

它使得從PHP代碼發送電子郵件更加可靠。 您甚至可以將郵件程序腳本指向真正的SMTP服務。 這可以消除從本地環境遷移到生產環境時遇到的許多問題。

使用swift郵件程序就像在PHP腳本頂部使用單個include並編寫代碼塊來發送簡單消息一樣簡單。 它完全面向對象。

幾個月前,我在本地計算機上開發了一個類似的問題,該應用程序涉及發送自動化電子郵件通知。 我已經失去了一些時間在OSX上安裝Sendmail,最終我無法正常工作..

我的方法是使用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帳戶並通過gmail的SMTP服務器發送測試電子郵件。

您可以使用phpmailer類( http://phpmailer.worxware.com/ )來執行此操作。 下載此類時,examples /文件夾中有一個基本的gmail示例。

我認為最好的解決方案是將所有消息寫入文件。 所以你只需要制作自己的sendmail。

  1. 將此字符串添加到httpd.conf文件中:

    php_admin_value sendmail_path
    “/Applications/MAMP/somefolder/mysendmail.sh”

  2. 在文件mysendmail.sh中添加以下內容:

    #!/斌/慶典

    讀取行時回顯“$ line”>> ../mail_log.txt完成

    echo“------------- next mail ----------------”>> ../mail_log.txt

    退出0

  3. 不要忘記設置權限:chmod 755 mysendmail.sh

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM