Học Cách Sử Dụng CSS Trong Manga

mal css tutorial

Giới Thiệu

Gửi email không cần phức tạp. Laravel cung cấp một API gửi email đơn giản và sạch sẽ, được cung cấp bởi thành phần Mailer phổ biến Symfony. Laravel và Symfony Mailer cung cấp các trình điều khiển cho việc gửi email qua SMTP, Mailgun, Postmark, Amazon SES và sendmail, cho phép bạn nhanh chóng bắt đầu gửi email thông qua dịch vụ địa phương hoặc đám mây theo sở thích của bạn.

Cấu Hình

Dịch vụ email của Laravel có thể được cấu hình qua tệp cấu hình config/mail.php của ứng dụng của bạn. Mỗi Mailer được định cấu hình trong tệp này có thể có cấu hình riêng và thậm chí cửa hàng “vận chuyển” riêng, cho phép ứng dụng của bạn sử dụng các dịch vụ email khác nhau để gửi các tin nhắn email cụ thể. Ví dụ, ứng dụng của bạn có thể sử dụng Postmark để gửi email giao dịch trong khi sử dụng Amazon SES để gửi email hàng loạt.

Trong tệp cấu hình email của bạn, bạn sẽ tìm thấy một mảng cấu hình mailers. Mảng này chứa một mục cấu hình mẫu cho mỗi trình điều khiển mail chính / gửi trả lời được hỗ trợ bởi Laravel, trong khi giá trị cấu hình mặc định xác định mailer nào sẽ được sử dụng mặc định khi ứng dụng của bạn cần gửi một thông điệp email.

Yêu Cầu Vận Chuyển Trình Điều Khiển / Vận Chuyển

Các trình điều khiển dựa trên API như Mailgun, Postmark và MailerSend thường đơn giản và nhanh hơn so với việc gửi email qua máy chủ SMTP. Khi có thể, chúng tôi khuyến nghị bạn sử dụng một trong những trình điều khiển này.

Trình Điều Khiển Mailgun

Để sử dụng trình điều khiển Mailgun, cài đặt giao vận Mailgun của Symfony thông qua Composer:

Tiếp theo, đặt tùy chọn mặc định trong tệp cấu hình config/mail.php của ứng dụng của bạn thành mailgun. Sau khi cấu hình trình gửi email mặc định của ứng dụng của bạn, hãy xác minh rằng tệp cấu hình config/services.php của bạn chứa các tùy chọn sau:

'mailgun' => [
    'transport' => 'mailgun',
    'domain' => env('MAILGUN_DOMAIN'),
    'secret' => env('MAILGUN_SECRET'),
],

Nếu bạn không sử dụng khu vực Mailgun của Hoa Kỳ, bạn có thể xác định điểm cuối khu vực của khu vực của mình trong tệp cấu hình dịch vụ:

'mailgun' => [
    'domain' => env('MAILGUN_DOMAIN'),
    'secret' => env('MAILGUN_SECRET'),
    'endpoint' => env('MAILGUN_ENDPOINT', 'api.eu.mailgun.net'),
],

Trình Điều Khiển Postmark

Để sử dụng trình điều khiển Postmark, cài đặt giao vận Mailer Postmark của Symfony thông qua Composer:

Tiếp theo, đặt tùy chọn mặc định trong tệp cấu hình config/mail.php của ứng dụng của bạn thành postmark. Sau khi cấu hình trình gửi email mặc định của ứng dụng của bạn, hãy xác minh rằng tệp cấu hình config/services.php của bạn chứa các tùy chọn sau:

'postmark' => [
    'token' => env('POSTMARK_TOKEN'),
],

Nếu bạn muốn xác định dòng thông điệp Postmark nào phải được sử dụng bởi một mailer cụ thể, bạn có thể thêm tùy chọn message_stream_id vào mảng cấu hình của mailer. Mảng cấu hình này có thể được tìm thấy trong tệp cấu hình config/mail.php của ứng dụng của bạn:

'postmark' => [
    'transport' => 'postmark',
    'message_stream_id' => env('POSTMARK_MESSAGE_STREAM_ID'),
],

Điều này giúp bạn thiết lập nhiều mailer Postmark với các dòng thông điệp khác nhau.

