保存来自Laravel控制器的电子邮件草稿

时间:2019-09-04 03:47:11

标签: php laravel email

试图弄清是否有一种优雅的方法可以将HTML字符串作为电子邮件正文“保存”到我邮箱的“草稿”文件夹中。

IMAP可能是一个选项。但是,不想使用php_imap(),因为在我的MacOS Mojave上配置它变得很痛苦。

此外,我试图找出zend-mail,但找不到如何执行此操作的好例子。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

我有一个解决方法。

控制器:

 try {
    Mail::to([])->send(new MailTemplate($this, $filename));
} catch (\Swift_TransportException $e) {}

邮件模板

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Storage;

class MailTemplate extends Mailable
{
    use Queueable, SerializesModels;

    public $order;
    public $filename;

    /**
     * MailTemplate constructor.
     * @param Order $order
     * @param $filename
     */
    public function __construct(Order $order, $filename)
    {
        $this->order = $order;
        $this->filename = $filename;

        $this->withSwiftMessage(function ($message) {
            $email = $this->order->id . '.eml';
            $path = 'email/' . $email;
            Storage::put($path , $message->toString());
        });
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        $subject = 'Notification: ';
        $this->cc($this->order->requestor->email);
        if ($this->filename !== null)
            $this->attach($this->filename);

        return $this->subject($subject)->view('emails.apac', ['order' => $this->order]);
    }
}

您会在storage / app /

中找到一封电子邮件草稿