簡體   English   中英

使用PHP郵件通過smtp發送

[英]Use PHP mail to send via smtp

有沒有人知道你是否可以配置php的mail()命令,所以它只會使用SMTP服務器而不是本地sendmail? 我們在將電子郵件標記為垃圾郵件時遇到問題。

我們的服務器正在運行RedHat 5 Enterprise。

我知道各種PHP庫充當SMTP客戶端,但我寧願配置PHP,所以mail()直接使用SMTP服務器。

根據本手冊頁 ,只能在Windows上使用。

您可以使用PEAR Mail包直接通過SMTP發送。 您還需要安裝Net_SMTP才能使SMTP郵件正常工作。 在許多服務器上,默認安裝這些服務器。 您也可以在本地下載這些庫的副本,並將它們上傳到您站點的目錄或包含路徑。 這不是一個理想的解決方案,但它的功能。

如果您正在尋找舊mail()函數的替代品,但是通過SMTP而不是PHP默認值發送,您需要編寫一個翻譯函數,以正確的順序設置所有參數等。 這里有一個這樣的腳本示例 - 顯然你必須修改它以匹配你想要的設置: http//tltech.com/info/php-mail-via-smtp/

檢查以下鏈接:

例:

更新:您可以使用它,但它會在每個調用的mail()函數上打開和關閉SMTP套接字。

<?php
$to      = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com' . "\r\n" .
    'Reply-To: webmaster@example.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);
?>

不,原因是所有Linux / Unix系統都應該有一個“sendmail”工具。 這樣做的好處是,這個外部工具可以處理超時或無響應的SMTP服務器,因此更有可能真正發送郵件。 Windows的SMTP客戶端實現是一種解決方案,因為那里不存在“sendmail”。

我的方法是使用與sendmail兼容的工具,該工具只使用SMTP與另一台服務器通信。 一個簡單的工具是ssmtp( 這里有可用的源)

只需配置本地sendmail即可將上游郵件服務器用作中繼! 這樣,您就不必在PHP端進行任何更改。

使用SMTP直接從PHP發送郵件不是一個好主意,因為你會丟失從錯誤處理到排隊的所有內容!

暫無
暫無

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

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