using Microsoft.Extensions.Configuration;
using System.Net;
using System.Net.Mail;
using System.Text;
namespace Long.Utils.Mail;
///
/// 发送邮件
///
public class EMail
{
private readonly IConfiguration configuration;
private readonly EMailOption eMailOption;
public EMail()
{
IConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
configurationBuilder.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
configuration = configurationBuilder.Build();
eMailOption = new EMailOption();
var section = configuration.GetSection("EMailOption");
eMailOption.Server = section.GetSection("Server").Value ?? "";
var postString = section.GetSection("Port").Value;
if (postString != null)
{
eMailOption.Port = int.Parse(postString ?? "");
}
eMailOption.UserName = section.GetSection("UserName").Value ?? "";
eMailOption.Password = section.GetSection("Password").Value ?? "";
eMailOption.From = section.GetSection("From").Value ?? "";
}
///
/// 发送
///
/// 主题
/// 内容
/// 收件地址
///
public async Task Send(string subject, string message, string address)
{
var client = new SmtpClient();
var mailMsg = new MailMessage();
client.Host = eMailOption.Server;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.EnableSsl = true;
mailMsg.To.Add(new MailAddress(address));
mailMsg.From = new MailAddress(eMailOption.From);
mailMsg.SubjectEncoding = Encoding.UTF8;
mailMsg.Subject = subject;
mailMsg.BodyEncoding = Encoding.UTF8;
mailMsg.Body = message;
try
{
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential(eMailOption.UserName, eMailOption.Password);
// 发送邮件
await client.SendMailAsync(mailMsg);
client.Dispose();
}
catch (Exception ex)
{
throw new ApplicationException(ex.Message);
}
}
}