Read more  Xem One Piece: Hướng Dẫn Xem Hoàn Chỉnh

Trình Điều Khiển SES

Để sử dụng trình điều khiển Amazon SES, bạn phải trước tiên cài đặt Amazon AWS SDK cho PHP. Bạn có thể cài đặt thư viện này qua trình quản lý gói Composer:

Tiếp theo, đặt tùy chọn mặc định trong tệp cấu hình config/mail.php của bạn thành ses và xác minh rằng tệp cấu hình config/services.php của bạn chứa các tùy chọn sau:

'ses' => [
    'key' => env('AWS_ACCESS_KEY_ID'),
    'secret' => env('AWS_SECRET_ACCESS_KEY'),
    'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
],

Để sử dụng thông tin xác thực tạm thời AWS thông qua thông tin phiên, bạn có thể thêm khóa thông tin phiên vào cấu hình SES của ứng dụng của bạn:

'ses' => [
    'key' => env('AWS_ACCESS_KEY_ID'),
    'secret' => env('AWS_SECRET_ACCESS_KEY'),
    'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
    'token' => env('AWS_SESSION_TOKEN'),
],

Nếu bạn muốn xác định các tùy chọn bổ sung mà Laravel nên chuyển cho Phương thức Gửi Email của AWS SDK khi gửi email, bạn có thể xác định một mảng tùy chọn trong cấu hình ses của bạn:

'ses' => [
    'key' => env('AWS_ACCESS_KEY_ID'),
    'secret' => env('AWS_SECRET_ACCESS_KEY'),
    'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
    'options' => [
        'ConfigurationSetName' => 'MyConfigurationSet',
        'EmailTags' => [
            ['Name' => 'foo', 'Value' => 'bar'],
        ],
    ],
],

Trình Điều Khiển MailerSend

MailerSend, một dịch vụ email và SMS giao dịch, duy trì trình điều khiển email dựa trên API riêng cho Laravel. Gói chứa trình điều khiển có thể được cài đặt qua trình quản lý gói Composer:

Sau khi cài đặt gói, thêm biến môi trường MAILERSEND_API_KEY vào tệp .env của ứng dụng của bạn. Ngoài ra, biến môi trường MAIL_MAILER phải được xác định là mailersend:

Để tìm hiểu thêm về MailerSend, bao gồm cách sử dụng mẫu lưu trữ, hãy tìm hiểu tài liệu về trình điều khiển MailerSend.

Cấu Hình Thất Bại

Đôi khi, một dịch vụ bên ngoài bạn đã cấu hình để gửi email ứng dụng của bạn có thể bị tắt. Trong trường hợp này, việc cấu hình một hoặc nhiều cấu hình giao hàng phụ trợ dự phòng mà sẽ được sử dụng trong trường hợp trình điều khiển giao hàng chính của bạn bị tắt sẽ rất hữu ích.

Để làm được điều này, bạn nên xác định một mailer trong tệp cấu hình email của ứng dụng của bạn sử dụng giao vận thất bại. Mảng cấu hình cho mailer gửi thất bại của ứng dụng của bạn nên chứa một mảng của các mailer mà tham chiếu đến thứ tự các mailer được cấu hình phải được chọn để giao hàng:

'mailers' => [
    'failover' => [
        'transport' => 'failover',
        'mailers' => [
            'postmark',
            'mailgun',
            'sendmail',
        ],
    ],
    // ...
],

Sau khi mailer failover đã được xác định, bạn nên đặt mailer này làm mailer mặc định được sử dụng bởi ứng dụng của bạn bằng cách chỉ định tên của nó là giá trị của khóa cấu hình mặc định trong tệp cấu hình email của ứng dụng của bạn:

'default' => env('MAIL_MAILER', 'failover'),

Cấu Hình Vòng Tròn Lần

Vận chuyển vòng tròn cho phép bạn phân phối công việc gửi email của mình qua nhiều mailer. Để bắt đầu, xác định mailer trong tệp cấu hình email của ứng dụng của bạn sử dụng vận chuyển vòng tròn. Mảng cấu hình cho mailer vòng tròn của ứng dụng của bạn nên chứa một mảng các mailer tham chiếu đến các mailer được cấu hình nếu mailer được lựa chọn phải được sử dụng để gửi đi:

