我的Web服务器出于安全考虑禁用了邮件,我现在需要重新配置我的cakephp代码,以便按照主机的建议通过SMTP发送电子邮件。
我的代码在本地主机上运行良好,并启用了php邮件
use Cake\Mailer\Email;
class LoansController extends AppController
public function sendtestemail(){
$email = new Email();
$email->setViewVars(['name' => 'test test', 'subject'=>'subject test',
'message'=>'testit']);
$email
->template('bulkemail')
->emailFormat('html')
->to('info@test.co.ke')
->from('info@test.co.ke')
->subject($subject)
->send();
}
错误:无法发送电子邮件:由于安全原因,邮件()已被禁用Cake\Network\Exception\SocketException
2条答案
按热度按时间1zmg4dgp1#
我的代码在本地主机上运行良好,并启用了php邮件
它在本地主机中工作正常,但在您的远程主机中却不行,因为您的主机公司禁用了它,而您 * 可能 * 对它没有太多的控制权。
要在cakephp中发送电子邮件,请使用Cakephp 3的Email类。在config文件夹下的app.php中,在EmailTransport表中添加一个新条目。
在您的情况下为'Smtp'。请在其中指定主机、端口、用户名和密码:
现在在控制器中,发送电子邮件的函数在transport()函数中使用上述条目,如下所示。
在控制器中添加路径-使用Cake\Mailer\Email:
还要记住,许多托管公司也封锁默认的smtp端口。(例如,我知道数字海洋这样做)。所以,你可能必须改变端口或联系他们为你打开它(通常是在某种验证之后)。
关于我刚才所作的一些参考回答:https://www.digitalocean.com/community/questions/digital-ocean-firewall-blocking-sending-email
jyztefdp2#
对我有效的方法来自https://book.cakephp.org/2/en/core-utility-libraries/email.html
编辑/app/配置/email. php