Zum Inhalt springen

C#: SMTP Mail-Versand


nubbeldupp

Empfohlene Beiträge

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
Link zu diesem Kommentar
Auf anderen Seiten teilen

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
Link zu diesem Kommentar
Auf anderen Seiten teilen

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;

Link zu diesem Kommentar
Auf anderen Seiten teilen

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
Link zu diesem Kommentar
Auf anderen Seiten teilen

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
Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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
Link zu diesem Kommentar
Auf anderen Seiten teilen

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
Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...