2017-01-09 15 views
0

Что случилось с этим кодом - я просто хочу, чтобы перенаправить после отправки succesfuld:MVC чистого ядра 1.1.0 Mailkit отправка формы почты возвращает пустую страницу

общественных асинхронной Task SendEmailAsync (строка E-mail, струнного имя, строка сообщение) { var emailMessage = new MimeMessage();

 emailMessage.From.Add(new MailboxAddress("PAR OG SINGLER", "[email protected]")); 
     emailMessage.To.Add(new MailboxAddress("per", Email)); 
     emailMessage.Subject = "Test par og singler"; 
     emailMessage.Body = new TextPart("plain") { Text = Message }; 

     using (var client = new SmtpClient()) 
     { 
      var credentials = new NetworkCredential 
      { 
       UserName = "[email protected]", // replace with valid value 
       Password = "detteerentest" // replace with valid value 
      }; 
      //var mytask = Email + "" + Message; 

      client.LocalDomain = "parogsingler.dk"; 
      await client.ConnectAsync("smtp.gmail.com", 587, SecureSocketOptions.Auto).ConfigureAwait(false); 
      client.AuthenticationMechanisms.Remove("XOAUTH2"); 

      await client.AuthenticateAsync(credentials); 

      await client.SendAsync(emailMessage).ConfigureAwait(false); 
      await client.DisconnectAsync(true).ConfigureAwait(false); 

      RedirectToAction("Thanks"); 
     } 
    } 
    public IActionResult Thanks() 
    { 
     return View(); 
    } 

ответ

0

Я не знаю, почему вы должны использовать RedirectToAction. Я не думаю, что он может использоваться в методе, который не является actionresult. Цель этого метода состоит в том, чтобы вызвать другой метод действий, когда у вас есть код для запуска. Но вы этого не сделаете, поэтому вы можете просто вызвать View («thanks») непосредственно из любого действия, в котором вы находитесь.

Вы должны сделать отдельный класс для вас методом электронной почты, а затем вызвать этот класс из контроллера.

Таким образом, вы можете только вызвать свои методы электронной почты в одной строке в методе action, который запускает его. Это спасет много работы. Этот пример вызывает класс электронной почты EmailService и это Sendmail метод:

Public async Task<IActionResult> Mail() 
{ 
    //maybe some validation or/and exeption handling 

    var emailService = new EmailService(); 
    await emailService.SendEmailAsync(); 
    return View("Thanks"); 

    //errormessage if not succeed 

} 
public IActionResult Thanks() 
{ 
    return View(); 
} 

В идеале вы хотите использовать injecton зависимость создать emailservice. В контроллере (или каком-либо другом классе) вы можете вызвать свой класс электронной почты, создав его в конструкторе.