2011-01-15 3 views
4

Können wir E-Mail Formular lokalen Host mit Google Mail SMTP senden? Ich versuche und bekomme einen Fehler. Die Operation ist abgelaufen.können wir E-Mails vom lokalen Host über Google Mail-Konto senden?

Ich versuche, E-Mail von lokalen Host von den letzten 3 Tagen zu senden. Es funktioniert gut, wenn ich E-Mails von meinem Hosting-Server mit Google Mail sende, aber es funktioniert nicht auf localhost. Ich habe Firewall-Anti-Virus deaktiviert, aber selbst dann unglücklich. Bitte führen Sie mich haben Sie jemals Gmail für das Senden von E-Mails von localhost verwendet (ohne Server beteiligt)

Wenn es möglich ist, hier ist mein Code bitte führen Sie mich. Bitte hilf mir und führe mich, dass ich feststecke.

dank

protected void btnConfirm_Click(object sender, EventArgs e) 
{ 
    MailMessage message = new MailMessage(); 
    message.To.Add("[email protected]"); 
    message.From = new MailAddress("[email protected]"); 
    message.Subject = "New test mail"; 
    message.Body = "Hello test message succeed"; 
    message.IsBodyHtml = true; 
    message.BodyEncoding = System.Text.Encoding.ASCII; 
    message.Priority = System.Net.Mail.MailPriority.High; 

    SmtpClient smtp = new SmtpClient(); 
    smtp.EnableSsl = true; 
    smtp.Port = 465;   
    smtp.UseDefaultCredentials = false; 
    smtp.DeliveryMethod = SmtpDeliveryMethod.Network; 
    smtp.Host = "smtp.gmail.com"; 
    smtp.Credentials = new NetworkCredential("[email protected]", "**mypassword**"); 
    try 
    { 
     smtp.Send(message); 
    } 
    catch (Exception ex) 
    { 
     throw ex; 
    } 
} 
+0

Haben Sie versucht, die try/catch-Anweisungen zu entfernen und sie im Debugger auszuführen, um zu sehen, wo sie stecken bleiben? –

+0

auf smtp.Send (Nachricht); Aber das erste Ding ist, hast du jemals gmail benutzt, um Post von loclhost zu senden? – user576510

+0

Kevin Ich möchte fragen, ist es möglich? – user576510

Antwort

5

Ja, Sie können E-Mails mit Gmail von localhost senden.

Ich schrieb einmal a blogpost about how to send email using gmail.

Einfügen des Code-Snippets von my blogpost.

Dies ist der Arbeitscode, den ich oft benutze.

/// <summary> 
/// A Generic Method to send email using Gmail 
/// </summary> 
/// <param name="to">The To address to send the email to</param> 
/// <param name="subject">The Subject of email</param> 
/// <param name="body">The Body of email</param> 
/// <param name="isBodyHtml">Tell whether body of email will be html of plain text</param> 
/// <param name="mailPriority">Set the mail priority to low, medium or high</param> 
/// <returns>Returns true if email is sent successfuly</returns> 
public static Boolean SendMail(String to, String subject, String body, Boolean isBodyHtml, MailPriority mailPriority) 
{ 
    try 
    { 
     // Configure mail client (may need additional 
     // code for authenticated SMTP servers) 
     SmtpClient mailClient = new SmtpClient("smtp.gmail.com", 587); 

     // set the network credentials 
     mailClient.Credentials = new NetworkCredential("[email protected]", "YourGmailPassword"); 

     //enable ssl 
     mailClient.EnableSsl = true; 

     // Create the mail message (from, to, subject, body) 
     MailMessage mailMessage = new MailMessage(); 
     mailMessage.From = new MailAddress("[email protected]"); 
     mailMessage.To.Add(to); 

     mailMessage.Subject = subject; 
     mailMessage.Body = body; 
     mailMessage.IsBodyHtml = isBodyHtml; 
     mailMessage.Priority = mailPriority; 

     // send the mail 
     mailClient.Send(mailMessage); 

     return true; 
    } 
    catch (Exception ex) 
    { 
     return false; 
    } 
} 
2

Wenn der Fehler Operation has timed out, dann ist eine Möglichkeit, dass Netzwerk-Firewall mit dem angegebenen Host/Port abgehenden Zugriff blockiert. Dies ist der Fall in Büros, die Firewall/Proxy-Server haben, um den Internetzugang einzuschränken. Das Deaktivieren der Firewall auf localhost würde nicht helfen.

Eine Möglichkeit, dies zu überprüfen, ist telnet smtp.gmail.com 465. Wenn dieses Zeitlimit überschritten wird, ist Ihr Problem klar.

+0

Raghuram Ich habe versucht, aber bekommen keine Antwort Bildschirm wird schwarz und nichts tun. PLZ Rat – user576510

+0

@user dann sind Ihre Ports blockiert. Erkundige dich bei deinem Netzwerkadministrator, das hat NICHTS mit Code zu tun. –

1

Verwenden Port

Btw, mit, dass throw ex im catch-Block ist wirklich schlecht, verlieren Sie den Stack-Trace. Ich bin sicher, das war nur für Debugging-Zwecke, aber es wäre besser, einfach throw ohne die ex zu verwenden, um die gleiche Ausnahme zu wiederholen.

+0

Chris danke, ich treid einfach mit throw und bekomme den gleichen Fehler "Eine bestehende Verbindung wurde vom entfernten Rechner zwangsweise geschlossen". Wenn ich Port 587 verwende, erhalte ich diesen Fehler, aber wenn ich Port 465 verwende, ist die Zeit abgelaufen. plz guide – user576510

+0

@ user576510, habe ich getestet mit Ihrem genauen Code mit Port 587 und meine Kontoinformationen natürlich, es hat gut funktioniert.Der Kommentar, den ich über 'throw ex' gemacht habe, würde den Fehler nicht ändern, es war lediglich ein allgemeiner Hinweis zu einer Best Practice, damit die Stacktrace-Informationen nicht verloren gehen, nicht relevant für dieses Problem, aber es ist ein Best-Practice-Vorschlag. –

+0

Chris irgendeine Idee, warum es nicht auf meiner Maschine funktioniert? danke – user576510

Verwandte Themen