Skip to content

Commit

Permalink
update email-server/how-tos/connect-via-platform/[php, django & flask]
Browse files Browse the repository at this point in the history
  • Loading branch information
A-Najmabadi committed Sep 29, 2024
1 parent dd3991b commit 8ed2128
Show file tree
Hide file tree
Showing 3 changed files with 132 additions and 91 deletions.
66 changes: 46 additions & 20 deletions src/pages/email-server/how-tos/connect-via-platform/django.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -35,52 +35,78 @@ import Head from "next/head";

برای استفاده از سرویس ایمیل در برنامه‌های Django، کافیست
تا طبق <a href="/email-server/how-tos/add-smtp-user" className="text-[#2196f3] ">مستندات SMTP</a>، یک دسترسی SMTP و طبق <a href="/email-server/how-tos/add-account" className="text-[#2196f3] ">مستندات افزودن نشانی</a>، یک نشانی برای ایمیل‌سرور خود، ایجاد کنید.
در نهایت نیز، بایستی
در ادامه نیز، بایستی
اطلاعات مربوط به ایمیل‌سرور خود را
به متغیرهای محیطی برنامه خود، اضافه کنید؛ به عنوان مثال:

<div className="h-2" />
<div dir='ltr'>
<Highlight className="bash">
{`EMAIL_BACKEND=django.core.mail.backends.smtp.EmailBackend
EMAIL_HOST=smtp.c1.liara.email
EMAIL_PORT=587
EMAIL_HOST_USER=YOUR_USERNAME
EMAIL_HOST_PASSWORD=YOUR_PASSWORD
EMAIL_USE_TLS=True`}
{`MAIL_HOST=smtp.liara.ir
MAIL_PORT=587
MAIL_USER=hopeful_zhukovsky_9daqpv
MAIL_PASSWORD=fbef30d7-f852-428e-9573-bc73381c7d4d
MAIL_FROM_ADDRESS=info@example.com`}
</Highlight>
</div>
<div className="h-2" />
<Alert variant='info'>
<p>
با تنظیم <Important>EMAIL_USE_TLS=True</Important>، می‌توانید به‌صورت امن اقدام به ارسال ایمیل‌های تراکنشی کنید.
مقدار فیلد <Important>MAIL_FROM_ADDRESS</Important> باید یکی از نشانی‌های اضافه شده در سرویس ایمیل باشد.
</p>
</Alert>

حال، کافیست تا قطعه کدی مشابه قطعه کد زیر را به فایل <Important>settings.py</Important> خود، اضافه کنید:
حال، بایستی قطعه کدی مشابه قطعه کد زیر را به فایل <Important>settings.py</Important> خود، اضافه کنید:
<div className="h-2" />
<div dir='ltr'>
<Highlight className="py">
{`from django.core.mail import send_mail
send_mail('Subject here', 'Here is the message.', 'from@example.com', ['to@example.com'], fail_silently=False)`}
{`EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = os.getenv('MAIL_HOST')
EMAIL_PORT = os.getenv('MAIL_PORT')
EMAIL_HOST_USER = os.getenv('MAIL_USER')
EMAIL_HOST_PASSWORD = os.getenv('MAIL_PASSWORD')
EMAIL_USE_TLS = True # Use TLS encryption
EMAIL_FROM_ADDRESS = os.getenv('MAIL_FROM_ADDRESS')`}
</Highlight>
</div>
<div className="h-2" />
<Alert variant='info'>
<p>
برای ارسال امن‌تر ایمیل‌ها، می‌توانید مقدار Port را بر روی 465 قرار دهید تا
به جای STARTTLS، از TLS استفاده شود.
</p>
</Alert>



تمامی کارها انجام شده است و شما می‌توانید از ایمیل‌سرور خود استفاده کنید؛ به عنوان مثال، می‌توانید یک app جدید ایجاد
کنید و <Important>views.py</Important> آن را همانند قطعه کد زیر، بنویسید:

در صورتی که از پکیج django-allauth برای احراز هویت و ارسال ایمیل تایید حساب کاربری استفاده می‌کنید، نیاز است مقدار <Important>from</Important> را در فایل <Important>settings.py</Important> به‌صورت زیر مشخص کنید:
<div className="h-2" />
<div dir='ltr'>
<Highlight className="py">
{`DEFAULT_FROM_EMAIL = 'from@example.com'`}
{`from django.core.mail import EmailMessage
from django.http import HttpResponse
from django.conf import settings
def send_test_email(request):
subject = 'Test Email from Django'
message = 'This is a test email sent from Django using SMTP on Liara server.'
recipient_list = ['recipient@example.com']
email = EmailMessage(
subject,
message,
settings.EMAIL_FROM_ADDRESS,
recipient_list,
headers={"x-liara-tag": "test-tag"} # using liara tag feature,
)
email.send(fail_silently=False)
return HttpResponse('Test email sent successfully!') `}
</Highlight>
</div>
<div className="h-2" />