'mailers' => [
    'roundrobin' => [
        'transport' => 'roundrobin',
        'mailers' => [
            'ses',
            'postmark',
        ],
    ],
    // ...
],

Sau khi round robin mailer đã được xác định, bạn nên đặt mailer này làm mailer mặc định được sử dụng bởi ứng dụng của bạn bằng cách chỉ định tên của nó là giá trị của khóa cấu hình mặc định trong tệp cấu hình email của ứng dụng của bạn:

'default' => env('MAIL_MAILER', 'roundrobin'),

Vận chuyển round robin chọn một mailer ngẫu nhiên từ danh sách các mailer đã được cấu hình và sau đó chuyển sang mailer khả dụng tiếp theo cho mỗi email tiếp theo. Khác với vận chuyển failover, giúp đạt được khả năng sẵn có cao, vận chuyển round robin cung cấp cân bằng tải.

Read more  Những bộ anime Harem nên xem: Rent-A-Girlfriend, A Couple of Cuckoos và nhiều hơn nữa

Tạo Mailables

Khi xây dựng ứng dụng Laravel, mỗi loại email được gửi bởi ứng dụng của bạn được biểu thị dưới dạng một lớp “mailable”. Những lớp này được lưu trữ trong thư mục app/Mail. Đừng lo lắng nếu bạn không thấy thư mục này trong ứng dụng của bạn, vì nó sẽ được tạo ra tự động khi bạn tạo lớp mailable đầu tiên của mình bằng lệnh Artisan make:mail:

Viết Mailables

Sau khi bạn đã tạo lớp mailable, hãy mở nó để chúng ta có thể khám phá nội dung của nó. Cấu hình của lớp mailable được thực hiện trong một số phương thức, bao gồm phương pháp vỏ, nội dung và phụ lục.

Cấu Hình Người Gửi

Sử dụng Vỏ

Trước tiên, hãy khám phá cách cấu hình người gửi của email. Hay nói cách khác, người nhận email sẽ là ai. Có hai cách để cấu hình người gửi. Đầu tiên, bạn có thể chỉ định địa chỉ “từ” trên phong bì của tin nhắn:

use IlluminateMailMailablesAddress;
use IlluminateMailMailablesEnvelope;

/**
 * Get the message envelope.
 */
public function envelope(): Envelope
{
    return new Envelope(
        from: new Address('[email protected]', 'Jeffrey Way'),
        subject: 'Order Shipped',
    );
}

Nếu bạn muốn, bạn cũng có thể chỉ định địa chỉ “replyTo”:

return new Envelope(
    from: new Address('[email protected]', 'Jeffrey Way'),
    replyTo: [
        new Address('[email protected]', 'Taylor Otwell'),
    ],
    subject: 'Order Shipped',
);

Sử Dụng Một Địa Chỉ từ Toàn Cầu

Tuy nhiên, nếu ứng dụng của bạn sử dụng cùng một địa chỉ “từ” cho tất cả các email của mình, việc thêm nó vào mỗi lớp mailable mà bạn tạo ra có thể trở nên phiền toái. Thay vào đó, bạn có thể chỉ định một địa chỉ “từ” toàn cầu trong tệp cấu hình config/mail.php của ứng dụng của bạn. Địa chỉ này sẽ được sử dụng nếu không có địa chỉ “từ” nào khác được chỉ định trong lớp mailable:

'from' => [
    'address' => env('MAIL_FROM_ADDRESS', '[email protected]'),
    'name' => env('MAIL_FROM_NAME', 'Example'),
],

Ngoài ra, bạn có thể xác định một địa chỉ “reply_to” toàn cầu trong tệp cấu hình config/mail.php của bạn:

'reply_to' => [
    'address' => '[email protected]',
    'name' => 'App Name',
],

Cấu Hình Xem

Trong phương thức nội dung của lớp mailable, bạn có thể xác định xem, hoặc tệp mẫu nào sẽ được sử dụng khi tạo nội dung của email. Vì mỗi email thường sử dụng một mẫu Blade để tạo nội dung của mình, bạn có toàn quyền và tiện lợi để sử dụng đầy đủ sức mạnh của trình tạo mẫu Blade khi xây dựng HTML email của bạn:

