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 OpenSSL) { MailSenderID = Guid.NewGuid(); _SmtpClientInfo = new SmtpClientInfo(SenderMailAddress, SenderName, SenderPassword, Host, Port, OpenSSL); 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; } } }