2016-05-30 6 views
0

Dies ist mein Code zum Senden von E-Mail nach der Registrierung erfolgreich ist. Es funktioniert gut auf meinem IIS-Server localhost. Aber nach der Bereitstellung der Website auf dem Server wird keine E-Mail an den Benutzer gesendet. Es wird keine Ausnahme oder Fehlermeldung angezeigt.E-Mail senden Code ist nicht arbeiten nach dem Hosting

MailMessage mm = new MailMessage("[email protected]", TextBoxEmail.Text.Trim()); 
mm.Subject = "Password Recovery"; 
mm.Body = string.Format("Hi ,<br /><br />Your password is .<br /><br />Thank You."); 
mm.IsBodyHtml = true; 
SmtpClient smtp = new SmtpClient(); 
smtp.Host = "smtp.gmail.com"; 
smtp.EnableSsl = true; 
NetworkCredential NetworkCred = new NetworkCredential(); 
NetworkCred.UserName = "[email protected]"; 
NetworkCred.Password = "xyz"; 
smtp.UseDefaultCredentials = true; 
smtp.Credentials = NetworkCred; 
smtp.Port = 587; 
smtp.Send(mm); 
message = "Registration successful. Activation email has been sent."; 
ClientScript.RegisterStartupScript(GetType(), "alert", "alert('" + message + "');", true); 

gleichen Code arbeiten auf Passwort-Recovery-Seite. aber hier funktioniert es nicht.

Ich habe einige Änderungen im Code und auch eine neue Seite für die Registrierung erstellen jetzt ist es

Objektverweis nicht auf eine Instanz eines Objekts festgelegt Schleppfehler zeigt.

Beschreibung: Bei der Ausführung der aktuellen Webanforderung ist eine nicht behandelte Ausnahme aufgetreten. Bitte überprüfen Sie die Stack-Trace für weitere Informationen über den Fehler und wo es aus dem Code stammt.

Ausnahmedetails: System.NullReferenceException: Objektverweis nicht auf eine Instanz eines Objekts festgelegt.

zuerst dachte ich, dass es Fehler beim Senden von E-Mail-Code ist, aber es funktioniert gut auf IIS lokalen Server und auch auf anderen Seiten. so denke ich, dass es ein Problem des Knopfklickereignisses ist. nur in der Lage, hier zu erreichen. Bitte helfen Sie mir, wie ich weiß, dass ich hier meine Antwort bekomme.

mein neuer Code:

using (MailMessage mail = new MailMessage()) 
       { 
        mail.From = new MailAddress("[email protected]"); 
        mail.Subject = "mailSubject"; 
        mail.Body = "mailBody"; 
        mail.IsBodyHtml = true; 

        mail.To.Add("[email protected]"); 



        using (SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587))//2nd parameter is PORT No. 
        { 
         smtp.Credentials = new System.Net.NetworkCredential("[email protected]", "xyz"); 
         smtp.EnableSsl = true;//set this as your Host Name properties, for gmail,its true 
         smtp.Send(mail);//actual sending operation here 
        } 
       } 
+0

versuchen Sie 465 als ausgehenden Port. –

+0

Oft verlangen Provider, dass der verwendete Host ihr eigener Host ist. Ich hatte dasselbe Problem mit einem Anbieter, bis sie mir sagten, dass ich ihren Gastgeber einstellen muss. –

+0

Ich dachte ja ... aber der gleiche Code funktioniert auf einer anderen Seite für die Passwortwiederherstellung – kish

Antwort

1

Seien Sie sicher, System.Net.Mail zu verwenden, nicht die veralteten System.Web.Mail.

using System.Net; 
using System.Net.Mail; 

var fromAddress = new MailAddress("[email protected]", "From Name"); 
var toAddress = new MailAddress("[email protected]", "To Name"); 
const string fromPassword = "fromPassword"; 
const string subject = "Subject"; 
const string body = "Body"; 

var smtp = new SmtpClient 
{ 
    Host = "smtp.gmail.com", 
    Port = 587, 
    EnableSsl = true, 
    DeliveryMethod = SmtpDeliveryMethod.Network, 
    UseDefaultCredentials = false, 
    Credentials = new NetworkCredential(fromAddress.Address, fromPassword) 
}; 
using (var message = new MailMessage(fromAddress, toAddress) 
{ 
    Subject = subject, 
    Body = body 
}) 
{ 
    smtp.Send(message); 
} 

Auch Sie haben für diese App über ein spezielles Google-Passwort zu erstellen:
Google> Account> Security> Apps> Manage apps> Add an app Wählen Sie einen Namen My Awesome App und Google wird ein eigenes Passwort generieren.

Ein weiterer Rat ist, zulassen weniger sichere Anwendungen in Ihrem Google-Konto: link

Und schließlich daran nehmen, dass Google nicht erlauben, mehr als 250 Nachrichten pro Stunde zu senden, nicht mehr als 1000 pro Tag (nicht sicher von der letzten Nummer).

+0

ich habe dieses versucht aber nicht funktioniert. Mein Code arbeitet auf einer anderen Seite, aber ich weiß nicht, welches Problem auf dieser Seite – kish

+0

@kish ein neues App-Passwort versuchen. –

+0

Entschuldigung, ich habe nicht, t bekommen Sie ... neues App-Passwort? – kish