Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Folgendes Problem...

Ich möchte mit einem Programm in regelmäßigen abständen eine Mail versenden mit einem Log...

Ich habe schon diverse Anleitungen (jeder schreit es iwie anders) durchforstet aber irgendwie hängt es sich immer bei "client.Send(message);" auf und macht nicht mehr weiter...

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Net.Mail;

using System.Net;

using System.Net.Sockets;


namespace ConsoleApplication1

{

    class Program

    {

        static void Main(string[] args)

        {

                MailAddress from = new MailAddress("xxx@gmx.com", "xxx");

                SmtpClient client = new SmtpClient("mail.gmx.net");


                //Maileinstellungen

                MailAddress to = new MailAddress("xxx", "xxx");

                MailMessage message = new MailMessage(from, to);


                message.Subject = "Using the SmtpClient class.";

                message.Body = @"Using this feature, you can send an e-mail message from an application very easily.";


                //SMTP-Client

                client.EnableSsl = true;

                client.Port = 465;                


                client.Credentials = new NetworkCredential("xxx", "xxx");

                Console.WriteLine("Sending an e-mail message to {0} by using the SMTP host {1}.", to.Address, client.Host);

                try

                {

                    client.Send(message);                    

                }

                catch (Exception ex)

                {

                    Console.WriteLine("Exception caught in CreateCopyMessage(): {0}",

                                ex.ToString());

                }

        }

    }

}

PS: Das Attachement ist hier nicht drin, weil dies ein extra Programm ist in dem ich versuche einfach mal ne Mail raus zu bekommen xD

.:Edith:. PUHHHHH vergessen Nutzer und PW aus Code zu löschen xD

Bearbeitet von nubbeldupp

Moin,

also ich habe jetzt gerade vor kurzen diese Klasse in einer Webanwendung gebraucht und bei mir sieht der Sourcecode folgendermaßen aus:

SmtpClient _smtp = new SmtpClient(localhost, 25);


            MailAddress _sender = new MailAddress("no-reply@foo.de", "No-Reply System", System.Text.Encoding.UTF8);

            MailAddress _receiver = new MailAddress("empfänger@bar.de);


            MailMessage _message = new MailMessage(_sender, _receiver);

            _message.Body = "Hier kommt die Nachricht rein...";

            _message.Subject = "Ich bin der Titel";

            _message.IsBodyHtml = true;


            _smtp.Send(_message);
Dieses Sourcecode setzt natürlich voraus, dass der SMTP Server Dienst auch auf dem Server läuft wo die Webanwendung liegt. Solltest du einen anderen Server als "Localhost" angeben und der Benutzerdaten benötigt kannst du diese ganz einfach mit folgenden Zeilen hinzufügen:
System.Net.NetworkCredential _credentials = new System.Net.NetworkCredential("User","Passwort");

            _smtp.Credentials = _credentials;

Aber ich erkenne so direkt jetzt keinen Fehler in deinem Sourcecode. Versuch die Email mal ohne SSL zu verschicken.

Bearbeitet von Hahne

  • Autor

Hi,

und danke erstmal für deine Antwort.

Was mir jetzt grade auffällt ist, dass ich "_smtp.Credentials = _credentials;" nicht drin habe... vllt hilft das ja weiter... ich werde es auf jedenfall mal testen xD

Bericht erfolgt gleich :)

Solltest du einen anderen Server als "Localhost" angeben und der Benutzerdaten benötigt kannst du diese ganz einfach mit folgenden Zeilen hinzufügen:

System.Net.NetworkCredential _credentials = new System.Net.NetworkCredential("User","Passwort");

            _smtp.Credentials = _credentials;

  • Autor

OK hat nicht geklappt...

Er kommt einfach nicht über das senden hinaus...

Habe es auch ohne SSL versucht, funktioniert auch nicht... ich glaube auch, dass der Port 25 hier gesperrt ist und deswegen gehe ich über SSL + Port 465

Muss bei den "NetworkCredential"'s evtl noch die Domain rein? ist mir grad mal am Haltepunkt aufgefallen, das dort nix steht

Bearbeitet von nubbeldupp

Erhälst du eine Fehlermeldung? Wenn ja was sagt die aus? Steht ggf. etwas in den Win-Logs?

Setze bitte nochmal die beiden Variablen:

_SmtpServer.Timeout = 5000;

_SmtpServer.UseDefaultCredentials = false;

  • Autor
