在prameters.yml中配置smtp之后我尝试发送电子邮件,但我有这种警告:
ContextErrorException:警告:mkdir():/home/crashend/domains/tombax.com/public_html/gbuy/vendor/swiftmailer/swiftmailer/lib/classes/Swift/KeyCache/DiskKeyCache.php中没有这样的文件或目录273
在localhost上一切正常,但是在将项目传输到服务器后出现问题。 电子邮件无法发送。
来自控制器的代码,发送电子邮件:
$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);
来自parameters.yml的代码:
mailer_transport: smtp
mailer_host: smtp.myserver.com
mailer_user: exapmle@abc.net
mailer_password: pass
请帮忙。
答案 0 :(得分:1)
评论后:
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目录。
答案 1 :(得分:0)
您的假脱机路径可能设置错误(在服务器上与您的开发环境不同)
查看你的config.yml并确保SwiftMailer假脱机目录是正确的,并且它在服务器上是存在的(并且你的用户对它有权限)。
答案 2 :(得分:0)
I had the same problem today. Find this article
我要做的就是:将 PrivateTmp 设置为 false
PrivateTmp=false
在
/lib/systemd/system/apache2.service
然后重新加载服务
sudo systemctl daemon-reload
sudo systemctl restart apache2