当你配置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