[英]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庫
它使得從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。
將此字符串添加到httpd.conf文件中:
php_admin_value sendmail_path
“/Applications/MAMP/somefolder/mysendmail.sh”
在文件mysendmail.sh中添加以下內容:
讀取行時回顯“$ line”>> ../mail_log.txt完成
echo“------------- next mail ----------------”>> ../mail_log.txt
退出0
不要忘記設置權限:chmod 755 mysendmail.sh
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.