Laravel:如何使用sendmail发送电子邮件

a9wyjsp7  于 2023-05-01  发布在  其他
关注(0)|答案(3)|浏览(140)

我正在使用Laravel 7,我想使用Laravel Mail Facade使用sendemail驱动程序发送电子邮件,因为当我使用php邮件功能时它可以工作,但我想使用Laravel Mail Facade。
这是我的。env文件电子邮件配置

MAIL_DRIVER=sendmail
MAIL_SENDMAIL='/usr/sbin/sendmail -t -i'

这是我在config/mail中的默认邮件。PHP

'default' => env('MAIL_MAILER', 'sendmail'),
'mailers' => [
    'smtp' => [
        'transport' => 'smtp',
        'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
        'port' => env('MAIL_PORT', 587),
        'encryption' => env('MAIL_ENCRYPTION', 'tls'),
        'username' => env('MAIL_USERNAME'),
        'password' => env('MAIL_PASSWORD'),
    ],
    'ses' => [
        'transport' => 'ses',
    ],
    'sendmail' => [
        'transport' => 'sendmail',
        'path' => '/usr/sbin/sendmail -bs',
    ],
    'log' => [
        'transport' => 'log',
        'channel' => env('MAIL_LOG_CHANNEL'),
    ],
    'array' => [
        'transport' => 'array',
    ],
],

什么是正确的配置如何使它工作?

z9smfwbn

z9smfwbn1#

从你的问题中,我无法确切地看出你在这个过程中走了多远,所以我会试着为你解释一下。
您需要使用Artisan创建电子邮件:

php artisan make:mail MailName

Laravel中的邮件基本上只是视图,所以在邮件的build()函数中,引用这样的视图:

$this->view('folder.view');

你需要配置一个电子邮件地址,你可以在邮件文件中这样做:

$this->from('youremail@domain.com');

或者您可以在mail.php文件中全局设置一个:

'from' => ['address' => 'example@example.com', 'name' => 'App Name'],

要发送邮件,请使用以下行:

use Illuminate\Support\Facades\Mail; // Put this at the top of your controller

Mail::to($recipient)->send(new MailName);

如果你在视图中使用变量,你需要传递它们,你可以这样做:

use Illuminate\Support\Facades\Mail; // Put this at the top of your controller
    
Mail::to($recipient)->send(new MailName($variables));

有关CC、附件等其他信息,请参阅the docs

wqlqzqxt

wqlqzqxt3#

use Illuminate\Mail\Mailable;
use Illuminate\Support\Facades\Mail;

class X
{
    public function sendEmail() : bool
    {
        try {
            $mailable = new Mailable();

            $mailable
                ->from('hello@example.com')
                ->to('hello@example.com')
                ->subject('test subject')
                ->html('my first message');

            $result = Mail::send($mailable);
            return true;
        } catch (\Symfony\Component\Mailer\Exception\TransportException $exception) {
            return false;
        }
    }
}

相关问题