use IlluminateMailMailablesContent;

/**
 * Get the message content definition.
 */
public function content(): Content
{
    return new Content(
        view: 'mail.orders.shipped',
    );
}

LUU Ý: Bạn có thể muốn tạo thư mục resources/views/emails để chứa tất cả các mẫu email của bạn; tuy nhiên, bạn được tự do đặt chúng ở bất kỳ vị trí nào trong thư mục resources/views của bạn.

Email Văn Bản Thuần

Nếu bạn muốn xác định phiên bản email thuần văn bản của email của mình, bạn có thể chỉ định mẫu văn bản thuần khi tạo định nghĩa nội dung của tin nhắn. Giống như tham số xem, tham số text nên là tên mẫu mà sẽ được sử dụng để tạo nội dung của email. Bạn có thể xác định cả phiên bản HTML và văn bản thuần văn bản của tin nhắn của mình:

/**
 * Get the message content definition.
 */
public function content(): Content
{
    return new Content(
        view: 'mail.orders.shipped',
        text: 'mail.orders.shipped-text'
    );
}

Vì rõ ràng, tham số html có thể được sử dụng như một bí danh của tham số xem:

return new Content(
    html: 'mail.orders.shipped',
    text: 'mail.orders.shipped-text'
);

Dữ Liệu Xem

Thông Qua Các Thuộc Tính Công Khai

Thông thường, bạn sẽ muốn truyền một số dữ liệu vào xem của mình mà bạn có thể sử dụng khi tạo nội dung HTML của email. Có hai cách bạn có thể làm cho dữ liệu này có sẵn trong xem của mình. Đầu tiên, bất kỳ thuộc tính công khai nào được xác định trên lớp mailable của bạn sẽ tự động được khả dụng trong xem của bạn, để bạn có thể truy cập nó như bạn truy cập vào bất kỳ dữ liệu khác trong các mẫu Blade của bạn:

<?php

namespace AppMail;

use AppModelsOrder;
use IlluminateBusQueueable;
use IlluminateMailMailable;
use IlluminateQueueSerializesModels;

class OrderShipped extends Mailable
{
    use Queueable, SerializesModels;

    /**
     * Create a new message instance.
     */
    public function __construct(public Order $order) {}

    /**
     * Get the message content definition.
     */
    public function content(): Content
    {
        return new Content(
            view: 'mail.orders.shipped',
        );
    }
}

Sau khi dữ liệu được đặt thành thuộc tính công khai, nó sẽ tự động có sẵn trong xem của bạn, vì vậy bạn có thể truy cập nó giống như bạn truy cập vào bất kỳ dữ liệu khác trong mẫu Blade của bạn:

<div>Price: {{ $order->price }}</div>

Thông Qua Tham Số with

Nếu bạn muốn tùy chỉnh định dạng dữ liệu email trước khi gửi đến mẫu, bạn có thể truyền dữ liệu của mình vào xem thông qua tham số with của định nghĩa nội dung. Thông thường, bạn vẫn sẽ truyền dữ liệu qua hàm xây dựng của lớp mailable của bạn; tuy nhiên, bạn nên đặt dữ liệu này thành thuộc tính được bảo vệ hoặc riêng tư để dữ liệu không được tự động sẵn có cho mẫu:

<?php

namespace AppMail;

use AppModelsOrder;
use IlluminateBusQueueable;
use IlluminateMailMailable;
use IlluminateQueueSerializesModels;

class OrderShipped extends Mailable
{
    use Queueable, SerializesModels;

    /**
     * Create a new message instance.
     */
    public function __construct(protected Order $order) {}

    /**
     * Get the message content definition.
     */
    public function content(): Content
    {
        return new Content(
            view: 'mail.orders.shipped',
            with: [
                'orderName' => $this->order->name,
                'orderPrice' => $this->order->price,
            ],
        );
    }
}

Sau khi dữ liệu đã được truyền vào phương thức with, nó sẽ tự đ

Read more  Những bộ anime Harem nên xem: Rent-A-Girlfriend, A Couple of Cuckoos và nhiều hơn nữa