<Alert variant='info'>
<p>
باید به جای <Important>from@example.com</Important> یکی از نشانی‌های اضافه شده در سرویس ایمیل، قرار بگیرد.
</p>
</Alert>


</Layout>
64 changes: 39 additions & 25 deletions src/pages/email-server/how-tos/connect-via-platform/flask.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -52,18 +52,17 @@ import Head from "next/head";
<div className="h-2" />
<div dir='ltr'>
<Highlight className="bash">
{`MAIL_SERVER=smtp.c1.liara.email
{`MAIL_HOST=smtp.liara.ir
MAIL_PORT=587
MAIL_USERNAME=YOUR_USERNAME
MAIL_PASSWORD=YOUR_PASSWORD
MAIL_USE_TLS=True`}
MAIL_USER=hopeful_zhukovsky_9daqpv
MAIL_PASSWORD=fbef30d7-f852-428e-9573-bc73381c7d4d
MAIL_FROM_ADDRESS=info@example.com`}
</Highlight>
</div>
<div className="h-2" />

<Alert variant='info'>
<p>
با تنظیم <Important>MAIL_USE_TLS=True</Important>، می‌توانید به‌صورت امن اقدام به ارسال ایمیل‌های تراکنشی کنید.
مقدار فیلد <Important>MAIL_FROM_ADDRESS</Important> باید یکی از نشانی‌های اضافه شده در سرویس ایمیل باشد.
</p>
</Alert>

