1
用这个拉我的头发。CakePHP - 不能通过SMTP发送电子邮件
当我在本地机器上开发了这个cakephp(2.2)应用程序时,我可以通过使用smtp的gmail发送电子邮件而没有任何问题。从那以后,我将它部署到1and1服务器上,不能再发送。更令人沮丧的是,我似乎无法从蛋糕中获得任何像样的调试信息。
继承人的代码:
if($fu['name']) {
$url = Router::url('/admin/', true);
$ms = $url;
$ms = wordwrap($ms,1000);
//============Email================//
// SMTP Options
$this->Email->smtpOptions = array(
'port'=>'465',
'timeout'=>'30',
'host' => 'ssl://smtp.gmail.com',
'username'=>'[email protected]',
'password'=>'password'
);
$this->Email->template = 'newExpenseClaim';
$this->Email->from = 'Expense Tracker <[email protected]>';
$this->Email->to = '[email protected]';
$this->Email->subject = 'New Expense Claim Submitted - Please Review';
$this->Email->sendAs = 'both';
$this->Email->delivery = 'smtp';
// Set username & url in email
$this->set('user', $fu['name']);
$this->set('ms', $ms);
//$this->Email->send();
if(!$this->Email->send()) {
CakeLog::write('debug', $this->Email->smtpError);
}
$this->set('smtp_errors', $this->Email->smtpError);
//============EndEmail=============//
}
我得到以下调试信息失败的每个时间(显示在屏幕上,没有进入调试日志是大量是烦人)。
Connection refused
Error: An Internal Error Has Occurred.
Stack Trace
CORE/Cake/Network/Email/SmtpTransport.php line 95 → CakeSocket->connect()
CORE/Cake/Network/Email/SmtpTransport.php line 60 → SmtpTransport->_connect()
CORE/Cake/Network/Email/CakeEmail.php line 1059 → SmtpTransport->send(CakeEmail)
CORE/Cake/Controller/Component/EmailComponent.php line 345 → CakeEmail->send(null)
APP/Controller/ExpenseClaimsController.php line 236 → EmailComponent->send()
APP/Controller/ExpenseClaimsController.php line 278 → ExpenseClaimsController->notifyAdminsOfNewClaims()
[internal function] → ExpenseClaimsController->add()
CORE/Cake/Controller/Controller.php line 485 → ReflectionMethod->invokeArgs(ExpenseClaimsController, array)
CORE/Cake/Routing/Dispatcher.php line 186 → Controller->invokeAction(CakeRequest)
CORE/Cake/Routing/Dispatcher.php line 161 → Dispatcher->_invoke(ExpenseClaimsController, CakeRequest, CakeResponse)
APP/webroot/index.php line 92 → Dispatcher->dispatch(CakeRequest, CakeResponse)
任何人都可以帮忙吗?在此先感谢
**更新了包装和soctet信息**
这些都是包装和插座我从这些函数返回:
包装器:
array(
(int) 0 => 'https',
(int) 1 => 'ftps',
(int) 2 => 'compress.zlib',
(int) 3 => 'compress.bzip2',
(int) 4 => 'php',
(int) 5 => 'file',
(int) 6 => 'data',
(int) 7 => 'http',
(int) 8 => 'ftp',
(int) 9 => 'zip'
)
套接字
array(
(int) 0 => 'tcp',
(int) 1 => 'udp',
(int) 2 => 'unix',
(int) 3 => 'udg',
(int) 4 => 'ssl',
(int) 5 => 'sslv3',
(int) 6 => 'sslv2',
(int) 7 => 'tls'
)
嗨,我刚刚检查你说的文件()代码,它会返回这个:'URL文件访问被禁用在服务器配置中' 我是没有试图让文件访问一个url,但只能通过smtp发送 - 当然它不一样? –
我正在查看phpinfo文件,我该找什么? –
如果在主机上禁用URL文件访问,那么99%被禁用与套接字一起使用。用于连接到Gmail的套接字。你可以使用这个函数获取包装的列表:http://www.php.net/manual/en/function.stream-get-wrappers.php和支持的套接字列表:http://www.php.net/ manual/en/function.stream-get-transports.php – newman