zend框架发送邮件

cwh*_*rer 1 email zend-framework

我需要通过smtp发送邮件.什么是最好的方法:在这里声明application.ini中的所有内容或为其编写模块?

有没有人有一个有效的例子?

关心安德烈

Jer*_*via 8

resources.mail.transport.type = smtp
resources.mail.transport.host = "server.smtp.com"
resources.mail.transport.auth = login
resources.mail.transport.username = "username@email.com"
resources.mail.transport.password = "ultraPass"
resources.mail.transport.ssl = ssl
resources.mail.transport.port = 465
resources.mail.transport.register = true ; True by default

resources.mail.defaultFrom.email = thebank@bank.com
resources.mail.defaultFrom.name = "The bank"
resources.mail.defaultReplyTo.email = replyTo.jank@bank.com
resources.mail.defaultReplyTo.name = "replier"
Run Code Online (Sandbox Code Playgroud)

以上是我在application.ini文件的生产部分中所拥有的内容.

后来,当我想发送邮件时,我会执行以下操作

    $view = $this->getView();

    $mail = new Zend_Mail();

    $emailText = $view->render( 'theEmailFileSomewhere.phtml' );

    $mail->addTo( $emailAddress, $usersfirstname )
            ->setSubject( 'Hi ' . $usersfirstname  . '!' )
            ->setBodyText( $emailText, $this->_charset ) //charset is utf-8
            ->send();

    return true;
Run Code Online (Sandbox Code Playgroud)

我的专家是后来,在ini文件的开发部分,我可以轻松地将其更改为简单的文件邮件程序.因此,电子邮件将作为本地系统上的文件输出,而不是实际发送电子邮件.

另一个专家是有人'安装'应用程序可以从ini文件中完成所有操作,如果这是你设计它的方式.

但是,您也可以设置资源来执行此操作.

与此相关的是,您的凭据和所有内容都在.ini文件中,当您可能不希望它们存在时.

你可以做的是设置一个资源,从环境变量中提取凭证,这样才不会真正成为应用程序的一部分.

如果你设置你的资源这样,那么谁安装的应用程序必须知道如何设置这些环境变量或他们将有一个很难搞清楚它自己,除非你添加一些详细的错误,是.

如果你很好奇,这就是我在ini的开发部分中所做的.

resources.mail.transport.type = file
resources.mail.transport.path = APPLICATION_PATH "/../data/testemails/"
resources.mail.transport.callback[] = "My_Service_Email"
resources.mail.transport.callback[] = "generateEmailFilename"
resources.mail.transport.register = true ; True by default
Run Code Online (Sandbox Code Playgroud)

在这种情况下,My_Service_Email是我使用视图脚本发送电子邮件的类.在开发中,将调用generateEmailFilename以生成电子邮件文件的名称.它只是创建一个带有时间戳的文件名,以便电子邮件不会互相覆盖.这至少足以用于我的测试目的.大多数情况下,我只是想看到视图脚本中的文本正在进入电子邮件.