اتصال به ایمیل‌سرور در برنامه‌های NET.


پروژه و کدهای مورد استفاده در ویدیوی فوق در اینجا قابل مشاهده و دسترسی هستند.

برای استفاده از سرویس ایمیل در برنامه‌های NET. کافیست تا طبق مستندات SMTP، یک دسترسی SMTP و طبق مستندات افزودن نشانی، یک نشانی برای ایمیل‌سرور خود، ایجاد کنید. در نهایت نیز، بایستی اطلاعات مربوط به ایمیل‌سرور خود را به متغیرهای محیطی برنامه خود، اضافه کنید؛ به عنوان مثال:

کپی
MAIL_HOST=smtp.c1.liara.email
MAIL_PORT=587
MAIL_USERNAME=my-app
MAIL_PASSWORD=my-pass

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

کپی
using System;
using System.Net;
using System.Net.Mail;
using System.IO;
using dotenv.net;

class Program
{
    static void Main()
    {
        DotEnv.Load(); // loading env variables 

        string mailHost = Environment.GetEnvironmentVariable("MAIL_HOST");
        int mailPort = int.Parse(Environment.GetEnvironmentVariable("MAIL_PORT"));
        string mailUser = Environment.GetEnvironmentVariable("MAIL_USERNAME");
        string mailPassword = Environment.GetEnvironmentVariable("MAIL_PASSWORD");

        // SMTP Conf
        SmtpClient client = new SmtpClient(mailHost)
        {
            Port = mailPort,
            Credentials = new NetworkCredential(mailUser, mailPassword),
            EnableSsl = true
        };

        // Creating and Sending Email  
        MailMessage message = new MailMessage("from@test.com", "to@test.com",
         "hello", "hello from dotnet!");
        try
        {
            client.Send(message);
            Console.WriteLine("email sent successfully");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"error in sending email: {ex.Message}");
        }
    }
}

با تنظیم EnableSsl = true، می‌توانید به‌صورت امن اقدام به ارسال ایمیل‌های تراکنشی کنید.

مقدار پارامتر اول message باید به جای from@test.com، یکی از نشانی‌های اضافه شده در سرویس ایمیل باشد.

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

کپی
using MimeKit;
using MailKit.Net.Smtp;
using DotNetEnv; // for install this, run: dotnet install add package DotNetEnv

namespace your_project_name.Controllers; 

public class TestController : Controller
{
    [HttpPost]
    public IActionResult SendEmail(string email)
    {   
        // Email Information  
        Env.Load();
        string senderName  = Env.GetString("SENDER_NAME");
        string senderEmail = Env.GetString("SENDER_ADDRESS");
        string subject     = Env.GetString("EMAIL_SUBJECT");
        string body        = Env.GetString("EMAIL_BODY");

        // Email Instance
        var message = new MimeMessage();
        message.From.Add(new MailboxAddress(senderName, senderEmail));
        message.To.Add(new MailboxAddress("Recipient", email));
        message.Subject = subject;

        // Creating The Body 
        message.Body = new TextPart("plain")
        {
            Text = body
        };

        try
        {
            // Sending Email 
            using (var client = new SmtpClient())
            {
                client.Connect(Env.GetString("MAIL_HOST"), Env.GetInt("MAIL_PORT"), false);
                client.Authenticate(Env.GetString("MAIL_USERNAME"), Env.GetString("MAIL_PASSWORD"));
                client.Send(message);
                client.Disconnect(true);
            }

            ViewBag.Message = "Email Sent Successfully.";
        }
        catch (Exception ex)
        {
            ViewBag.Message = $"Error In Sending Email: {ex.Message}";
        }


        return RedirectToAction("Index");
    }

}