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

8
我正在开发一个包括简单电子邮件功能的Zend框架应用程序。开发版本运行在我的Ubuntu计算机上,生产版本将在生产服务器上运行。
当我尝试发送测试电子邮件给自己时,会弹出异常窗口并显示消息:“无法发送邮件”。我不确定这是环境问题还是代码问题。我没有使用传输方式,所以我认为它默认使用Zend_Mail_Transport_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服务器。这个教程让我很容易地建立了一个SMTP服务器。现在上面的两个代码示例都可以工作了。

你的SMTP日志显示了什么吗? - Mike B
1
看起来你正在使用的服务器上没有SMTP守护程序。或者它没有配置为使用默认端口。 - Ivan Nevostruev
在/var/log/目录下,我打开了mail.err、mail.info、mail.log和mail.warn文件,但它们都是空的。而且,mail是我能找到的最接近日志的东西。没有任何smtp或sendmail的日志或目录。 - Andrew
尝试使用telnet连接到本地主机的25端口。会发生什么? - Brian
对不起,我对“telnet'ing”一无所知。 - Andrew
2个回答

2

如果您希望使用sendmail(它是默认值),而SMTP不同,则不需要设置默认传输。

邮件未发送表明您的服务器上未安装或未正确设置sendmail或MTA。


2

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接