使用laravel发送电子邮件时抛出错误

时间:2018-01-25 10:11:44

标签: laravel swiftmailer

将Web应用程序迁移到新服务器后,使用laravel发送电子邮件时抛出错误。它在以前的服务器上工作正常。

enter image description here

评论中编辑的相关错误说明:

  

[2018-01-25 13:31:10] production.ERROR:ErrorException:mkdir():否   这样的文件或目录   在/ var / www / html等/ jbservice /供应商/ swiftmailer / swiftmailer / lib中/ C lasses /雨燕/ KeyCach E /磁盘$   堆栈跟踪:#0 [内部功能]:   照亮\基金会\引导\ HandleExceptions-> handleErro R(2,   'mkdir():没有成功...','/ var / www / html / j ...',273,数组)#1   的/ var / www / html等/ jbservice /供应商/ swiftmailer / swiftmailer / LIB / C lasses /夫特/ KeyCach E / DiskKeyCache.php(2 73):   MKDIR( '/ TMP / 68d392a3e3 ...')

根据评论编辑的相关代码:

Mail::send('dashboard.emails.createticket', $data , function ($message) 
use ($data) { $message->subject('New Ticket: ' . $data['subject']) 
    ->to("atif@gmail.com") 
    ->from('HERE COMES THE SENDER EMAIL'); });

1 个答案:

答案 0 :(得分:1)

您可以查看日志。

如果它显示SwiftMailer正在尝试在默认的/ tmp文件夹中创建缓存:

要解决此问题,请在app / Providers / AppServiveProvider.php的boot()方法中更改TMPDIR环境变量。

/**
 * Bootstrap any application services.
 *
 * @return void
 */
public function boot()
{
    /**
     * Somehow PHP is not able to write in default /tmp directory and SwiftMailer was failing.
     * To overcome this situation, we set the TMPDIR environment variable to a new value.
     */
    if (class_exists('Swift_Preferences')) {
        \Swift_Preferences::getInstance()->setTempDir(storage_path().'/tmp');
    } else {
        \Log::warning('Class Swift_Preferences does not exists');
    }
}

请确保Web服务器可以写入新的“tmp”文件夹位置。