#pragma warning disable SYSLIB0028 namespace Supercell.Laser.Server.SCID { using System; using System.Net; using System.Net.Mail; using System.Threading.Tasks; using Supercell.Laser.Server.Settings; internal static class SCIDEmailSender { public static async Task SendCode(string identity, string pin) { string email = GetEmail(identity); if (string.IsNullOrWhiteSpace(email)) return false; return await Task.Run(() => { try { string smtpHost = "smtp-mail.outlook.com"; int smtpPort = 587; string fromEmail = !string.IsNullOrEmpty(Configuration.Instance?.SmtpEmail) ? Configuration.Instance.SmtpEmail : "idMetaBrawl@hotmail.com"; string fromPassword = !string.IsNullOrEmpty(Configuration.Instance?.SmtpPassword) ? Configuration.Instance.SmtpPassword : "ulirbeqcgpjvrlkh"; string fromDisplayName = "MetaBrawl Supercell ID"; using (SmtpClient client = new SmtpClient(smtpHost, smtpPort)) { client.EnableSsl = true; client.DeliveryMethod = SmtpDeliveryMethod.Network; client.UseDefaultCredentials = false; client.Credentials = new NetworkCredential(fromEmail, fromPassword); client.Timeout = 10000; using (MailMessage message = new MailMessage()) { message.From = new MailAddress(fromEmail, fromDisplayName); message.To.Add(email); message.Subject = $"Код подтверждения Supercell ID: {pin}"; message.IsBodyHtml = true; message.Body = GenerateHtmlBody(pin); client.Send(message); } } SCIDStart.Log($"[SCID] Verification email successfully sent to {email}"); return true; } catch (Exception exception) { SCIDStart.Log($"[SCID] Verification email send failed to {email}: {exception.Message}"); return false; } }); } private static string GenerateHtmlBody(string pin) { return $@" Supercell ID
SUPERCELL ID

MetaBrawl Server

Ваш одноразовый код для входа в игру:

{pin}

Код действителен в течение 5 минут.
Не передавайте этот код никому, даже администрации сервера.

Если вы не запрашивали вход в MetaBrawl, просто проигнорируйте это сообщение.

"; } private static string GetEmail(string identity) { const string prefix = "email:"; if (identity == null) return null; return identity.StartsWith(prefix, StringComparison.OrdinalIgnoreCase) ? identity[prefix.Length..] : identity; } } }