Symfony2 - 发送电子邮件警告:mkdir():没有这样的文件或目录



在 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 假脱机目录正确,并且它存在于服务器上(并且您的用户有权访问它)。

最新更新