【发布时间】:2011-09-13 08:46:04
【问题描述】:
【问题讨论】:
标签: zend-framework email
【问题讨论】:
标签: zend-framework email
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"
以上是我在 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;
我的优点是,稍后,在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
在本例中,My_Service_Email 是我创建的一个使用视图脚本发送电子邮件的类。在开发中,将调用 generateEmailFilename 来生成电子邮件文件的名称。它只是创建一个带有时间戳的文件名,这样电子邮件就不会相互覆盖。这至少对于我的测试目的来说已经足够了。大多数情况下,我只想看到视图脚本中的文本正在发送到电子邮件。
【讨论】: