Skip to content

Commit

Permalink
update email-server/[nextjs, laravel] docs
Browse files Browse the repository at this point in the history
  • Loading branch information
A-Najmabadi committed Sep 26, 2024
1 parent 442e2e9 commit dd3991b
Show file tree
Hide file tree
Showing 2 changed files with 153 additions and 174 deletions.
182 changes: 85 additions & 97 deletions src/pages/email-server/how-tos/connect-via-platform/laravel.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,14 @@ import Head from "next/head";
<div className="h-2" />
<div dir='ltr'>
<Highlight className="bash">
{`MAIL_DRIVER=smtp
{`MAIL_MAILER=smtp
MAIL_HOST=smtp.c1.liara.email
MAIL_PORT=587
MAIL_USERNAME=magical_benz_7s4t7p
MAIL_PASSWORD=9aaf526a-3352-4d96-99b1-63af70c696e2
MAIL_ENCRYPTION=tls
MAIL_USERNAME=my-app
MAIL_PASSWORD=87b9307a-dae9-410e-89a2-e77de60e4885`}
MAIL_FROM_ADDRESS=info@example.com
MAIL_FROM_NAME="\${APP_NAME}"`}
</Highlight>
</div>
<div className="h-2" />
Expand All @@ -56,152 +58,138 @@ MAIL_PASSWORD=87b9307a-dae9-410e-89a2-e77de60e4885`}
با تنظیم <Important>MAIL_ENCRYPTION=tls</Important>، می‌توانید به‌صورت امن اقدام به ارسال ایمیل‌های تراکنشی کنید.
</p>
</Alert>
<Alert variant='info'>
<p>
برای ارسال امن‌تر ایمیل‌ها، می‌توانید مقدار Port را بر روی 465 قرار دهید تا
به جای STARTTLS، از TLS استفاده شود.
</p>
</Alert>

برای اتصال برنامه به ایمیل‌سرور، باید با اجرای دستور زیر، یک کلاس Mailable ایجاد کنید:
در نظر داشته باشید که باید فایل <Important>config/mail.php</Important>، شامل قطعه کد زیر، باشد:

<div className="h-2" />
<div dir='ltr'>
<Highlight className="bash">
{`php artisan make:mail NotifyMail`}
<Highlight className="php">
{`<?php
return [
'default' => env('MAIL_MAILER', 'log'),
'mailers' => [
'smtp' => [
'transport' => 'smtp',
'url' => env('MAIL_URL'),
'host' => env('MAIL_HOST', '127.0.0.1'),
'port' => env('MAIL_PORT', 2525),
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'timeout' => null,
'local_domain' => env('MAIL_EHLO_DOMAIN', parse_url(env('APP_URL', 'http://localhost'), PHP_URL_HOST)),
],
],
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
'name' => env('MAIL_FROM_NAME', 'Example'),
],
];
`}
</Highlight>
</div>
<div className="h-2" />

در ادامه، بایستی با اجرای دستوری مشابه دستور زیر، یک Mailable ایجاد کنید:

<div className="h-2" />
<div dir='ltr'>
<Highlight className="laravel">
{`php artisan make:mail TestEmail`}
</Highlight>
</div>
<div className="h-2" />

سپس به دایرکتوری <Important>app/mail</Important> بروید و فایل <Important>notifyMail.php</Important> را باز کنید و کد زیر را به آن اضافه کنید:
پس از ایجاد Mailable در آدرس <Important>app/mail/TestEmail.php</Important>، می‌توانید قطعه کد زیر را، در آن، قرار دهید:

<div className="h-2" />
<div dir='ltr'>
<Highlight className="laravel">
{`<?php
namespace AppMail;
namespace App\\Mail;
use IlluminateBusQueueable;
use IlluminateContractsQueueShouldQueue;
use IlluminateMailMailable;
use IlluminateMailMailablesContent;
use IlluminateMailMailablesEnvelope;
use IlluminateQueueSerializesModels;
use Illuminate\\Bus\\Queueable;
use Illuminate\\Mail\\Mailable;
use Illuminate\\Queue\\SerializesModels;
use Illuminate\\Mail\\Mailables\\Headers;
class NotifyMail extends Mailable
class TestEmail extends Mailable
{
use Queueable, SerializesModels;
/**
* Create a new message instance.
*/
public function __construct()
public function build()
{
//
}
return $this->subject('Test Email')
->view('emails.test');
/**
* Get the message envelope.
*/
public function envelope(): Envelope
{
return new Envelope(
subject: 'Notify Mail',
);
}
/**
* Get the message content definition.
*/
public function content(): Content
public function headers(): Headers
{
return new Content(
view: 'emails.demoMail',
return new Headers(
text: [
'x-liara-tag' => 'test_email',
],
);
}
/**
* Get the attachments for the message.
*
* @return array<int, IlluminateMailMailablesAttachment>
*/
public function attachments(): array
{
return [];
}
}`}
}
`}
</Highlight>
</div>
<div className="h-2" />

