Programming C#

Send Email

Register Password for Gmail

Truy cập vào link sau để lấy password: https://myaccount.google.com/security

Sau đó chọn 2-Step Verification, rồi chọn App passwords, tạo App Name rồi copy lại password

Config Mail Settings

Thêm vào appsettings.json thông tin email như sau

{
	"MailSettings": {
        "Host": "smtp.gmail.com",
        "Port": 587,
        "Email": "refactortop@gmail.com",
        "Password": "wbamanbphrtxhfat",
        "DisplayName": "Web Shop"
    }
}

Class MailSettings

Khai báo cấu hình class MailSettings với appsettings.json

public class MailSetting{
    public string Host { get; set; } = null!;
    public int Port { get; set; }
    public string Email { get; set; } = null!;
    public string Password { get; set; } = null!;
    public string DisplayName { get; set; } = null!;
}

Config class MailSettings

builder.Services.Configure<MailSetting>(builder.Configuration.GetSection("Mail:Gmail"));

Function SendEmail

Tạo hàm SendEmail

public static async Task<bool> SendEmail(MailSetting setting, string email, string subject, string body){
    try{
        using SmtpClient smtpClient = new SmtpClient{
            Host = setting.Host,
            EnableSsl = true,
            Credentials = new NetworkCredential(setting.Email, setting.Password)
        };
        MailAddress mailFrom = new MailAddress(setting.Email, displayName: setting.DisplayName);
        MailMessage message = new MailMessage{ Body = body, Subject = subject, From = mailFrom, IsBodyHtml = true};
        message.To.Add(new MailAddress(email));
        await smtpClient.SendMailAsync(message);
        return true;
    }
    catch(Exception ex){
        System.Console.WriteLine(ex.Message);
        return false;
    }
}

Using SendEmail

public class AuthController : Controller{
    MailSetting setting;
    public AuthController(IConfiguration configuration, IOptions<MailSetting> options){
        setting = options.Value;
    }
}