Erhälst du eine Fehlermeldung? Wenn ja was sagt die aus? Steht ggf. etwas in den Win-Logs?

Keine Fehlermeldung... der hängt einfach und macht nicht mehr weiter...

Logs kann ich mal schauen...

Grade am Heltepunkt entdeckt:

Address: "client.ServicePoint.Address" hat eine Ausnahme vom Typ "System.NotSupportedException" verursacht. System.Uri {System.NotSupportedException}

base: {"Diese Eigenschaft wird nicht für Protokolle unterstützt, die keinen URI verwenden."} System.SystemException {System.NotSupportedException}

Habe den Timeout mal auf 5000 gestellt... brngt leider nix... und sobald ich credentials festlege sind die defaults automatisch auf false

Bearbeitet von nubbeldupp

  • Autor
Wie funktioniert SMTP mit SSL?

Viele E-Mail-Programme unterstützen die Funktion der sicheren Datenübertragung beim Versand über den SMTP-Server. Als Port-Nummer für die sichere Datenübertragung verwenden Sie bitte 25 oder 465. Stellen Sie in Ihrem E-Mail-Programm an der entsprechenden Stelle die notwendigen Daten ein.

Einige E-Mail-Programme verwenden bei aktiviertem SSL automatisch Port 465.

Zitat aus den GMX FAQs ... also wenn die es dort schon drin stehen haben, dann sollte es doch auch funktionieren oder? xD

Also für FreeUser war es meiner Meinung nach nicht verfügbar...

Ich glaube was du meinst ist der Login. Ja beim Login werden scheinbar die Daten per ssl verschlüsselt. Aber nicht der Mailtransfer.

Ich habe vor geraumer Zeit nen E-Mail Client geschrieben (SMTP, IMAP, POP3).

Und ich bin mir sicher das ich es speziell bei gmx ohne SSL gemacht habe, da es mit bei kostenlosen Accounts (gibt ja noch die Premium Mitgliedschaft) nicht ging.

Und das Programm nutze ich täglich um Mails zu senden und zu empfangen ......

=gmx]klick mich

Ein GMX-Sprecher bestätigte die Angaben gegenüber Golem.de. "Grundsätzlich stimmen die Dinge zum Teil", sagte er. "Derzeit haben wir keinen verschlüsselten Webdienst bei GMX im Freemailbereich."

lg

Gateway

  • Autor

Ok... danke für den Hinweis und zum Glück habe ich das Postfach nur zum testen eingerichtet und es gehen keine "produktiven" Sachen da drüber xD

