Php 如何使用Zend_Mail、sendmail和localhost发送电子邮件?

Php 如何使用Zend_Mail、sendmail和localhost发送电子邮件?,php,zend-framework,ubuntu,sendmail,zend-mail,Php,Zend Framework,Ubuntu,Sendmail,Zend Mail,我正在开发一个zend框架应用程序,其中包括一个简单的电子邮件功能。开发版本正在我的计算机上运行,这台计算机运行的是Ubuntu。生产版本将在生产服务器上运行 当我试图给自己发送一封测试邮件时,我收到一条异常消息:“无法发送邮件”。我不知道这是环境问题还是代码问题。我没有使用传输,所以我认为它默认为Zend\u Mail\u transport\u Sendmail。这是我的密码: public function sendtestAction() { $mail = new Zend_M

我正在开发一个zend框架应用程序,其中包括一个简单的电子邮件功能。开发版本正在我的计算机上运行,这台计算机运行的是Ubuntu。生产版本将在生产服务器上运行

当我试图给自己发送一封测试邮件时,我收到一条异常消息:“无法发送邮件”。我不知道这是环境问题还是代码问题。我没有使用传输,所以我认为它默认为
Zend\u Mail\u transport\u Sendmail
。这是我的密码:

public function sendtestAction()
{
    $mail = new Zend_Mail();
    $mail->setFrom('test@aol.com', 'Test Email');
    $mail->addTo('my@email.com', 'My Name');
    $mail->setSubject('This is just a test.');
    $mail->setBodyText('This is only a test.');
    $mail->send();
}
更新:我尝试了另一种方法,将SMTP传输设置为使用本地主机:

transport = new Zend_Mail_Transport_Smtp('localhost');
Zend_Mail::setDefaultTransport($transport); 
这次我遇到了一个不同的错误:“连接被拒绝”不确定这意味着什么。也许我还没准备好


更新:我想我没有安装SMTP服务器。现在,上面的两个代码示例都起作用了。

如果希望使用sendmail(这是默认设置),并且SMTP不同,则不希望设置默认传输


如果它不发送电子邮件,则表明您服务器上的sendmail或MTA未安装/设置不正确。

听起来您需要配置MTA,或者找到可以发送到的MTA。Ubuntu桌面应该默认设置一个,可能是exim或postfix,但如果您还没有配置它,它就不太可能运行。

您的smtp日志显示了什么吗?看起来您正在使用的服务器上没有smtp deamon。或者它没有配置为使用默认端口/var/log/I opened mail.err、mail.info、mail.log、mail.warn,但它们是空的。而且,邮件是我能找到的最接近日志的东西。没有任何smtp或sendmail日志或Directoristry telnet连接到localhost的端口25。发生什么事了?对不起,我对“远程登录”一无所知