Skip to content

Commit 4a60e47

Browse files
committed
docs: update email-server/send-email-using-platform
1 parent 0a77cc9 commit 4a60e47

File tree

6 files changed

+172
-161
lines changed

6 files changed

+172
-161
lines changed

src/pages/email-server/how-tos/connect-via-platform/django.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,8 @@ EMAIL_HOST = config('MAIL_HOST')
8686
EMAIL_PORT = config('MAIL_PORT', cast=int)
8787
EMAIL_HOST_USER = config('MAIL_USER')
8888
EMAIL_HOST_PASSWORD = config('MAIL_PASSWORD')
89-
EMAIL_USE_TLS = False # Disable TLS
90-
EMAIL_USE_SSL = True # Force SSL
89+
EMAIL_USE_TLS = False # Disable STARTTLS
90+
EMAIL_USE_SSL = True # Force TLS
9191
DEFAULT_FROM_EMAIL = f"{config('MAIL_FROM_NAME')} <{config('MAIL_FROM_ADDRESS')}>"
9292
`}
9393
</Highlight>

src/pages/email-server/how-tos/connect-via-platform/dotnet.mdx

Lines changed: 95 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -63,60 +63,71 @@ MAIL_FROM_ADDRESS=info@example.com`}
6363
مقدار فیلد <Important>MAIL_FROM_ADDRESS</Important> باید یکی از نشانی‌های اضافه شده در سرویس ایمیل باشد.
6464
</p>
6565
</Alert>
66+
<div className="h-2" />
6667

68+
در ادامه، بایستی با اجرای دستور زیر، ماژول موردنیاز ارسال ایمیل را در پروژه خود، دانلود و نصب کنید:
69+
70+
<div className="h-2" />
71+
<div dir='ltr'>
72+
<Highlight className="bash">
73+
{`dotnet add package MailKit`}
74+
</Highlight>
75+
</div>
76+
<div className="h-2" />
6777

6878
در نهایت می‌توانید در پروژه‌ی خود مانند مثال زیر عمل کرده و با استفاده از دسترسی SMTP سرویس ایمیل لیارا،
6979
اقدام به ارسال ایمیل‌های تراکنشی کنید:
7080

