Menghantar e-mel
- Pengenalan
- Janakan kelas maiil
- Paparan konfigurasi
- Lihat data
- Attachment
- Inline Lampiran
- Custom Swiftmailer Message
- Markdown E -mel Class
- Generate Markdown E -mel .
- Mel & Pembangunan Tempatan
- Acara
- Pengenalan
Laravel menyediakan API e-mel yang bersih dan menyegarkan berdasarkan perpustakaan - SwiftMailer. Laravel menyediakan pemacu untuk SMTP, Mailgun, SparkPost, Amazon SES, fungsi
mel
PHP dansendmail
, membolehkan anda menghantar e-mel dengan cepat melalui perkhidmatan tempatan atau awan.Prasyarat pemandu mel
Pemandu berasaskan API seperti Mailgun dan SparkPost Biasanya lebih ringkas dan lebih pantas daripada pelayan SMTP, jadi gunakan perkhidmatan ini jika boleh. Semua pemacu API memerlukan aplikasi memasang perpustakaan HTTP Guzzle Anda boleh memasangnya melalui pengurus pakej Komposer:composer require guzzlehttp/guzzle
Mailgun Driver
- Untuk menggunakan pemacu Mailgun (Mailgun adalah percuma untuk 10,000 e-mel pertama, dan caj berikutnya dikenakan), mula-mula pasang Guzzle, dan kemudian tetapkan pilihan
driver
dalam fail konfigurasiconfig/mail .php
kepada < code>mailgun . Seterusnya, sahkan bahawa fail konfigurasiconfig/services.php
mengandungi pilihan berikut:'mailgun' => [ 'domain' => 'your-mailgun-domain', 'secret' => 'your-mailgun-key', ],
Jika anda tidak menggunakan "AS" Wilayah Mailgun- , anda boleh menentukan profil terminal untuk wilayah anda dalam
'mailgun' => [ 'domain' => 'your-mailgun-domain', 'secret' => 'your-mailgun-key', 'endpoint' => 'api.eu.mailgun.net', ],
Postmark Driver
Untuk menggunakan pemacu Postmark, pasang Postmark's SwiftMailer melalui Composer:
composer require wildbit/swiftmailer-postmark
Seterusnya, pasang Guzzle dan tambahkan
driver dalam
pilihan ditetapkan kepadaconfig/mail.php
fail konfigurasipostmark
. Akhir sekali, sahkan bahawa fail konfigurasiconfig/services.php
anda mengandungi pilihan berikut:config / mail.php
配置文件中的driver
选项设置为postmark
。 最后,验证您的config / services.php
配置文件包含以下选项:'postmark' => [ 'token' => 'your-postmark-token', ],
SparkPost 驱动
要使用 SparkPost 驱动,首先安装 Guzzle,然后再配置文件
config/mail.php
中设置driver
选项值为sparkpost
。接下来,验证配置文件config/services.php
包含如下选项:'sparkpost' => [ 'secret' => 'your-sparkpost-key', ],
如果有必要的话,你还可以设置 API 端点使用:
'sparkpost' => [ 'secret' => 'your-sparkpost-key', 'options' => [ 'endpoint' => 'https://api.eu.sparkpost.com/api/v1/transmissions', ], ],
SES 驱动
要使用 Amazon SES 驱动(收费),先安装 Amazon AWS 的 PHP SDK,你可以通过添加如下行到
composer.json
文件的require
部分然后运行composer update
命令来安装该库:"aws/aws-sdk-php": "~3.0"
接下来,设置配置文件
config/mail.php
中的driver
选项为ses
。然后,验证配置文件config/services.php
包含如下选项:'ses' => [ 'key' => 'your-ses-key', 'secret' => 'your-ses-secret', 'region' => 'ses-region', // e.g. us-east-1 ],
如果您在执行 SES 时需要包含 附加选项
SendRawEmail
请求,您可以在ses
配置中定义options
数组:'ses' => [ 'key' => 'your-ses-key', 'secret' => 'your-ses-secret', 'region' => 'ses-region', // e.g. us-east-1 'options' => [ 'ConfigurationSetName' => 'MyConfigurationSet', 'Tags' => [ [ 'Name' => 'foo', 'Value' => 'bar', ], ], ], ],
生成可邮寄类
在 Laravel 中,应用发送的每一封邮件都可以表示为 “可邮寄” 类,这些类都存放在
app/Mail
目录。如果没看到这个目录,别担心,它将会在你使用make:mail
命令创建第一个可邮寄类时生成:php artisan make:mail OrderShipped
编写可邮寄类
所有的可邮寄类配置都在
build
方法中完成,在这个方法中,你可以调用多个方法,例如from
,subject
,view
, 和attach
来配置邮件的内容和发送。配置发件人
使用
from
方法我们来看一下邮件发件人的配置,或者,换句话说,邮件来自于谁。有两种方式来配置发送者,第一种方式是在可邮寄类的
build
方法方法中调用from
/** * 构建消息. * * @return $this */ public function build(){ return $this->from('example@example.com') ->view('emails.orders.shipped'); }
pemandu SparkPost🎜Untuk menggunakan Pemacu SparkPost , mula-mula pasang Guzzle, dan kemudian tetapkan nilai pilihandriver
kepadasparkpost
dalam fail konfigurasiconfig/mail.php
. Seterusnya, sahkan bahawa fail konfigurasiconfig/services.php
mengandungi pilihan berikut: 🎜'from' => ['address' => 'example@example.com', 'name' => 'App Name'],
🎜Jika perlu, anda juga boleh menetapkan titik akhir APIGunakan: 🎜'reply_to' => ['address' => 'example@example.com', 'name' => 'App Name'],
🎜🎜pemandu SES🎜🎜Untuk menggunakan pemacu Amazon SES (dicas), pasang dahulu Amazon AWS PHP SDK, anda boleh memasang pustaka dengan menambahkan baris berikut pada bahagianrequire
failcomposer.json
dan kemudian menjalankankemas kini komposer kod> arahan: 🎜
/** * 构建消息. * * @return $this */ public function build(){ return $this->view('emails.orders.shipped'); }
🎜Seterusnya, tetapkan pilihandriver
dalam fail konfigurasiconfig/mail.php
kepadases
. Kemudian, sahkan bahawa fail konfigurasiconfig/services.php
mengandungi pilihan berikut: 🎜/** * 构建消息. * * @return $this */ public function build(){ return $this->view('emails.orders.shipped') ->text('emails.orders.shipped_plain'); }
🎜Jika anda perlu memasukkan Pilihan tambahanSendRawEmail
permintaan, anda boleh membuatnya dalamses
Tentukan tatasusunanoptions
dalam konfigurasi: 🎜<?php namespace App\Mail; use App\Order;use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; class OrderShipped extends Mailable{ use Queueable, SerializesModels; /** * 订单实例. * * @var Order */ public $order; /** * 创建一个新的消息实例. * * @return void */ public function __construct(Order $order) { $this->order = $order; } /** * 构建消息. * * @return $this */ public function build() { return $this->view('emails.orders.shipped'); } }
🎜🎜🎜Jana kelas boleh mail
🎜Dalam Laravel, setiap e-mel yang dihantar oleh aplikasi boleh diwakili sebagai kelas "boleh mel" dan kelas ini disimpan dalamapl/Mel kod> direktori. Jika anda tidak melihat direktori ini, jangan risau, ia akan dijana apabila anda mencipta kelas mailable pertama anda menggunakan perintah make:mail
: 🎜<div> Price: {{ $order->price }} </div>
🎜 🎜🎜Menulis kelas yang boleh dihantar
🎜Semua konfigurasi kelas yang boleh diilhamkan adalah dalam kaedahbuild
Selesai dalam kaedah ini, anda boleh memanggil berbilang kaedah, sepertifrom
,subject
,view
danattach
code. > untuk mengkonfigurasi kandungan dan penghantaran e-mel. 🎜🎜🎜🎜Mengkonfigurasi pengirim
🎜🎜Menggunakan kaedahfrom
🎜🎜Mari kita lihat konfigurasi penghantar e-mel, atau, dengan kata lain, dari siapa e-mel itu datang. Terdapat dua cara untuk mengkonfigurasi penghantar Cara pertama adalah dengan memanggil kaedahfrom
dalam kaedahbuild
kelas mailable: 🎜<?php namespace App\Mail; use App\Order; use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; class OrderShipped extends Mailable{ use Queueable, SerializesModels; /** * 订单实例. * * @var Order */ protected $order; /** * 创建一个新的实例. * * @return void */ public function __construct(Order $order) { $this->order = $order; } /** * 构建消息. * * @return $this */ public function build() { return $this->view('emails.orders.shipped') ->with([ 'orderName' => $this->order->name, 'orderPrice' => $this->order->price, ]); } }
🎜🎜Gunakan alamat
dari global from
地址不过,如果你的应用在所有邮件中都使用相同的发送地址,在每个生成的可邮寄类中都调用
from
方法就显得很累赘。取而代之地,你可以在配置文件config/mail.php
中指定一个全局的发送地址, 如果在 mailable 类中未指定其他from
地址,则将使用此地址:<div> Price: {{ $orderPrice }} </div>
此外,您可以在
config / mail.php
配置文件中定义全局reply_to
地址:/** * Build the message. * * @return $this */ public function build() { return $this->view('emails.orders.shipped') ->attach('/path/to/file'); }
配置视图
你可以在可邮寄类的
build
方法中使用view
方法来指定渲染邮件内容时使用哪个视图模板,由于每封邮件通常使用 Blade 模板来渲染内容,所以你可以在构建邮件 HTML 时使用 Blade 模板引擎提供的所有功能:/** * Build the message. * * @return $this */ public function build() { return $this->view('emails.orders.shipped') ->attach('/path/to/file', [ 'as' => 'name.pdf', 'mime' => 'application/pdf', ]); }
{注:} 你可以创建一个
resources/views/emails
目录来存放所有邮件模板,当然,你也可以将邮件模板放到resources/views
目录下任意其它位置。纯文本邮件
如果你想要定义一个纯文本格式的邮件,可以使用
Walau bagaimanapun, jika aplikasi anda menggunakan alamat penghantaran yang sama untuk semua e-mel, panggiltext
方法。和view
方法一样,text
dari
Kaedah ini kelihatan menyusahkan. Sebaliknya, anda boleh menentukan alamat penghantaran global dalam fail konfigurasiconfig/mail.php
, yang akan digunakan jika tiada alamatfrom
lain dinyatakan dalam alamat mailable :/** * 构建消息。 * * @return $this */ public function build(){ return $this->view('email.orders.shipped') ->attachFromStorage('/path/to/file'); }
Selain itu, anda boleh mentakrifkanreply_to
global dalam fail konfigurasiconfig/mail.php
Alamat:/** * 构建消息。 * * @return $this */ public function build(){ return $this->view('email.orders.shipped') ->attachFromStorage('/path/to/file', 'name.pdf', [ 'mime' => 'application/pdf' ]); }
Paparan konfigurasiAnda boleh menggunakanview
build kelas yang boleh diilhamkan > kaedah untuk menentukan templat paparan yang hendak digunakan semasa memaparkan kandungan e-mel Memandangkan setiap e-mel biasanya menggunakan templat Blade untuk memaparkan kandungan, anda boleh menggunakan semua ciri yang disediakan oleh enjin templat Blade semasa membina HTML e-mel:
{Nota :} Anda boleh membuat direktori/** * 构建消息。 * * @return $this */ public function build(){ return $this->view('email.orders.shipped') ->attachFromStorageDisk('s3', '/path/to/file'); }
sumber/paparan/e-mel untuk menyimpan semua templat e-mel Sudah tentu, anda juga boleh meletakkan templat e-mel di mana-mana lokasi lain di bawah sumber/. pandangan direktori . E-mel teks biasa
Jika anda ingin menentukan e-mel dalam format teks biasa, anda boleh menggunakanteks kaedah . Seperti kaedah view
, kaedahtext
menerima nama templat yang digunakan untuk memaparkan kandungan e-mel Anda boleh menentukan sama ada mesej teks biasa atau mesej HTML:/** * Build the message. * * @return $this */ public function build() { return $this->view('emails.orders.shipped') ->attachData($this->pdf, 'name.pdf', [ 'mime' => 'application/pdf', ]); }
🎜🎜. 🎜 🎜🎜🎜🎜Lihat data 🎜🎜🎜🎜 melalui harta awam 🎜🎜 Biasanya, kita perlu menghantar beberapa data ke paparan HTML yang memaparkan e-mel untuk digunakan. Terdapat dua cara untuk menghantar data ke paparan, pertama, sebarang sifat awam yang ditakrifkan dalam kelas boleh mail anda akan dihantar secara automatik ke paparan. Oleh itu, anda boleh menghantar data kepada pembina kelas boleh dihantar dan menetapkan data sebagai harta awam kelas: 🎜<body> Here is an image: <img src="{{ $message->embed($pathToImage) }}"> </body>
🎜Selepas data ditetapkan kepada harta awam, ia akan berkuat kuasa secara automatik dalam paparan, jadi anda boleh suka dalam Blade Akses mereka dengan cara yang sama seperti data lain dalam templat: 🎜<body> Here is an image from raw data: <img src="{{ $message->embedData($data, $name) }}"> </body>
🎜🎜Melalui kaedah
with
Jika anda ingin menyesuaikan format data e-mel sebelum menghantarnya ke templat, anda boleh menghantar data untuk dilihat secara manual. Biasanya, anda masih perlu menghantar data melalui pembina kelas yang boleh dihantar, tetapi kali ini anda perlu menetapkan data kepada atribut
protected
atauprivate
, supaya data adalah Ia tidak akan berkuat kuasa secara automatik dalam paparan. Kemudian, apabila kaedahwith
dipanggil, hantar data tatasusunan kepada kaedah supaya data berkuat kuasa dalam templat paparan:with
方法如果你想要在数据发送到模板之前自定义邮件数据的格式,可以通过
with
方法手动传递数据到视图。一般情况下,你还是需要通过可邮寄类的构造器传递数据,不过,这次你需要设置数据为protected
或private
属性,这样,这些数据就不会在视图中自动生效。然后,当调用with
方法时,传递数组数据到该方法以便数据在视图模板中生效:/** * 构建消息。 * * @return $this */ public function build(){ $this->view('emails.orders.shipped'); $this->withSwiftMessage(function ($message) { $message->getHeaders() ->addTextHeader('Custom-Header', 'HeaderValue'); }); }
数据通过
with
方法传递到视图后,将会在视图中自动生效,因此你也可以像在 Blade 模板访问其它数据一样访问传递过来的数据:php artisan make:mail OrderShipped --markdown=emails.orders.shipped
附件
要在邮件中加入附件,在
build
方法中使用attach
方法。attach
方法接受文件的绝对路径作为它的第一个参数:/** * Build the message. * * @return $this */ public function build(){ return $this->from('example@example.com') ->markdown('emails.orders.shipped'); }
附加文件到消息时,你也可以传递
数组
给attach
方法作为第二个参数,以指定显示名称和 / 或是 MIME 类型:@component('mail::message') # 订单已发货 Your order has been shipped! @component('mail::button', ['url' => $url]) View Order @endcomponent Thanks,<br> {{ config('app.name') }} @endcomponent
从磁盘中添加附件
如果您已在文件存储上存储了一个文件,则可以使用
attachFromStorage
方法将其附加到电子邮件中:@component('mail::button', ['url' => $url, 'color' => 'success']) View Order @endcomponent
如有必要,您可以使用
attachFromStorage
方法的第二个和第三个参数指定文件的附件名称和其他选项:@component('mail::panel') This is the panel content. @endcomponent
如果需要指定默认磁盘以外的存储磁盘,可以使用
attachFromStorageDisk
方法:@component('mail::table') | Laravel | Table | Example | | ------------- |:-------------:| --------:| | Col 2 is | Centered | | | Col 3 is | Right-Aligned | | @endcomponent
原始数据附件
attachData
可以使用字节数据作为附件。例如,你可以使用这个方法将内存中生成而没有保存到磁盘中的 PDF 附加到邮件中。attachData
方法第一个参数接收原始字节数据,第二个参数为文件名,第三个参数接受一个数组以指定其他参数:php artisan vendor:publish --tag=laravel-mail
内联附件
在邮件中嵌入内联图片通常都很麻烦;不过,Laravel 提供了向邮件中附加图片并获取适当的 CID 的简便方法。可以使用邮件模板中
$message
变量的embed
方法来嵌入内联图片。Laravel 自动使$message
变量在全部邮件模板中可用,不需要担心如何手动传递它:<?php namespace App\Http\Controllers; use App\Order;use App\Mail\OrderShipped; use Illuminate\Http\Request; use Illuminate\Support\Facades\Mail; use App\Http\Controllers\Controller; class OrderController extends Controller{ /** * 发送给定的订单。 * * @param Request $request * @param int $orderId * @return Response */ public function ship(Request $request, $orderId) { $order = Order::findOrFail($orderId); // 发送订单... Mail::to($request->user())->send(new OrderShipped($order)); } }
{note}
$message
Mail::to($request->user()) ->cc($moreUsers) ->bcc($evenMoreUsers) ->send(new OrderShipped($order));
Selepas data dihantar ke paparan melalui < kod>dengan kaedah, akan berkuat kuasa secara automatik dalam paparan, jadi anda juga boleh mengakses data yang diluluskan sama seperti mengakses data lain dalam templat Blade:
$invoice = App\Invoice::find(1); return (new App\Mail\InvoicePaid($invoice))->render();
Lampiran
Untuk menambah lampiran pada e-mel, gunakan kaedah
attach
dalam kaedahbuild
. Kaedahattach
menerima laluan mutlak ke fail sebagai hujah pertamanya:Route::get('mailable', function () { $invoice = App\Invoice::find(1); return new App\Mail\InvoicePaid($invoice); });
Apabila melampirkan fail pada mesej, anda juga boleh menghantar
array
ke < kod>lampirkan kaedah sebagai parameter kedua untuk menentukan nama paparan dan/atau jenis MIME: 🎜Mail::to($request->user()) ->cc($moreUsers) ->bcc($evenMoreUsers) ->queue(new OrderShipped($order));
🎜🎜Tambah lampiran daripada cakeraJika anda sudah mempunyai fail yang disimpan pada Storan Fail, anda boleh melampirkannya pada e-mel menggunakan kaedah
attachFromStorage
: 🎜$when = now()->addMinutes(10);Mail::to($request->user()) ->cc($moreUsers) ->bcc($evenMoreUsers) ->later($when, new OrderShipped($order));
Jika perlu, anda boleh menggunakan
Yang kedua dan parameter ketiga kaedah attachFromStorage
menentukan nama lampiran fail dan pilihan lain: 🎜$message = (new OrderShipped($order)) ->onConnection('sqs') ->onQueue('emails');Mail::to($request->user()) ->cc($moreUsers) ->bcc($evenMoreUsers) ->queue($message);
Jika anda perlu menentukan cakera storan selain daripada cakera lalai, anda boleh menggunakan
attachFromStorageDisk
kaedah : 🎜use Illuminate\Contracts\Queue\ShouldQueue; class OrderShipped extends Mailable implements ShouldQueue{ // }
🎜🎜Lampiran data mentahattachData
Anda boleh menggunakan data bait sebagai lampiran. Sebagai contoh, anda boleh menggunakan kaedah ini untuk melampirkan PDF pada e-mel yang dijana dalam memori tetapi tidak disimpan pada cakera. Parameter pertama kaedahattachData
menerima data bait mentah, parameter kedua ialah nama fail dan parameter ketiga menerima tatasusunan untuk menentukan parameter lain: 🎜Mail::to($request->user())->locale('es')->send( new OrderShipped($order) );
🎜Lampiran sebaris
Membenamkan imej sebaris dalam e-mel selalunya menyusahkan; Walau bagaimanapun, Laravel menyediakan cara mudah untuk melampirkan imej pada e-mel dan mendapatkan CID yang sesuai. Imej sebaris boleh dibenamkan menggunakan kaedah
embed
pembolehubah$message
dalam templat e-mel. Laravel secara automatik menjadikan pembolehubah$message
tersedia dalam semua templat e-mel, tidak perlu risau untuk menghantarnya secara manual: 🎜use Illuminate\Contracts\Translation\HasLocalePreference; class User extends Model implements HasLocalePreference{ /** * 获取用户首选区域设置。 * * @return string */ public function preferredLocale() { return $this->locale; } }
{note}
$message
dalam teks Tidak tersedia dalam Mesej kerana mesej teks tidak boleh menggunakan lampiran sebaris. 🎜🎜🎜🎜Benamkan lampiran data asal
Jika anda sudah mempunyai rentetan data asal yang anda ingin benamkan dalam templat e-mel, anda boleh menggunakan kaedah
embedData
bagi pembolehubah$message
:$message
变量的embedData
方法:Mail::to($request->user())->send(new OrderShipped($order));
自定义 SwiftMailer 消息
Mailable
基类的withSwiftMessage
方法允许你注册一个回调,它将在发送消息之前被调用,原始的 SwiftMailer 消息将作为该回调的参数:'to' => [ 'address' => 'example@example.com', 'name' => 'Example' ],
Markdown 格式的 Mailables 类
Markdown 格式 mailable 消息允许你从预构建模板和 mailable 类中的邮件通知组件获益。由于消息使用 Markdown 书写,Laravel 能够渲染出美观的、响应式的 HTML 模板消息,还能自动生成文本副本。
生成 Markdown 格式的 Mailables 类
要生成一个适用 Markdown 模板的 mailable,可以使用带有
--markdown
选项的make:mail
Artisan 命令:/** * 为应用映射事件侦听器。 * * @var array */ protected $listen = [ 'Illuminate\Mail\Events\MessageSending' => [ 'App\Listeners\LogSendingMessage', ], 'Illuminate\Mail\Events\MessageSent' => [ 'App\Listeners\LogSentMessage', ], ];
然后,在它的
rrreeebuild
方法中配置 mailable,调用markdown
方法代替view
方法。markdown
方法接受 Markdown 模板名和一个可选的在模板中可用的数组:编写 Markdown 消息
Markdown mailable 使用 Blade 组件和 Markdown 语法组合,让你可以更方便地利用 Laravel 预制组件构建邮件消息:
rrreee{tip} 编写 Markdown 邮件时不要使用额外的缩进。Markdown 解析器将把缩进内容渲染成代码块。
按钮组件
按钮组件渲染一个居中按钮链接。此组建接受两个参数,
url
和可选的color
。颜色选项支持primary
、success
和error
rrreeeSesuaikan mesej SwiftMailer
Kelas asas boleh mel Kaedah withSwiftMessage
membolehkan anda mendaftarkan panggilan balik yang akan dipanggil sebelum menghantar mesej, dengan mesej SwiftMailer asal sebagai hujah untuk panggilan balik ini:rrreee
Mesej boleh mailable format markdown membolehkan anda mendapat manfaat daripada pra- templat terbina dan komponen pemberitahuan e-mel dalam kelas yang boleh dihantar . Oleh kerana mesej ditulis dalam Markdown, Laravel boleh menghasilkan mesej templat HTML yang cantik dan responsif dan menjana salinan teks secara automatik.Kelas Mailables format markdown
Jana kelas Mailables dalam format Markdown
Untuk menjana yang sesuai Templat turun nilai boleh didapati, anda boleh menggunakan perintahmake:mail
Artisan dengan pilihan--markdown
:rrreeeKemudian, dalambuild
Configure boleh dihantar dalam kaedah dan panggil kaedahmarkdown
dan bukannya kaedahview
. Kaedahmarkdown
menerima nama templat Markdown dan tatasusunan pilihan nama yang tersedia dalam templat: 🎜rrreee🎜🎜🎜🎜Menulis mesej Markdown
🎜Markdown mailable menggunakan gabungan komponen Blade dan sintaks Markdown, membolehkan anda lebih mudah menggunakan komponen pasang siap Laravel untuk membina mesej e-mel: 🎜rrreee🎜{tip } Jangan gunakan lekukan tambahan semasa menulis e-mel Markdown. Penghurai Markdown akan menjadikan kandungan inden ke dalam blok kod. 🎜
🎜🎜Komponen Butang🎜🎜Komponen Butang memaparkan pautan butang berpusat. Komponen ini menerima dua parameter,url
dan pilihancolor
. Pilihan warna menyokongutama, kejayaan dan error
. Anda boleh menambah seberapa banyak komponen butang pada mesej anda yang anda suka: 🎜rrreee🎜🎜🎜Komponen Panel🎜🎜Komponen Panel memaparkan blok teks tertentu di dalam panel dengan warna latar belakang yang berbeza sedikit daripada mesej yang lain. Membolehkan anda melukis blok teks amaran: 🎜rrreee🎜🎜🎜Komponen jadual🎜🎜Komponen jadual membolehkan anda menukar jadual Markdown kepada jadual HTML. Komponen ini menerima jadual Markdown sebagai kandungannya. Penjajaran lajur menyokong sintaks penjajaran jadual Markdown lalai: 🎜rrreee🎜🎜🎜🎜🎜🎜Komponen tersuai
Anda boleh mengeksport semua komponen e-mel Markdown ke aplikasi anda sendiri dan menggunakannya sebagai templat untuk komponen tersuai. Untuk mengeksport komponen ini, gunakan perintah
rrreeevendor:publish
Artisan dengan tag asetlaravel-mail
:laravel-mail
资产标签的vendor:publish
Artisan 命令:此命令将 Markdown 邮件组件导出到
resources/views/vendor/mail
目录。mail
目录包含html
和text
子目录, 分别包含各自对应的可用组件描述。可以按照自己的意愿自定义这些组件。自定义 CSS
组建导出以后,
resources/views/vendor/mail/html/themes
目录有一个default.css
文件。可以自此文件中自定义 CSS,这些样式将自动内联到 Markdown 邮件消息的 HTML 表示中。{tip} 如果想为 Markdown 组件创建完整的新主题,可以在
html/themes
目录新建一个 CSS 文件,并修改mail
配置文件的theme
选项。发送邮件
若要发送邮件,使用
rrreeeMail
facade 的to
方法。to
方法接受 邮件地址、用户实例或用户集合。如果传递一个对象或者对象集合,mailer 在设置收件人时将自动使用它们的email
和name
属性,因此请确保对象的这些属性可用。一旦制定了收件人,就可以将 mailable 类实例传递给send
方法:在发送消息时不止可以指定收件人。还可以通过链式调用「to」、「cc」、「bcc」一次性指定抄送和密送收件人:
rrreee渲染 Mailable
有时可能希望捕获 mailable 的 HTML 内容,而不发送它。可以调用 mailable 的
Arahan ini mengeksport komponen mel Markdown kerender
rrreeeresources / direktori view/vendor/mel
. Direktorimel
mengandungi subdirektorihtml
dantext
, yang mengandungi huraian masing-masing tentang komponen yang tersedia. Komponen ini boleh disesuaikan mengikut kehendak anda.CSS tersuai
Selepas mengeksport,resources/views/vendor/mail/html/themes
Direktori mempunyai faildefault.css
. CSS boleh disesuaikan daripada fail ini dan gaya ini akan diselaraskan secara automatik ke dalam perwakilan HTML mesej e-mel Markdown.{tip} Jika anda ingin mencipta tema baharu yang lengkap untuk komponen Markdown, anda boleh mencipta fail CSS baharu dalam direktorihtml/themes
dan mengubah suaimel< /code> pilihan
theme
fail konfigurasi.Menghantar Mel
Untuk menghantar mel, gunakan Kaedah
rrreeeto
fasadMel
. Kaedahto
menerima alamat e-mel, contoh pengguna atau koleksi pengguna. Jika anda menghantar objek atau koleksi objek, pengirim mel akan menggunakan sifate-mel
danname
mereka secara automatik apabila menetapkan penerima, jadi pastikan sifat ini tersedia pada objek. Sebaik sahaja penerima ditentukan, contoh kelas yang boleh dihantar boleh dihantar ke kaedahhantar
: rrreeeAnda boleh menentukan lebih daripada sekadar penerima apabila menghantar mesej. Anda juga boleh menentukan penerima CC dan BCC sekaligus dengan memanggil "ke", "cc" dan "bcc" dalam rangkaian:Rendering Mailable
Kadangkala anda mungkin mahu menangkap kandungan HTML sesuatu mailable tanpa menghantarnya. Ini boleh dicapai dengan memanggil kaedahrrreee🎜🎜🎜🎜🎜🎜🎜Pratonton Boleh Mel dalam Penyemak Imbas🎜🎜Apabila mereka bentuk templat yang boleh dihantar, adalah mudah untuk melihat dan memaparkan yang boleh dihantar dalam penyemak imbas sama seperti Templat bilah. Dalam kes ini, Laravel membenarkan anda memulangkan mana-mana yang boleh dihantar terus dalam penutupan laluan atau kawalan. Mailable yang dikembalikan akan dipaparkan dan dipaparkan dalam penyemak imbas, dan anda boleh pratonton dengan cepat reka bentuk tanpa perlu menghantarnya ke alamat e-mel sebenar: 🎜rrreee🎜🎜🎜🎜🎜🎜🎜Mail Queue🎜🎜🎜render
mailable. Kaedah ini mengembalikan rentetan yang dikira selepas yang boleh dihantar diberikan:Tambahkan mesej e-mel pada baris gilir
Memandangkan penghantaran mesej e-mel boleh memanjangkan masa respons aplikasi dengan ketara, ramai pembangun memilih untuk membuat baris gilir mesej e-mel dan menghantarnya di latar belakang. Laravel memudahkan ini dengan API baris gilir bersatu terbina dalam. Untuk menambah mesej e-mel pada baris gilir, anda boleh menggunakan kaedah
rrreeequeue
fasadMel
selepas menyatakan penerima mesej:Mail
facade 的queue
方法:此方法自动将作业推送到队列中以便消息在后台发送。使用此特性之前,需要 配置队列 :
延迟消息队列
想要延迟发送队列化的邮件消息,可以使用
rrreeelater
方法。later
方法的第一个参数的第一个参数是标示消息何时发送的DateTime
实例:推送到指定队列
由于所有使用
rrreeemake:mail
命令生成的 mailable 类都是用了IlluminateBusQueueable
trait,因此你可以在任何 mailable 类实例上调用onQueue
和onConnection
方法来指定消息的连接和队列名:默认队列
如果一个 mailable 类终是要队列化,可以在此类上实现
rrreeeShouldQueue
契约。这样一来,即使你在发送时调用了send
方法, mailable 也将被序列化:本地化 Mailable
Laravel 允许你使用有别于当前语言的区域设置发送 mailable,即使被加入到队列中也保留该区域设置。
为达到此目的,
rrreeeMail
facade 提供了locale
方法设置目标语言。应用在格式化 mailable 是将切换到该区域设置,并在格式化完成后恢复到原来的区域设置:用户首选区域设置
有时候,应用存储每个用户的首选区域设置。通过在一个或多个模型上实现
rrreeeHasLocalePreference
契约,可以通知 Laravel 再发送邮件时使用预存的区域设置:一旦实现了此接口,Laravel 在向此模型发送 mailable 和通知时,将自动使用首选区域设置。因此在使用此接口时不需要调用
Kaedah ini menolak kerja secara automatik ke baris gilir supaya mesej dihantar di latar belakang. Sebelum menggunakan ciri ini, anda perlu mengkonfigurasi baris gilir:locale
rrreeeBaris gilir mesej tertundaJika anda ingin menangguhkan penghantaran mesej e-mel beratur, anda boleh menggunakanrrreeekemudian code> kaedah. Parameter pertama kaedah nanti
ialahDateTime
yang menunjukkan apabila mesej dihantar Contoh:. Tekan ke baris gilir yang ditentukanMemandangkan semua kelas yang boleh dipail yang dijana menggunakan perintahmake:mail
menggunakan ciriIlluminateBusQueueable
, anda boleh menggunakannya dalam mana-mana kelas yang boleh mail Panggil < kaedah code>onQueue danonConnection
pada contoh untuk menentukan sambungan mesej dan nama baris gilir:rrreee🎜Default Queue 🎜🎜Jika kelas yang boleh dihantar akhirnya akan dibariskan, kontrakShouldQueue
boleh dilaksanakan pada kelas ini. Dengan cara ini, mailable akan diserikan walaupun anda memanggil kaedahhantar
semasa menghantar: 🎜rrreee🎜🎜🎜🎜🎜Localized Mailable🎜🎜Laravel membenarkan anda menghantar mailable menggunakan locale yang berbeza daripada bahasa semasa, mengekalkan locale tersebut walaupun ditambah pada baris gilir. 🎜🎜Untuk mencapai tujuan ini, fasadMel
menyediakan kaedahlocale
untuk menetapkan bahasa sasaran. Aplikasi yang memformatkan yang boleh dihantar akan bertukar ke tempat ini dan kembali ke tempat asal selepas pemformatan selesai: 🎜rrreee🎜Tetapan Tempatan pilihan pengguna h3>🎜Kadangkala apl menyimpan tempat pilihan setiap pengguna. Dengan melaksanakan kontrak
HasLocalePreference
pada satu atau lebih model, anda boleh memberitahu Laravel untuk menggunakan tempat yang disimpan semasa menghantar e-mel: 🎜rrreee🎜Setelah antara muka ini dilaksanakan, Laravel menghantar mesej dan pemberitahuan kepada model ini, tempat pilihan digunakan secara automatik. Oleh itu, tidak perlu memanggil kaedahlocale
apabila menggunakan antara muka ini: 🎜rrreee🎜🎜🎜🎜🎜🎜🎜Mail & Local Development🎜🎜Apabila membangunkan aplikasi yang menghantar e-mel, anda mungkin tidak mahu sebenarnya menghantar e-mel ke Alamat masa nyata untuk menghantar mel. Laravel menyediakan beberapa cara untuk "melumpuhkan" penghantaran sebenar semasa pembangunan tempatan. 🎜🎜🎜Pemandu log
log Pemacu e-mel menulis mesej e-mel ke dalam log dan bukannya menghantar e-mel, sedia untuk dilihat. Untuk mendapatkan maklumat lanjut tentang konfigurasi persekitaran aplikasi, sila rujuk dokumentasi konfigurasi. log
邮件驱动采取将邮件消息写入日志取代发送邮件,已备查看。应用环境配置的更多消息,请查阅 配置文档。通用配置
Laravel 为通过框架发送的邮件提供了指定常用收件人的其他解决方案。通过此方法,应用生成的邮件都将发送到指定地址,以取代发送消息时指定的真实地址。可以借助
rrreeeconfig/mail.php
配置文件的to
选项实现此目的:Mailtrap
最后,你可以使用 Mailtrap 服务和
smtp
驱动发送邮件消息到 「虚拟」邮箱,这样就可以在真实的邮件客户端查看邮件消息。此方法的好处是允许你在 Mailtrap 的消息阅览器中实际查看最终的邮件。事件
Laravel 在处理邮件消息发送时触发两个事件。
MessageSending
事件在消息发送前触发,MessageSent
事件则在消息发送后触发。切记,这些事件是在邮件被 发送 时触发,而不是在队列化的时候。可以在EventServiceProvider
Mailtrap🎜 dan pemacurrreee🎜Mailtrap 🎜🎜Akhir sekali, anda boleh menggunakan perkhidmatansmtp
untuk menghantar mesej e-mel kepada "maya" peti mel, supaya ia boleh digunakan dalam e-mel sebenar Pelanggan melihat mesej e-mel. Manfaat kaedah ini ialah ia membolehkan anda melihat e-mel terakhir dalam pemapar mesej Mailtrap. 🎜🎜🎜🎜🎜Acara
🎜Laravel mencetuskan dua peristiwa apabila mengendalikan penghantaran mesej e-mel. PeristiwaMessageSent
dicetuskan sebelum mesej dihantar dan acaraMessageSent
dicetuskan selepas mesej dihantar. Ingat, peristiwa ini dicetuskan apabila mesej dihantar, bukan apabila ia beratur. Pendengar untuk acara ini boleh didaftarkan dalamEventServiceProvider
: 🎜rrreee🎜Artikel ini pertama kali diterbitkan di tapak web 🎜LearnKu.com🎜. 🎜🎜
perkhidmatan: - Untuk menggunakan pemacu Mailgun (Mailgun adalah percuma untuk 10,000 e-mel pertama, dan caj berikutnya dikenakan), mula-mula pasang Guzzle, dan kemudian tetapkan pilihan