在 prameter.yml 中配置 smtp 后,我尝试发送电子邮件,但我有这种类型的警告:
ContextErrorException: 警告: mkdir(): 在/home/crashend/domains/tombax.com/public_html/gbuy/vendor/swiftmailer/swiftmailer/lib/classes/Swift/KeyCache/DiskKeyCache.php 行 273 中没有这样的文件或目录
在本地主机上一切正常,但是将项目传输到服务器后出现问题。电子邮件未送达。
来自发送电子邮件的控制器的代码:
$message = Swift_Message::newInstance()
->setSubject('Hello Email')
->setFrom(array('exapmle@abc.net' => 'Tom'))
->setTo(array('exapmle2@abc.net' => 'Jan'))
->setBody('abcd')
;
$this->get('mailer')->send($message);
来自参数.yml的代码:
mailer_transport: smtp
mailer_host: smtp.myserver.com
mailer_user: exapmle@abc.net
mailer_password: pass
请帮忙。
评论后:
if (is_writable($tmpDir = sys_get_temp_dir())) {
$preferences->setTempDir($tmpDir)->setCacheType('disk');
}
在/vendor/swiftmailer/swiftmailer/lib/preferences中.php一切正常。我认为问题出在对目录的权限上。Swiftmailer使用sys_get_temp_dir()函数尝试引用/tmp目录。
我今天遇到了同样的问题。查找此文章
我所要做的就是:将 PrivateTmp 设置为 false
PrivateTmp=false
在
/lib/systemd/system/apache2.service
然后重新加载服务
sudo systemctl daemon-reload
sudo systemctl restart apache2
您可能设置了错误的假脱机路径(它在服务器上与您的开发环境不同)
查看您的 config.yml 并确保 SwiftMailer 假脱机目录正确,并且它存在于服务器上(并且您的用户有权访问它)。