2017-12-13 1 views
0

Ich entwickle eine Anwendung in ASP.Net MVC, eine der Anforderungen ist Reset-Passwort-Funktionalität, ich kann nicht herausfinden, wie man ein Passwort sendet Wiederherstellungs-E-Mail, damit ein Benutzer das Kennwort zurücksetzen kann.Konfigurieren der EmailService Klasse in IdentityConfig.cs zum Senden von E-Mails für das Zurücksetzen des Kennworts in asp.net

Hier ist mein Code in dem Web-config:

<system.net> 
    <mailSettings> 
    <smtp from="[email protected]"> 
    <network host="smtp.gmail.com" defaultCredentials="false" password="password" port="587" enableSsl="true" /> 
    </smtp> 
    </mailSettings> 
    </system.net> 

Hier meine Emailservice-Klasse in dem IdentityConfig.cs ist:

public class EmailService : IIdentityMessageService 
{ 
    public Task SendAsync(IdentityMessage message) 
    { 
     // Plug in your email service here to send an email. 
     SmtpClient client = new SmtpClient(); 
     return client.SendMailAsync("email from web config", 
            message.Destination, 
            message.Subject, 
            message.Body); 

    } 
    } 

Diese E-Mail nicht, ich weiß nicht, Was könnte das Problem, hoffe jemand kann helfen.

+0

Ich habe Ihr Passwort für Sie entfernt ... Sie sollten es jetzt ändern, aber –

Antwort

0

nahm ich an Sie versuchen, ein wenig wie this post zu tun, versuchen Sie es mit async und await Schlüsselwörter (da es ein System.Threading.Tasks.Task-Methode) und wickeln SmtpClient innerhalb using Anweisung IDisposable Instanz einfacher zu verwalten (this reference sehen, wenn Sie begegnen TaskCanceledException sogenannten):

public class EmailService : IIdentityMessageService 
{ 
    public async Task SendAsync(IdentityMessage message) 
    { 
     // Plug in your email service here to send an email. 
     using (SmtpClient client = new SmtpClient()) 
     { 
      await client.SendMailAsync("email from web config", 
             message.Destination, 
             message.Subject, 
             message.Body); 
     } 
    } 
} 

Wenn Sie using Anweisung nicht verwenden möchten, müssen SmtpClient.SendCompleted Ereignis manuell Mail nach dem Senden zu entsorgen SmtpClient Instanz behandelt werden:

+0

Danke für die Antwort, ich habe beide Ihre Antwort implementiert, aber noch keine Nachricht an die E-Mail für das Zurücksetzen des Passworts gesendet. Ich weiß nicht, was ich falsch mache. – Haro

+0

Wenn Sie von der Lösungsquelle aus suchen, sollte es funktionieren, haben Sie eine Exception oder andere Fehler vor/nach dem Senden von Mail? Überprüfen Sie, ob Ihr E-Mail-Konto, das zum Senden verwendet wurde, eine Test-E-Mail-Nachricht gesendet hat. –

Verwandte Themen