我在注册时向用户发送电子邮件。为此,我使用Zend的默认功能。 为此,我在我的Bootstrap文件中添加了代码。
protected function _initMail()
{
try {
$config = array(
'auth' => 'login',
'username' => 'username@gmail.com',
'password' => 'password',
'ssl' => 'tls',
'port' => 587
);
$mailTransport = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config);
Zend_Mail::setDefaultTransport($mailTransport);
} catch (Zend_Exception $e){
}
}
现在我需要的是用户名,密码和端口我想让这个字段动态化。我想从数据库中获取此记录。任何人都可以告诉我,我该如何解决这个问题。任何帮助将不胜感激。
答案 0 :(得分:1)
我会说你没有将这些放入数据库。更好的方法是将它们放入配置文件,然后从那里设置它们。执行数据库调用每个单一时间调用应用程序并不是最佳选择。
你应该这样做的方式是:
protected function _initMail()
{
try {
$config = Zend_Controller_Front::getInstance()->getParam('bootstrap');
$config = $config->getOption("mail");
$mailTransport = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config);
Zend_Mail::setDefaultTransport($mailTransport);
} catch (Zend_Exception $e){
}
}
假设你的application.ini有这个:
mail.auth="login"
mail.username="username@gmail.com"
mail.password="password"
mail.ssl="tls"
mail.port=587
然而如果您决定要这样做,并在application.ini文件中设置数据库(假设您使用ini文件进行配置),请执行以下操作:
resources.db.adapter = "PDO_MYSQL"
resources.db.params.host = "your.database.host"
resources.db.params.dbname = "database_name"
resources.db.params.username = "username"
resources.db.params.password = "password"
resources.db.isDefaultTableAdapter = true
然后你可以这样做:
protected function _initMail()
{
$resource = $bootstrap->getPluginResource('db');
$db = $resource->getDbAdapter();
$select=$db->select()->from("emailSetup");
$credentials=$db->fetchOne($select);
[..email part here..]
}
P.S。我没有测试过选择,但你应该得到它的要点。