如何使用 Zend_Mail、sendmail 和 localhost 发送电子邮件?
Posted
技术标签:
【中文标题】如何使用 Zend_Mail、sendmail 和 localhost 发送电子邮件?【英文标题】:How to send an email using Zend_Mail, sendmail, and localhost? 【发布时间】:2010-12-10 16:27:30 【问题描述】:我正在开发一个包含简单电子邮件功能的 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 传输设置为使用 localhost:
transport = new Zend_Mail_Transport_Smtp('localhost');
Zend_Mail::setDefaultTransport($transport);
这次我得到了一个不同的错误:“连接被拒绝”不知道这意味着什么。也许我还没有设置什么?
更新:我想我没有安装/设置 SMTP 服务器。 This tutorial made it really easy for me to get an SMTP server up an running。现在上面的两个代码示例都可以工作了。
【问题讨论】:
你的 smtp 日志显示什么? 看起来您正在使用的服务器上没有 SMTP 守护程序。或者未配置为使用默认端口 在 /var/log/ 我打开了 mail.err、mail.info、mail.log、mail.warn 但它们是空的。此外,邮件是我能找到的最接近日志的东西。没有任何 smtp 或 sendmail 日志或目录 尝试远程登录到 localhost 的 25 端口。会发生什么? 对不起,我对“telnet'ing”一无所知 【参考方案1】:听起来您需要配置一个 MTA,或者找到一个可以发送到的 MTA。 Ubuntu 桌面应该默认设置一个,可能是 exim 或 postfix,但如果你没有配置它,它就不太可能运行。
【讨论】:
【参考方案2】:如果您想使用 sendmail(它是默认值)并且 SMTP 不同,您不想设置默认传输。
它不发送电子邮件表明您服务器上的 sendmail 或 MTA 未安装/未正确设置。
【讨论】:
以上是关于如何使用 Zend_Mail、sendmail 和 localhost 发送电子邮件?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 zend_mail 和 zend_mail_storage_imap 将电子邮件移动到不同的文件夹?