Saya mendapat kelas email khusus dan saya ingin meneruskan konfigurasi email yang diekstrak dari appSettings.json ke kelas Mail khusus dari kelas startup. Bagaimana saya bisa mencapai ini?

  public class Mail
  {        
        private IOptions<ApplicationSettings> _applicationSettings;

        public Mail(ApplicationSettings applicationSettings)
        {
            _applicationSettings = applicationSettings;

        }
   }

public class Startup
{

   services.Configure<ApplicationSettings> 
   (Configuration.GetSection("ApplicationSettings"));

}
0
chamara 14 Agustus 2019, 09:45

1 menjawab

Jawaban Terbaik

Oke, ini adalah bagaimana saya mengatur Konfigurasi Email saya di proyek saya. Kode ini untuk referensi sampel Anda dan saya sangat berharap ini membantu Anda.

appsettings.json adalah sebagai berikut:

  "EmailConfiguration": 
  {
    "Host": "smtp.gmail.com",
    "Port": 587,
    "MailAddress": "youremailaddress@example.com",
    "MailDisplayName": "Your Display Name",
    "Username": "youremailaddress@example.com",
    "Password": "yourpassword"
  }

Kelas EmailConfiguration yang pada dasarnya merupakan model untuk menyimpan pengaturan Anda dari file konfigurasi akan terlihat seperti:

public class EmailConfiguration
{
    public string Host { get; set; }
    public int Port { get; set; }
    public string MailAddress { get; set; }
    public string MailDisplayName { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }
}

interface di mana Anda akan mendeklarasikan metode SendEmail generik Anda akan terlihat seperti:

public interface IEmailManager
{
   bool SendEmail<T>(string subject, string body, string fromAddress, List<string> toAddresses, List<string> ccAddresses, List<string> bccAddresses, string name = "", List<string> filePaths = null, string htmlFile = "", T data = default(T), bool apptUpdate=false);
}

Dan akhirnya class yang akan mengimplementasikan interface di atas akan terlihat seperti:

public class EmailManager : IEmailManager
{
    private readonly EmailConfiguration _emailSettings;

    public EmailManager(EmailConfiguration emailConfiguration)
    {
        _emailSettings = emailConfiguration;
    }

    public bool SendEmail<T>(string subject, string body, string fromAddress, List<string> toAddresses, List<string> ccAddresses, List<string> bccAddresses, string name = "", List<string> filePaths = null, string htmlFile = "", T data = default(T), bool apptUpdate = false)
    {
           string host = _emailSettings.Host;
           SmtpClient smtpClient = new SmtpClient(_emailSettings.Host, _emailSettings.Port);
           smtpClient.EnableSsl = true;
           smtpClient.UseDefaultCredentials = false;
           MailAddress from = new MailAddress(_emailSettings.MailAddress, _emailSettings.MailDisplayName);
           smtpClient.Credentials = new NetworkCredential(_emailSettings.Username, _emailSettings.Password);
           MailMessage myMail = new MailMessage();
           myMail.From = from;

          //Rest logic to send email
    }    
}

Pastikan Anda mendaftarkan kelas di Startup.cs Anda dengan metode ConfigureServices:

var emailSettingsSection = Configuration.GetSection("EmailConfiguration");
services.Configure<EmailConfiguration>(emailSettingsSection);

Metode ini juga dapat digunakan untuk pengaturan konfigurasi Anda yang lain.

3
Rahul Sharma 14 Agustus 2019, 08:45