Aber trotz allem funktioniert es nicht :(

Ich versuche es jetzt schon seit knapp ner Woche das zum laufen zu bringen xD

Versuch das zunächst erstmal an einen lokalen Mailserver zu senden. D.h. trag bei SMTP-Client localhost ein. Damit die Grundfunktionalität getestet werden kann. Alternativ den Traffic mittels Wireshark/Network Analyzer/... einfangen und dir die SMTP-Konversation anschauen.

Bei gmx kann es durchaus weitere Hürden geben, wie z.B. das Blocken von dynamischen IP-Adressen, DNS Reverse Lookup und natürlich die passende Authentifizierungsmethoden.

Also ich hab mir grad selbst was geschrieben zum test und ich seh da kein Problem. Ich konnte die nachricht versenden und bekam diese auch....


    Dim client As New SmtpClient("mail.gmx.net", 25)

        Dim mail As New MailMessage("hans@gmx.de", "mu@hopfen.de")

        mail.Body = "Das ist ein test"

        mail.Subject = "Test"

        client.Credentials = New Net.NetworkCredential("hans@gmx.de", "12345")

        client.Send(mail)

In C Sharp:

SmtpClient client = new SmtpClient("mail.gmx.net", 25);

MailMessage mail = new MailMessage("hans@gmx.de", "mu@hopfen.de");

mail.Body = "Das ist ein test";

mail.Subject = "Test";

client.Credentials = new Net.NetworkCredential("hans@gmx.de", "12345");

client.Send(mail);

lg

Gateway

  • Autor

So... nachdem ich mich gestern den ganzen Tag mit den neuen Azubis rumschlagen durfte, werd ich jetzt auch mal da weiter machen... habs jetzt leider noch nicht geschafft das zu Hause zu testen, werde dies aber heute abend endlich nachholen...

  • Autor
Also ich hab mir grad selbst was geschrieben zum test und ich seh da kein Problem. Ich konnte die nachricht versenden und bekam diese auch....


    Dim client As New SmtpClient("mail.gmx.net", 25)

        Dim mail As New MailMessage("hans@gmx.de", "mu@hopfen.de")

        mail.Body = "Das ist ein test"

        mail.Subject = "Test"

        client.Credentials = New Net.NetworkCredential("hans@gmx.de", "12345")

        client.Send(mail)

In C Sharp:

SmtpClient client = new SmtpClient("mail.gmx.net", 25);

MailMessage mail = new MailMessage("hans@gmx.de", "mu@hopfen.de");

mail.Body = "Das ist ein test";

mail.Subject = "Test";

client.Credentials = new Net.NetworkCredential("hans@gmx.de", "12345");

client.Send(mail);

lg

Gateway

Ich weiß nicht woran es liegt, aber wenn ich dabei das Debugging starte, klinkt sich das Programm bei "client.Send(mail);" einfach aus und steht still... es hängt sich nicht auf, macht aber auch nix mehr xD

mach doch mal eine Fehlerspezifischere Fehlerbehandlung und lass dir dann nochmal die Exeption und die InnerExeption ausgeben:


try {

...Code

}

 catch (System.Net.Mail.SmtpException ex) 

{

Ausgabe der Exeption

}

Allerdings hab ich ja stark die Vermutung das was bei deinem Privatrechner nicht stimmt. (Konfigurationstechnisch)

Denn wie gesagt das oben gepostete script funktioniert bei mir einwandfrei...

(Natürlich must du die logindaten sowie den Empfänger anpassen)

lg

Gateway

Edit: Was verstehst du unter klinkt sich einfach aus?

Bearbeitet von Gateway_man

... xD

Was ist an deinen Aussagen immer so lustig?

Hast du mittlerweile die Kommunikation (soweit die überhaupt stattfindet mitgeschnitten oder andere Tipps befolgt?

  • Autor
Was ist an deinen Aussagen immer so lustig?

Hast du mittlerweile die Kommunikation (soweit die überhaupt stattfindet mitgeschnitten oder andere Tipps befolgt?

1. Geht es dich was an wie oft ich ein "xD" in meine Posts einbaue?!?

Vllt bin ich ja ein fröhlicher Mensch... wenns dir nicht passt brauchste es nicht lesen... sind halt nicht alles schlecht gelaunt Leute hier unterwegs.

2. Sitze ich seit nunmehr 2 Wochen an diesem Programm wobei ich das Mailproblem übersprungen habe um mich nicht unnötig aufzuhalten...

Ich habe via Google diverse Lösungsansätze gefunden und ausprobiert... und keiner hat geholfen...

3. Kann ich auf unnötige Kommentare gut und gerne verzichten...

@Topic

Habe versucht die exception abzufangen... ohne erfolg :(

Wenn ich das Programm als Form starte, hängt es sich einfach auf (Keine Rückmeldung)

Wenn ich es als Konsolenanwedung starte, hängt es sich zwar nicht auf... aber tut auch nix weiter...

Es scheint keine exception zu geben... Deshalb vermute ich auch, das es einfach durch die Firewall bei mir in der Firma geblockt wird...

Folgendes steht dort wenn ich bei client.Send(mail) einen Haltepunkt mache (s. Bild)

"client.ServicePoint.Address" hat eine Ausnahme vom Typ "System.NotSupportedException" verursacht.

post-64614-1443044879284_thumb.jpg

Ich habe halt 0 Ahnung, was mir VS damit sagen will :(

Bearbeitet von nubbeldupp

  • Autor

Bin grade mal auf die Idee gekommen, nen ping/tracert abzusetzen.... bei mir ist ab Firewall schluss... alles was dahinter ist, wird als "Zielhost nicht erreichbar" gemeldet...

Wenn ich das Programm als Form starte, hängt es sich einfach auf (Keine Rückmeldung)

Wenn ich es als Konsolenanwedung starte, hängt es sich zwar nicht auf... aber tut auch nix weiter...

Meine interpretation von "klinkt sich aus" xD

  • Autor

Völlig vergessen mich hier zu melden :(

Bei mir zu Hause klappt es... in der Firma nicht... somit denke ich, das die Firewall schuld ist xD

Danke für die Hilfe... aber ich muss mir jetzt nen anderen Weg suchen um zum gewünschten Ergebniss zu kommen :confused:

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.