Expand All @@ -73,39 +72,54 @@ MAIL_USE_TLS=True`}
<div className="h-2" />
<div dir='ltr'>
<Highlight className="python">
{`from flask import Flask
{`from flask import Flask, request
from flask_mail import Mail, Message
from dotenv import load_dotenv
import os
# Load environment variables from .env file
load_dotenv()
app = Flask(__name__)
app.config['MAIL_SERVER'] = os.getenv('MAIL_SERVER')
# Flask-Mail configuration
app.config['MAIL_SERVER'] = os.getenv('MAIL_HOST')
app.config['MAIL_PORT'] = int(os.getenv('MAIL_PORT'))
app.config['MAIL_USERNAME'] = os.getenv('MAIL_USERNAME')
app.config['MAIL_USERNAME'] = os.getenv('MAIL_USER')
app.config['MAIL_PASSWORD'] = os.getenv('MAIL_PASSWORD')
app.config['MAIL_USE_TLS'] = os.getenv('MAIL_USE_TLS') == 'True'
app.config['MAIL_USE_SSL'] = False
mail = Mail(app)
@app.route("/")
def index():
msg = Message(
'Mailing with Flask-Mail',
sender = ("sender_name", 'from@example.com'),
recipients = ['destination@host.name'])
app.config['MAIL_USE_TLS'] = True # Use TLS for encryption
app.config['MAIL_USE_SSL'] = False # Don't use SSL, because we are using TLS
app.config['MAIL_DEFAULT_SENDER'] = os.getenv('MAIL_FROM_ADDRESS')
msg.body = "this is from Flask app, lmk if it works"
mail.send(msg)
# Initialize Flask-Mail
mail = Mail(app)
return "Message sent!"`}
@app.route('/send-test-email', methods=['GET'])
def send_test_email():
try:
# Create a message
msg = Message(subject='Test Email from Flask',
recipients=['recipient@example.com'], # Replace with the recipient's email address
body='This is a test email sent from Flask using SMTP on Liara.',
extra_headers = {"x-liara-tag": "test_tag"}) # Use liara tag feature
# Send the email
mail.send(msg)
return 'Test email sent successfully!', 200
except Exception as e:
return f'Failed to send email. Error: {str(e)}', 500
if __name__ == '__main__':
app.run(debug=True)
`}
</Highlight>
</div>
<div className="h-2" />

<Alert variant='info'>
<p>
مقدار پارامتر دوم <Important>sender</Important> باید به جای <Important>from@example.com</Important>، یکی از نشانی‌های اضافه شده در سرویس ایمیل باشد.
برای ارسال امن‌تر ایمیل‌ها، می‌توانید مقدار Port را بر روی 465 قرار دهید تا
به جای STARTTLS، از TLS استفاده شود.
</p>
</Alert>

Expand Down
93 changes: 47 additions & 46 deletions src/pages/email-server/how-tos/connect-via-platform/php.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -52,18 +52,27 @@ import Head from "next/head";
<div className="h-2" />
<div dir='ltr'>
<Highlight className="bash">
{`MAIL_HOST=smtp.c1.liara.email
{`MAIL_HOST=smtp.liara.ir
MAIL_PORT=587
MAIL_SECURITY=tls
MAIL_USER=my-app
MAIL_PASSWORD=87b9307a-dae9-410e-89a2-e77de60e4885`}
MAIL_USER=friendly_liskov_ihidh7
MAIL_PASSWORD=58455bf7-f7c9-4562-9a9e-53b051f2ba79
MAIL_FROM_ADDRESS=info@example.com
MAIL_FROM_NAME=my-app
`}
</Highlight>
</div>
<div className="h-2" />
<Alert variant='info'>
<p>
مقدار فیلد <Important>MAIL_FROM_ADDRESS</Important> باید یکی از نشانی‌های اضافه شده در سرویس ایمیل باشد.
</p>
</Alert>


<Alert variant='info'>
<p>
با تنظیم <Important>MAIL_SECURITY=tls</Important>، می‌توانید به‌صورت امن اقدام به ارسال ایمیل‌های تراکنشی کنید.
برای ارسال امن‌تر ایمیل‌ها، می‌توانید مقدار Port را بر روی 465 قرار دهید تا
به جای STARTTLS، از TLS استفاده کنید.
</p>
</Alert>

Expand All @@ -74,57 +83,49 @@ MAIL_PASSWORD=87b9307a-dae9-410e-89a2-e77de60e4885`}
<div dir='ltr'>
<Highlight className="php">
{`<?php
require 'vendor/autoload.php'; // Load Composer dependencies
use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerSMTP;
use PHPMailerPHPMailerException;
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
use Dotenv\Dotenv;
require_once "vendor/autoload.php";
$dotenv = DotenvDotenv::createImmutable(__DIR__);
// Load environment variables from .env file
$dotenv = Dotenv::createImmutable(__DIR__);
$dotenv->load();
$mailHost = $_ENV['MAIL_HOST'];
$mailPort = $_ENV['MAIL_PORT'];
$mailUser = $_ENV['MAIL_USER'];
$mailPassword = $_ENV['MAIL_PASSWORD'];
$mailSecurity = $_ENV['MAIL_SECURITY'];
// Create an instance of PHPMailer
$mail = new PHPMailer(true);
$mail->isSMTP();
$mail->SMTPAuth = true;
$mail->SMTPSecure = $mailSecurity;
$mail->Port = $mailPort;
$mail->Host = $mailHost;
$mail->Username = $mailUser;
$mail->Password = $mailPassword;
$mail->CharSet = "UTF-8";
$mail->From = "your email";
$mail->FromName = "your email name";
$mail->addAddress("destination email", "destination name");
$mail->isHTML(false);
$mail->Subject = "Mailing with PHPMailer";
$mail->Body = "Congratulation";
$mail->AltBody = "Congratulation";
try {
// Server settings
$mail->isSMTP();
$mail->Host = $_ENV['MAIL_HOST'];
$mail->SMTPAuth = true;
$mail->Username = $_ENV['MAIL_USER'];
$mail->Password = $_ENV['MAIL_PASSWORD'];
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // Use STARTTLS encryption
$mail->Port = $_ENV['MAIL_PORT'];
// Recipients
$mail->setFrom($_ENV['MAIL_FROM_ADDRESS'], $_ENV['MAIL_FROM_NAME']);
$mail->addAddress('recipient@example.com'); // Add a recipient email
// Content
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'Test Email';
$mail->Body = 'This is a test email sent using PHPMailer and SMTP.';
$mail->AltBody = 'This is the plain text version of the email content.';
$mail->addCustomHeader('x-liara-tag', 'test-tag'); // use Liara Tags
// Send the email
$mail->send();
echo "Message has been sent successfully";
echo 'Email has been sent successfully!';
} catch (Exception $e) {
error_log("Mailer Error: $mail->ErrorInfo", 0);
}`}
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
`}
</Highlight>
</div>
<div className="h-2" />

<Alert variant='info'>
<p>
مقدار فیلد <Important>From</Important> باید یکی از نشانی‌های اضافه شده در سرویس ایمیل باشد.
</p>
</Alert>


</Layout>

0 comments on commit 8ed2128

Please sign in to comment.