2012-01-14 143 views
-1

我试图用PHP mail()函数发送邮件。我已经安装了postfix,修改了Ubuntu help docs建议的所有必需文件。用PHP发送邮件

我还更改了我的php.ini文件,将sendmail_path的路径设置为sendmail_path = "/usr/sbin/sendmail -t -i",但仍无法将邮件发送到我的hotmail帐户或yahoo或gmail。
编辑: 停止投票给我;即使我不知道我的问题。我到目前为止所意识到的是,我的ISP阻止除80以外的每个端口。如果有人能帮助我缓解这个问题,那将是我的荣幸。

+0

请更具体。当您尝试将邮件发送到您的Yahoo或GMail帐户时,您是否收到错误消息?你有反弹吗?你的邮件日志里有什么东西吗?杰夫亲自出现在你家门口并大喊“不!”? – derobert 2012-01-15 07:55:55

+0

嗯,我在Virtual Box上使用Ubuntu - 10.04;我使用PHP邮件()调用的邮件功能似乎工作正常。但是,我没有收到我的收件箱中的任何电子邮件。对我而言,“似乎”在我的主机中,即在Windows 7中的SMTP端口以某种方式被阻止,这可能会阻止我的邮件传递到Hotmail服务器。现在你认为我在朝着正确的方向思考吗? – 2012-01-15 15:32:58

+0

您是否在住宅互联网连接上运行此操作?很可能你的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

回答

2

当你配置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是一个梨包。

+0

感谢您的回答,队友。我手边有一个新问题。我不知何故无法在Windows 7上打开我的端口25。我在Windows防火墙的入站规则中添加了例外情况,即使当我在端口25上telnet到本地主机时,它也会导致连接错误。你遇到过这个问题吗? http://www.canyouseeme.org/:我已经在本网站上使用了该工具来查看我的端口25是否打开,它表示只有端口80打开。顺便说一句,我用这个词来描述从这个网站打开25号港口:http://www.wikihow.com/Open-Port-25。任何帮助开放25港口将不胜感激。 – 2012-01-15 17:11:35

+0

@FewTem您已在Ubuntu上配置Postfix。你为什么试图从Windows连接它?它在你Ubuntu的家伙。 – 2012-01-15 17:46:48

+0

我以为Ubuntu使用与我的Windows主机相同的端口,那就是为什么;无论如何谢谢你的抬头。 – 2012-01-15 18:30:15