it-swarm.com.de

Senden von E-Mails aus Google Mail SMTP C # -Verbindungszeitlimit

Ich habe versucht, eine E-Mail über C # von einem Google Mail-Konto aus zu senden, um ein Konto für meine Website zu registrieren.

Ich habe verschiedene Möglichkeiten ausprobiert, aber dieselbe Ausnahme taucht weiterhin auf: System.Net.Mail.Smtp-Ausnahme - Zeitüberschreitung bei der Verbindung.

Folgendes habe ich in meine Datei "Web.config" aufgenommen:

<system.net>
    <mailSettings>
        <smtp deliveryMethod="Network" 
              from="Writely &lt;[email protected]&gt;">
            <network Host="smtp.gmail.com" 
                     port="465" 
                     enableSsl="true" 
                     defaultCredentials="false" 
                     userName="[email protected]" 
                     password="******" />
        </smtp>
    </mailSettings>
</system.net>

wo ist der Name meiner Website, und [email protected] ist das Konto, von dem ich eine E-Mail senden möchte.

Wenn ich dann in meinem Account Controller eine Verbindung mit meiner Datenbank herstelle und den Benutzer in meiner Tabelle speichere, erstelle ich mein MailMessage-Objekt und versuche, die E-Mail auf dieselbe Weise zu senden:

using (DBConnection conn = new DBConnection())
{
       conn.UserInfoes.Add(userInfo);
       conn.SaveChanges();

       MailMessage mail = new MailMessage();
       mail.From = new MailAddress("[email protected]");
       mail.To.Add("[email protected]");
       mail.Subject = "Welcome to Writely";
       mail.Body = "Test content";

       SmtpClient smtp = new SmtpClient();
       smtp.Send(mail);
}

Vermisse ich etwas oder mache ich etwas falsch? Ich habe gelesen, dass dies der gute Weg ist, um dies in einer anderen Frage zum Stapelüberlauf zu tun, sodass ich wirklich nicht weiß, wo das Problem liegt.

Danke für Ihre Hilfe :)

10
Bernice

Sie müssen dem SmtpClient mitteilen, welche Einstellungen verwendet werden sollen. Diese Informationen werden nicht automatisch aus der Datei Web.Config gelesen.

SmtpClient smtp = new SmtpClient("smtp.gmail.com", 465);
smtp.Credentials = new NetworkCredential("[email protected]", "***");
smtp.EnableSsl = true;
smtp.Send(mail);
7
Jason Watkins

google Mail erfordert eine Authentifizierung:

Outgoing Mail (SMTP) Server
requires TLS or SSL: smtp.gmail.com (use authentication)
Use Authentication: Yes
Port for TLS/STARTTLS: 587
Port for SSL: 465

also, was ich getan habe, ist

var client = new SmtpClient("smtp.gmail.com", 587)
        {
            Credentials = new NetworkCredential("[email protected]", "mypwd"),
            EnableSsl = true
        };
        client.Send("[email protected]", "[email protected]", "Welcome to Writely", "Test content");
4
Crudler

Ich hatte genau das gleiche Problem und es wurde behoben, nachdem die Portnummer von 465 auf 587 geändert wurde.

Ich hatte das Problem bei "E-Mail-Bestätigung", "Passwortwiederherstellung" und "E-Mail senden" und jetzt sind alle 3 Probleme behoben :).

Ich weiß, dass es ein ziemlich alter Beitrag ist, aber ich verwende normalerweise die vorhandenen Beiträge, um Antworten zu finden, anstatt nach neuen Fragen zu fragen.

Vielen Dank für all Ihre Hilfe.

3
Auguste

Wie ich schon geantwortet habe hier .

Dieses Problem kann auch durch eine Sicherheitskonfiguration in Ihrem Google Mail-Konto verursacht werden.

Der richtige Port ist 587, aber zur Authentifizierung müssen Sie den Zugriff von weniger sicheren Apps in Ihrem Google Mail-Konto zulassen. Probieren Sie es aus hier

Es hat bei mir funktioniert, hoffe es hilft ..

1
dinhokz

Beispiel in asp.net web forms/sharepoint

StringBuilder Body = new StringBuilder();
Body.Append("Your text");

String FromEmail = "you email";
String DisplayNameFromEmailMedico = "display when you receive email";
MailMessage message = new MailMessage();
message.From = new MailAddress(FromEmail, DisplayNameFromEmailMedico);
message.To.Add(new MailAddress("[email protected]"));
message.Subject = "subject that print in email";
message.IsBodyHtml = true;
message.Body = Body.ToString();
SmtpClient client = new SmtpClient();

NetworkCredential myCreds = new NetworkCredential("[email protected]", "key from email smtp", "");
client.EnableSsl = true;
client.Credentials = myCreds;
client.Send(message);
0
Rafael Estevão