using System.Net.Mail; using Milimoe.FunGame.Core.Library.Common.Network; using Milimoe.FunGame.Core.Library.Constant; using Milimoe.FunGame.Core.Model; using Milimoe.FunGame.Core.Service; namespace Milimoe.FunGame.Core.Api.Transmittal { public class MailSender : IDisposable { /// /// 邮件服务内部ID /// public Guid MailSenderID { get; } /// /// Smtp客户端信息 /// public SmtpClientInfo SmtpClientInfo => _SmtpClientInfo; /// /// 上一个邮件发送的结果 /// public MailSendResult LastestResult => _LastestResult; /// /// 上一个邮件的发送错误信息(如果发送失败) /// public string ErrorMsg => _ErrorMsg; /** * 内部变量 */ private readonly SmtpClientInfo _SmtpClientInfo; private MailSendResult _LastestResult = MailSendResult.NotSend; private string _ErrorMsg = ""; /// /// 创建邮件服务 /// /// /// /// /// /// /// public MailSender(string senderMailAddress, string senderName, string senderPassword, string host, int port, bool ssl) { MailSenderID = Guid.NewGuid(); _SmtpClientInfo = new SmtpClientInfo(senderMailAddress, senderName, senderPassword, host, port, ssl); if (!MailManager.MailSenders.ContainsKey(MailSenderID)) MailManager.MailSenders.Add(MailSenderID, this); } /// /// 创建完整邮件对象 /// /// /// /// /// /// /// /// /// public MailObject CreateMail(string subject, string body, MailPriority priority, bool html, string[] toList, string[]? ccList = null, string[]? bccList = null) { return new MailObject(this, subject, body, priority, html, toList, ccList, bccList); } /// /// 发送邮件 /// /// /// public MailSendResult Send(MailObject mail) { _LastestResult = MailManager.Send(this, mail, out _ErrorMsg); return _LastestResult; } private bool _isDisposed = false; /// /// 关闭邮件服务 /// public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } /// /// 关闭邮件服务 /// /// protected void Dispose(bool disposing) { if (!_isDisposed) { if (disposing) { MailManager.Dispose(this); } } _isDisposed = true; } } }