netcore

پلتفرم Net.

(DotNet Platform)

ارسال ایمیل

در صورتی که تمایلی به خواندن آموزش متنی ندارید می‌توانید ویدیوی آموزشی زیر ‌را مشاهده کنید.

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

برای استفاده از سرویس ایمیل در برنامه‌های ASP.Net Core باید پس از ایجاد سرویس ایمیل، اطلاعات دسترسی SMTP را طبق مستندات تنظیم متغیرها در تنظیمات برنامه اضافه کنید.

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

اگر که از فایل env. برای بارگذاری متغیرهای محیطی در پروژه اصلی استفاده می‌کنید؛ می‌توانید با استفاده از دستور زیر، پکیج DotEnv را نصب کنید.

dotnet add package dotenv.net
توجه داشته باشید که مقادیر MAIL_USERNAME و MAIL_PASSWORD در هر سرویس ایمیل ایجاد شده متفاوت است بنابراین باید آن‌ها را با مقادیر ارائه شده در تنظیمات سرویس ایمیل‌تان جایگزین کنید.

حال می‌توانید بدون نگرانی در پروژه‌ی خود با استفاده از دسترسی 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}");
        }
    }
}
قابل ذکر است که به جای from@test.com باید یکی از نشانی‌های اضافه شده در سرویس ایمیل قرار بگیرد. همچنین to@test.com ایمیل دریافت کننده محتوا است. در کد فوق می‌توانید با SSL به صورت امن از ایمیل تراکنشی استفاده کنید.

اگر که یک برنامه Net. تحت وب دارید و قصد دارید که در کنترلر مدنظرتان، از سرویس ایمیل لیارا استفاده کنید؛ کافیست قطعه کد زیر را در کنترلرتان به کار ببرید.

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");
    }

}

      

برای اطلاعات بیشتر می‌توانید به مستندات ارسال ایمیل MailKit مراجعه کنید.

متوجه شدم، برو گام بعدی!
;