當你配置Postfix的時候,你不需要sendmail
這也是一個像Postfix這樣的MTA。 因此sendmail_path = "/usr/sbin/sendmail -t -i"
不被php使用。
您必須通過php連接到您的Postfix服務器(它正在監聽localhost:25)以發送郵件。
這裏是基於this answer修改的示例,
<?php
require_once "Mail.php";
$from = "<from.gmail.com>";
$to = "<to.yahoo.com>";
$subject = "Hi!";
$body = "Hi,\n\nHow are you?";
$host = "localhost";
$port = "25";
$username = "<myaccount.gmail.com>";
$password = "password";
$headers = array ('From' => $from,
'To' => $to,
'Subject' => $subject);
$smtp = Mail::factory('smtp',
array ('host' => $host,
'port' => $port,
'auth' => true,
'username' => $username,
'password' => $password));
$mail = $smtp->send($to, $headers, $body);
if (PEAR::isError($mail)) {
echo("<p>" . $mail->getMessage() . "</p>");
} else {
echo("<p>Message successfully sent!</p>");
}
?>
注意Mail是一個梨包。
請更具體。當您嘗試將郵件發送到您的Yahoo或GMail帳戶時,您是否收到錯誤消息?你有反彈嗎?你的郵件日誌裏有什麼東西嗎?傑夫親自出現在你家門口並大喊「不!」? – derobert 2012-01-15 07:55:55
嗯,我在Virtual Box上使用Ubuntu - 10.04;我使用PHP郵件()調用的郵件功能似乎工作正常。但是,我沒有收到我的收件箱中的任何電子郵件。對我而言,「似乎」在我的主機中,即在Windows 7中的SMTP端口以某種方式被阻止,這可能會阻止我的郵件傳遞到Hotmail服務器。現在你認爲我在朝着正確的方向思考嗎? – 2012-01-15 15:32:58
您是否在住宅互聯網連接上運行此操作?很可能你的ISP已經阻止了除了郵件服務器以外的其他所有東西。 'telnet gmail-smtp-in.l.google.com 25'(來自'cmd'提示符)連接並給你一個'220 mx.google.com ESMTP ...'橫幅嗎?您需要通過ISP的郵件服務器將您的MTA配置爲smarthost。 – derobert 2012-01-15 18:35:42