7181
<div className="h-2" />
7282
<div dir='ltr'>
7383
<Highlight className="dotnet">
74-
{`using System.Net;
75-
using System.Net.Mail;
76-
using dotenv.net;
77-
78-
DotEnv.Load(); // Load the environment variables from .env file
84+
{`using MailKit.Net.Smtp;
85+
using MimeKit;
7986
8087
var builder = WebApplication.CreateBuilder(args);
88+
89+
// Load environment variables
90+
var smtpHost = Environment.GetEnvironmentVariable("MAIL_HOST") ?? "smtp.c1.liara.email";
91+
var smtpPort = int.Parse(Environment.GetEnvironmentVariable("MAIL_PORT") ?? "465");
92+
var smtpUser = Environment.GetEnvironmentVariable("MAIL_USER") ?? "";
93+
var smtpPassword = Environment.GetEnvironmentVariable("MAIL_PASSWORD") ?? "";
94+
var mailFromAddress = Environment.GetEnvironmentVariable("MAIL_FROM_ADDRESS") ?? "";
95+
8196
var app = builder.Build();
8297
83-
app.MapGet("/send-test-email", async context =>
98+
app.MapGet("/", async context =>
8499
{
85-
// Read SMTP settings from environment variables
86-
var smtpHost = Environment.GetEnvironmentVariable("MAIL_HOST");
87-
int smtpPort = int.Parse(Environment.GetEnvironmentVariable("MAIL_PORT") ?? "587");
88-
var smtpUser = Environment.GetEnvironmentVariable("MAIL_USER");
89-
var smtpPassword = Environment.GetEnvironmentVariable("MAIL_PASSWORD");
90-
var fromAddress = Environment.GetEnvironmentVariable("MAIL_FROM_ADDRESS") ?? "info@example.com";
91-
var toAddress = "recipient@example.com"; // Replace with recipient's email address
92-
93-
// Create a new SmtpClient
94-
using (var smtpClient = new SmtpClient(smtpHost, smtpPort))
100+
var recipientEmail = "recipient@example.com"; // Replace with recipient email
101+
102+
// Create the email
103+
var email = new MimeMessage();
104+
email.From.Add(MailboxAddress.Parse(mailFromAddress));
105+
email.To.Add(MailboxAddress.Parse(recipientEmail));
106+
email.Subject = "Test Email";
107+
email.Body = new TextPart("plain")
95108
{
96-
smtpClient.EnableSsl = true; // Use TLS encryption
97-
smtpClient.Credentials = new NetworkCredential(smtpUser, smtpPassword);
109+
Text = "This is a test email sent using explicit TLS without STARTTLS."
110+
};
98111
99-
// Create the email message
100-
var mailMessage = new MailMessage(fromAddress, toAddress)
101-
{
102-
Subject = "Test Email",
103-
Body = "<h2>This is a test email sent from a .NET Core application using SMTP<h2>",
104-
IsBodyHtml = true
105-
};
106-
107-
// Add custom headers
108-
mailMessage.Headers.Add("x-liara-tag", "test-tag");
112+
// Add custom header
113+
email.Headers.Add("x-liara-tag", "test-tag");
109114
115+
try
116+
{
110117
// Send the email
111-
try
112-
{
113-
await smtpClient.SendMailAsync(mailMessage);
114-
await context.Response.WriteAsync("Test email sent successfully!");
115-
}
116-
catch (Exception ex)
117-
{
118-
await context.Response.WriteAsync($"Failed to send email: {ex.Message}");
119-
}
118+
using var client = new SmtpClient();
119+
await client.ConnectAsync(smtpHost, smtpPort, MailKit.Security.SecureSocketOptions.SslOnConnect);
120+
await client.AuthenticateAsync(smtpUser, smtpPassword);
121+
await client.SendAsync(email);
122+
await client.DisconnectAsync(true);
123+
124+
// Respond to the client
125+
await context.Response.WriteAsync("Email sent successfully with custom header!");
126+
}
127+
catch (Exception ex)
128+
{
129+
// Handle errors and respond to the client
130+
await context.Response.WriteAsync($"Failed to send email: {ex.Message}");
120131
}
121132
});
122133
@@ -125,69 +136,67 @@ app.Run();
125136
</Highlight>
126137
</div>
127138
<div className="h-2" />
128-
<Alert variant='info'>
129-
<p>
130-
با تنظیم <Important>EnableSsl = true</Important>، می‌توانید به‌صورت امن اقدام به ارسال ایمیل‌های تراکنشی کنید.
131-
</p>
132-
</Alert>
139+
133140

134141
برای استفاده از ایمیل‌سرور در کنترلر، می‌توانید مشابه قطعه کد زیر، عمل کنید:
135142

136143
<div className="h-2" />
137144
<div dir='ltr'>
138145
<Highlight className="csharp">
139-
{`using MimeKit;
140-
using MailKit.Net.Smtp;
141-
using DotNetEnv; // for install this, run: dotnet install add package DotNetEnv
146+
{`using MailKit.Net.Smtp;
147+
using MimeKit;
148+
using Microsoft.AspNetCore.Mvc;
142149
143-
namespace your_project_name.Controllers;
144-
145-
public class TestController : Controller
150+
namespace EmailSenderApp.Controllers
146151
{
147-
[HttpPost]
148-
public IActionResult SendEmail(string email)
149-
{
150-
// Email Information
151-
Env.Load();
152-
string senderName = Env.GetString("SENDER_NAME");
153-
string senderEmail = Env.GetString("SENDER_ADDRESS");
154-
string subject = Env.GetString("EMAIL_SUBJECT");
155-
string body = Env.GetString("EMAIL_BODY");
156-
157-
// Email Instance
158-
var message = new MimeMessage();
159-
message.From.Add(new MailboxAddress(senderName, senderEmail));
160-
message.To.Add(new MailboxAddress("Recipient", email));
161-
message.Subject = subject;
162-
163-
// Creating The Body
164-
message.Body = new TextPart("plain")
152+
[Route("api/[controller]")]
153+
[ApiController]
154+
public class EmailController : ControllerBase
155+
{
156+
// Load environment variables (or use default values)
157+
private readonly string smtpHost = Environment.GetEnvironmentVariable("MAIL_HOST") ?? "smtp.c1.liara.email";
158+
private readonly int smtpPort = int.Parse(Environment.GetEnvironmentVariable("MAIL_PORT") ?? "465");
159+
private readonly string smtpUser = Environment.GetEnvironmentVariable("MAIL_USER") ?? "";
160+
private readonly string smtpPassword = Environment.GetEnvironmentVariable("MAIL_PASSWORD") ?? "";
161+
private readonly string mailFromAddress = Environment.GetEnvironmentVariable("MAIL_FROM_ADDRESS") ?? "";
162+
163+
[HttpGet("send-test-email")]
164+
public async Task<IActionResult> SendTestEmail()
165165
{
166-
Text = body
167-
};
166+
var recipientEmail = "recipient@example.com"; // Replace with recipient email
167+
168+
// Create the email
169+
var email = new MimeMessage();
170+
email.From.Add(MailboxAddress.Parse(mailFromAddress));
171+
email.To.Add(MailboxAddress.Parse(recipientEmail));
172+
email.Subject = "Test Email";
173+
email.Body = new TextPart("plain")
174+
{
175+
Text = "This is a test email sent using explicit TLS without STARTTLS."
176+
};
168177
169-
try
170-
{
171-
// Sending Email
172-
using (var client = new SmtpClient())
178+
// Add custom header
179+
email.Headers.Add("x-liara-tag", "test-tag");
180+
181+
try
173182
{
174-
client.Connect(Env.GetString("MAIL_HOST"), Env.GetInt("MAIL_PORT"), false);
175-
client.Authenticate(Env.GetString("MAIL_USERNAME"), Env.GetString("MAIL_PASSWORD"));
176-
client.Send(message);
177-
client.Disconnect(true);
183+
// Send the email
184+
using var client = new SmtpClient();
185+
await client.ConnectAsync(smtpHost, smtpPort, MailKit.Security.SecureSocketOptions.SslOnConnect);
186+
await client.AuthenticateAsync(smtpUser, smtpPassword);
187+
await client.SendAsync(email);
188+
await client.DisconnectAsync(true);
189+
190+
// Return success response
191+
return Ok("Email sent successfully with custom header!");
192+
}
193+
catch (Exception ex)
194+
{
195+
// Handle errors and return error response
196+
return StatusCode(500, $"Failed to send email: {ex.Message}");
178197
}
179-
180-
ViewBag.Message = "Email Sent Successfully.";
181-
}
182-
catch (Exception ex)
183-
{
184-
ViewBag.Message = $"Error In Sending Email: {ex.Message}";
185198
}
186-
187-
188-
return RedirectToAction("Index");
189199
}
190-
191200
}
192201
`}
193202
</Highlight>

src/pages/email-server/how-tos/connect-via-platform/flask.mdx

Lines changed: 31 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -80,45 +80,46 @@ MAIL_FROM_ADDRESS=info@example.com`}
8080
<div className="h-2" />
8181
<div dir='ltr'>
8282
<Highlight className="python">
83-
{`from flask import Flask, request
84-
from flask_mail import Mail, Message
85-
from dotenv import load_dotenv
83+
{`from flask import Flask, jsonify
84+
import smtplib
85+
from email.mime.text import MIMEText
86+
from email.mime.multipart import MIMEMultipart
8687
import os
8788
88-
# Load environment variables from .env file
89-
load_dotenv()
90-
9189
app = Flask(__name__)
9290
93-
# Flask-Mail configuration
94-
app.config['MAIL_SERVER'] = os.getenv('MAIL_HOST')
95-
app.config['MAIL_PORT'] = int(os.getenv('MAIL_PORT'))
96-
app.config['MAIL_USERNAME'] = os.getenv('MAIL_USER')
97-
app.config['MAIL_PASSWORD'] = os.getenv('MAIL_PASSWORD')
98-
app.config['MAIL_USE_TLS'] = True # Use TLS for encryption
99-
app.config['MAIL_USE_SSL'] = False # Don't use SSL, because we are using TLS
100-
app.config['MAIL_DEFAULT_SENDER'] = os.getenv('MAIL_FROM_ADDRESS')
101-
102-
# Initialize Flask-Mail
103-
mail = Mail(app)
91+
# Email configuration from environment variables
92+
MAIL_HOST = os.getenv("MAIL_HOST", "smtp.c1.liara.email")
93+
MAIL_PORT = int(os.getenv("MAIL_PORT", 465))
94+
MAIL_USER = os.getenv("MAIL_USER")
95+
MAIL_PASSWORD = os.getenv("MAIL_PASSWORD")
96+
MAIL_FROM_ADDRESS = os.getenv("MAIL_FROM_ADDRESS")
97+
MAIL_FROM_NAME = os.getenv("MAIL_FROM_NAME")
10498
105-
@app.route('/send-test-email', methods=['GET'])
99+
@app.route("/", methods=["GET"])
106100
def send_test_email():
107101
try:
108-
# Create a message
109-
msg = Message(subject='Test Email from Flask',
110-
recipients=['recipient@example.com'], # Replace with the recipient's email address
111-
body='This is a test email sent from Flask using SMTP on Liara.',
112-
extra_headers = {"x-liara-tag": "test_tag"}) # Use liara tag feature
113-
114-
# Send the email
115-
mail.send(msg)
116-
return 'Test email sent successfully!', 200
117-
102+
# Create email message
103+
msg = MIMEMultipart()
104+
msg["From"] = f"{MAIL_FROM_NAME} <{MAIL_FROM_ADDRESS}>"
105+
msg["To"] = "test@example.com"
106+
msg["Subject"] = "Test Email"
107+
msg["X-Liara-Tag"] = "test-tag"
108+
109+
# Email body
110+
body = "This is a test email sent with Flask and forced SSL (TLS)."
111+
msg.attach(MIMEText(body, "plain"))
112+
113+
# Connect to SMTP server using SSL
114+
with smtplib.SMTP_SSL(MAIL_HOST, MAIL_PORT) as server:
115+
server.login(MAIL_USER, MAIL_PASSWORD)
116+
server.sendmail(MAIL_FROM_ADDRESS, [MAIL_FROM_ADDRESS], msg.as_string())
117+
118+
return jsonify({"message": "Test email sent successfully!"}), 200
118119
except Exception as e:
119-
return f'Failed to send email. Error: {str(e)}', 500
120+
return jsonify({"error": str(e)}), 500
120121
121-
if __name__ == '__main__':
122+
if __name__ == "__main__":
122123
app.run(debug=True)
123124
`}
124125
</Highlight>

0 commit comments

Comments
 (0)