C# Email versenden aus dem Programm

lowest

Newbie
Registriert
Juli 2014
Beiträge
2
Hab ein kleines Problem, immer wenn ich versuche eine Mail zu versenden, bekomme ich die Meldung:

System.Net.Mail.SmtpException: The Operation has timed out.

Außerdem meint er zu mir ich hätte einen Fehler in Zeile 17 (Damit meine ich jetzt die Zeile im Code den ich gepostet habe)

Habe schon mehrere Varianten versucht, jedoch hat bisher keine funktioniert. Hab es auch schon mit anderen Mail(-anbietern) versucht (Hotmail, gmail, gmx etc.), jedoch führt, das auch immer zum gleichen Fehler.
Hab leider erst gerade angefangen mit C# :/

Wäre super, wenn mir jemand dabei weiterhelfen könnte, denn egal was ich versucht hab, nichts hat funktioniert...

Hier wäre noch der Code den ich dafür versuche zu verwenden:

Code:
public void sendMail()      // gmail
        {
            try
            {
                MailMessage objeto_mail = new MailMessage();
                SmtpClient client = new SmtpClient();
                client.Port = 587;
                client.Host = "smtp.gmail.com";
                client.Timeout = 20000;
                client.DeliveryMethod = SmtpDeliveryMethod.Network;
                client.UseDefaultCredentials = false;
                client.Credentials = new System.Net.NetworkCredential("username", "password");
                objeto_mail.From = new MailAddress("AbsenderAdresse");
                objeto_mail.To.Add(new MailAddress("EmpfängerAdresse"));
                objeto_mail.Subject = "Test";
                objeto_mail.Body = "test";
                client.Send(objeto_mail);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
 
Nutze mal den Debugger um deine Exception zu analysieren. Nur Text ausgeben sagt nicht viel aus.

Normalerweise gibt es sehr viele Detailinfos in diesen Exceptions.
 
Wie meinst du nutze mal den Debugger? Bin echt noch neu in der Materie, also wenn ich das Programm teste, dann steht dabei Debug...

und das einzige was ich da bekomme ist:
System.Net.Mail.SmtpException: The Operation has timed out.
at System.Net.mail.SmtpClient.Send<MailMessage message>
at ConsoleprogTest.EmailOutput.sendMail() in pfad\EmailOutput.cs:line34

Weiß leider nicht was du sonst damit meinst, sorry :/
 
Die Exception "ex" in das Überwachungsfenster ziehen und einen Breakpoint auf Console.WriteLine(ex.ToString()); setzen.
Wenn der Breakpoint erreicht wird kannst du über ein Baummenü die Exception analysieren.
Eventuell siehst du da detailliertere Hinweise zur Ursache des Timeouts.
 
Habe zufällig erst gestern eine Methode zum Versenden von mails geschrieben, vielleicht hilfts dir. Ansonsten mal wirklich beim Debuggen gucken wo es hängt. Versuche außerdem mal die Timeout und Port-Parameter wegzulassen.

Code:
public static int SendEMail(string _to,string _subject,string _from,string _body,string _smtp) 
        {
            try 
            {

                System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
                message.To.Add(_to);
                message.Subject = _subject;
                message.From = new System.Net.Mail.MailAddress(_from);
                message.Body = _body;
                System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient(_smtp);
                smtp.Send(message);

                Console.WriteLine("Nachricht wurde versand an (" +_to+")");
                
                return 1;
            }
            catch(Exception ex)
            {
                Console.WriteLine("Nachricht konnte nicht versendet werden: " + ex);
                return -1;
            }
        }
 
Kann es sein dass Google nur noch SSL-gesichtere E-Mails annimmt?
Google hat doch in Bezug auf E-Mail sowas mal erwähnt, oder gilt das nur für Webzugriff?

Im Zweifelsfall könnte man mal "EnableSSL" auf true setzen.
 
Zurück
Oben