سپس، یک قالب ایمیل با نام <Important>demoMail.blade.php</Important> در مسیر <Important>resources/views/emails</Important> ایجاد کنید و قطعه کد زیر را، در آن، قرار دهید:
سپس، می‌توانید یک قالب ایمیل با نام <Important>test.blade.php</Important> در مسیر <Important>resources/views/emails</Important> ایجاد کنید و قطعه کد زیر را، در آن، قرار دهید:

<div className="h-2" />
<div dir='ltr'>
<Highlight className="html">
{`<!DOCTYPE html>
<html>
<head>
<title>Laravel email example with Liara</title>
<title>Test Email</title>
</head>
<body>
<h1>This is a test mail to see how Liara works.</h1>
<p>Laravel 10 send email example.</p>
<h1>This is a test email from Laravel</h1>
<p>Sent via SMTP on Liara's server.</p>
</body>
</html> `}
</html>
`}
</Highlight>
</div>
<div className="h-2" />

سپس، در <Important>routes/web.php</Important> مسیرهای زیر را برای ارسال ایمیل اضافه کنید:
سپس، در <Important>routes/web.php</Important> مسیر زیر را برای ارسال ایمیل اضافه کنید:

<div className="h-2" />
<div dir='ltr'>
<Highlight className="js">
{`use App\\Http\\Controllers\\SendEmailController;
Route::post('send-email', [SendEmailController::class, 'index']);`}
</Highlight>
</div>
<div className="h-2" />

در ادامه، با استفاده از دستور زیر یک کنترلر جدید ایجاد کنید:

<div className="h-2" />
<div dir='ltr'>
<Highlight className="js">
{`php artisan make:controller SendEmailController`}
</Highlight>
</div>
<div className="h-2" />

در نهایت قطعه کد زیر را در <Important>app/Http/Controllers/SendEmailController.php</Important>، وارد کنید:
<div className="h-2" />
<div dir='ltr'>
<Highlight className="js">
{`<?php
namespace App\\Http\\Controllers;
use Illuminate\\Http\\Request;
use Mail;
use App\\Mail\\NotifyMail;
class SendEmailController extends Controller
{
public function index()
{
Mail::to('destination@gmail.com')->send(new NotifyMail());
return "Great! Your email has been sent successfully.";
}
}`}
<Highlight className="laravel">
{`use App\\Mail\\TestEmail;
use Illuminate\\Support\\Facades\\Mail;
Route::get('/send-test-email', function () {
Mail::to('test@example.com')->send(new TestEmail());
return 'Test email sent successfully!';
});`}
</Highlight>
</div>
<div className="h-2" />

با انجام کارهای فوق، می‌توانید از ایمیل‌سرور در برنامه خود، استفاده کنید.
با انجام کارهای فوق، می‌توانید از ایمیل‌سرور در برنامه خود در صفحه <Important>send-test-email/</Important>، برای ارسال ایمیل، استفاده کنید.


</Layout>
Loading

0 comments on commit dd3991b

Please sign in to comment.