Beispiel #1
0
        private static async Task <bool> SendFileToCharacter(JoinRpgClient joinRpgClient,
                                                             int characterId, FileSystemInfo file, DehsSettings settings, MailClient mailClient)
        {
            Log.Info($"[{characterId}] File {file.Name}");
            var character = await joinRpgClient.GetCharacter(characterId);

            var email = character.Fields
                        .SingleOrDefault(field => field.ProjectFieldId == settings.EmailFieldId)?.Value;

            Log.Info($"[{characterId}] Email {email} ready, applying delay");

            await Task.Delay(20 * 1000);

            if (string.IsNullOrWhiteSpace(email))
            {
                return(false);
            }

            try
            {
                var message = new MimeMessage();
                message.From.Add(new MailboxAddress(settings.FromName, settings.FromEmail));
                message.To.Add(new MailboxAddress(email, email + "@" + settings.EmailServer));
                message.Subject = "Хакерский аккаунт и стартовый набор кодов";

                message.Body = new TextPart("plain")
                {
                    Text = File.ReadAllText(file.FullName)
                };

                await mailClient.SendAsync(message);
            }
            catch (Exception exception)
            {
                Log.Warn($"Failed to send to address {email}. Reason {exception}");
                return(false);
            }
            Log.Info("Send success");
            return(true);
        }