2017-01-09 65 views
0

有什么不对的代码 - 我只是想送succesfuld后重定向:MVC网核心1.1.0 Mailkit发送邮件的形式返回一个空白页

公共异步任务SendEmailAsync(字符串电子邮件,字符串名称,字符串消息) { 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。我不认为它可以在不是行为结果的方法中使用。该方法的目的是调用另一个动作方法,然后让代码运行。但是你不这样做,所以你可以直接从你所在的任何action方法调用View(“谢谢”)。

你应该为你创建一个单独的类Email方法,然后从控制器调用该类。

这样,您只需要在触发它的actionmethod中的一行中调用您的电子邮件方法。它会节省很多工作。下面的示例调用邮件类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。 在您的控制器(或其他类)中,您可以通过在构造函数中实例化它来调用您的电子邮件类。