SmtpClient.SendMailAsync не может отправить электронное письмо - PullRequest
0 голосов
/ 03 июля 2019

SmtpClient SendMailAsync не может отправить сообщение, если содержание тела больше, чем ок. 20 символов.

Этот код будет работать с комментарием в строке, которая просто отправляет «test» в качестве электронного письма, но завершается неудачно для второго (в настоящее время некомментированного) вызова SendMailAsync.

В основном приложении, отличном от .NET, я могу отправлять большие электронные письма без проблем.

Register.cshtml.cs

    public async Task<IActionResult> OnPostAsync(string returnUrl = null)
    {
        returnUrl = returnUrl ?? Url.Content("~/");
        if (ModelState.IsValid)
        {
            var user = new IdentityUser { UserName = Input.UserName, Email = Input.Email };
            var result = await _userManager.CreateAsync(user, Input.Password);
            if (result.Succeeded)
            {
                var roleResult = await _userManager.AddToRoleAsync(user, "Member");
                _logger.LogInformation("User created a new account with password.");

                var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);
                var callbackUrl = Url.Page(
                    "/Account/ConfirmEmail",
                    pageHandler: null,
                    values: new { userId = user.Id, code = code },
                    protocol: Request.Scheme);

                //await _emailSender.SendEmailAsync(Input.Email, "Confirm Your Email", "test");

                await _emailSender.SendEmailAsync(Input.Email, "Confirm Your Email", "Please confirm your account. <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>Verify</a>.");

                return LocalRedirect(returnUrl);
            }
            foreach (var error in result.Errors)
            {
                ModelState.AddModelError(string.Empty, error.Description);
            }
        }

        // If we got this far, something failed, redisplay form
        return Page();
    }

IEmailSender.cs

   public async Task SendEmailAsync(string email, string subject, string htmlMessage)
    {

        var client = new SmtpClient(host, port)
        {
            UseDefaultCredentials = true,
            Credentials = CredentialCache.DefaultNetworkCredentials,
            EnableSsl = enableSSL,              
            DeliveryMethod = SmtpDeliveryMethod.Network

        };
        MailMessage mm = new MailMessage();

        mm.To.Add(email);

        mm.From = new MailAddress(fromAddress);
        mm.BodyEncoding = System.Text.Encoding.UTF8;
        mm.SubjectEncoding = System.Text.Encoding.UTF8;
        mm.HeadersEncoding = System.Text.Encoding.UTF8;

        mm.Priority = MailPriority.High;
        mm.IsBodyHtml = true;
        mm.Subject = subject;
        mm.Body = htmlMessage;

        await client.SendMailAsync(mm);

    }

Нет исключений или ошибок не возвращается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...