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

时间:2014-12-05 19:54:42

标签: symfony swiftmailer

在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

请帮忙。

3 个答案:

答案 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