Entwickler-Ecke
WinForms - e-mail Senden schlug fehl
KingQuantum - Sa 20.08.11 14:12
Titel: e-mail Senden schlug fehl
ich bin vor kurzem mit C# angefangen
habe daheim Visual C# 2010
in der schule schon nen bisi was gelernt aber nicht viel (kommt aber noch)
nu wil ich daheim etwas programieren
ich wolle einen normalen link zu einer internetseite machen weis aber nicht wie ich die befehle machen muss damit es klappt
in folgendern eintrag mus der link rein:
C#-Quelltext
1: 2: 3: 4:
| private void btnNew_Click(object sender, EventArgs e) {
} |
viele werde über meine "anfängerhaftigkeit" wohl lachen aber ich hoffe das wird sich legen
das ich über "suche" nix gefunden habe liegt daran weil da alles iwi schon ne ebene höher ist
greez King pls Help
Moderiert von
Th69: C#-Tags hinzugefügt
stes - Sa 20.08.11 15:35
[offtopic]lol :D den kannte ich auch noch nicht, muss ich mir merken ^^[/offtopic]
KingQuantum - Sa 20.08.11 15:37
2h try&error
und dan kommt das -.- peinlich
danke für hilfe
jetzt ma was schwereres^^^
man habe 2 textfelder und ein "login" button
wen man die beiden textfelder richtig eingibt und dan "login" klickt muss eine austomatische e-mail an einen admin gehen mit den logindaten
das klingt jetzt etwas komisch aber hat schon seine richtigkeit:)
huuuuuh - Sa 20.08.11 15:41
gerne :)
KingQuantum - Sa 20.08.11 22:29
danke das hat mir schon etwas weiter geholfen aber...
bei folgendem eintrag hat Visual noch ein "kleines" problem
// System.Web.Mail.SmtpMail.SmtpServer is obsolete in 2.0
// System.Net.Mail.SmtpClient is the alternate class for this in 2.0
SmtpClient smtpClient = new
SmtpClient();
Mailaddress message = new
Mailaddress();
die
unterstrichenen angaben werden dabei noch von visual unterstrichen
d.h. ich mus den begriffen noch einen bestimmten wert hinzufügen
ich halte die angaben für variablen die ich hier vorher angeben muss
C#-Quelltext
1: 2: 3: 4:
| private void Form1_Load(object sender, EventArgs e) {
} |
beim arduino konnte man das über
int
name = 0;
int
name2 = 0;
lösen aber das irgentwie anders bei C#
villeicht habt ihr ja eine idee was ich damit machen kann
bzw. wisst was man mit den angaben wirklich machen muss
auch das
//ausgeklammerte
ist ein hinweis aber mit dem begriff [Mail] kann visual nix anfangen -.-
Moderiert von
Th69: C#-Tags hinzugefügt
Th69 - So 21.08.11 10:42
Hallo KingQuantum,
du mußt dazu auch den Namensbereich angeben, entweder direkt vor dem Klassennamen oder am Anfang der Datei mit der "using"-Direktive:
C#-Quelltext
1:
| using System.Net.Mail; |
Alternativ (wobei ich nicht weiß, ob das auch die Express-Version unterstützt) kannst du auch im VS-Editor per Kontextmenü den obigen Code hinzufügen (lassen).
Bei anderen externen Klassen mußt du evtl. auch noch die Verweise auf die entsprechenden Assemblies (DLLs) einbinden. Im Projekt-Explorer auf Verweise per Kontextmenü "Verweis hinzufügen" wählen und aus der ".NET Komponenten"-Liste die entsprechende Assembly auswählen.
In der MSDN-Hilfe ist zu jeder Klasse sowohl der Namensbereich (namespace) als auch die Assembly angegeben.
P.S: Es wäre schön, wenn du demnächst deine Beiträge ein bißchen besser formatieren würdest und vor dem Absenden noch mal auf grobe Fehler durchgehst, danke
stes - So 21.08.11 11:31
Th69 hat folgendes geschrieben : |
Hallo KingQuantum,
Alternativ (wobei ich nicht weiß, ob das auch die Express-Version unterstützt) kannst du auch im VS-Editor per Kontextmenü den obigen Code hinzufügen (lassen).
|
Ja das geht auch in der Express-Version (sofern die richtige dll schon eingebunden ist). Rechtsklick -> Auflösen... -> fehlende using-Direktiven einbinden (oder so ähnlich ^^)
Gruß
stes
KingQuantum - Di 23.08.11 21:32
Edit: hat sich erledigt
danke an alle die geholfen haben
Edit2: fehler beim senden der mail -.-
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35:
| SmtpClient smtpClient = new SmtpClient(); MailMessage message = new MailMessage();
try { MailAddress fromAddress = new MailAddress("example@hotmail.de", "example");
your server smtpClient.Host = "smtp.mail.hotmail.de"; smtpClient.Port = 547; message.From = fromAddress;
message.To.Add("example@t-online.de"); message.Subject = "AP-Laden";
message.IsBodyHtml = false;
message.Body = txtACC.Text + txtCHAR.Text + txtINFO.Text; smtpClient.Send(message);
lblTextOben.Text = "Email successfully sent."; } catch (Exception ex) { lblTextOben.Text = "Send Email Failed." + ex.Message; } |
jemand ne idee warum es nicht geht?
KingQuantum - Fr 26.08.11 10:35
kan man ähnliches auch zur nor in html Programmieren
bzw. label buttons und texboxen in HTML vorbereiten und in C# programmieren?
so was man alles in eine HP oder in ein Forum integrieren kan?
achja und das e-mailsenden hab ich immernoch nicht hinbekommen....(leider)
wäre nett wen jemand hilft
bakachan - Mo 29.08.11 13:53
KingQuantum hat folgendes geschrieben : |
Edit2: fehler beim senden der mail -.-
jemand ne idee warum es nicht geht? |
Welche Fehlermeldung kommt denn? (und wo?)
KingQuantum - Mo 29.08.11 14:34
Smtp Exception wurde nicht behantdelt. / Fehler beim Senden von Mail.
könnte der fehler sein
im lblText wird "Fehler beim senden von Mail." angezeigt
aber smtp Excetion ist schon in Catch behandelt worden
der text "Smtp Exception wurde nicht behantdelt." wird auch nicht angezeigt aber andere hatten den fehler schon
im Programmcode selbst wird nix als fehler angezeig,
ich denke ich hab einen befehl vergessen
aber nur welchen?
soweit ich weiß muss der absender auch ein PW angeben, in der programmierung die ich angepasst habe ist aber keinerlei PW abfrage
hier wird beim sender nur nach e-mail und name gefragt
für eine PW-abfrage fehlt mir der befehl
sollte ich evtl. mal den projekt ordner hochladen? dan können andere selbst versuchen es weiter zu entickeln...(nur ne idee)
bakachan - Mo 29.08.11 14:45
KingQuantum hat folgendes geschrieben : |
Smtp Exception wurde nicht behantdelt. / Fehler beim Senden von Mail.
könnte der fehler sein |
"Könnte" bringt uns hier nicht weiter.
Ich würde empfehlen den Try/Catch Block während der Fehlersuche zu entfernen. Dadurch siehst du genau wo und welcher Fehler auftritt.
Ich nehme mal an du hast im hier geposteten Code die e-Mail-Adresse und das Passwort durch die Beispieltexte ersetzt.
C#-Quelltext
1:
| MailAddress fromAddress = new MailAddress("example@hotmail.de", "example"); |
Bist du dir sicher das in deinem Code die richtigen Daten stehen?
KingQuantum - Mo 29.08.11 15:09
dort hab ich normalerweise meine hotmailadresse
alsm empfänger
eaxample steht für name nicht für passwort aber ich hab es auch schon mit dem passenden paswort probiert
das funktionierte leider nicht
hab den richtigen postausgangsserver für hotmail gefunden
smtp.live.com
muss ich dafür den befehl
smtp.Host = "smtp.mail.hotmail.de";
gengen
C#-Quelltext
1:
| smtp.Host = "smtp.live.com"; |
laut internet ist der richtige port 587
fehler besteht immernoch
oder muss ich statt smtp.Host eine andere eingabe machen?
Edit: hab den befehl Try entfernt sowie Catch nun bekomme ich den fehler:
"Für den SMTP-Server ist eine sichere Verbindung erforderlich, oder der Client wurde nicht authentifiziert. Die Serverantwort war: 5.7.0 Must issue a STARTTLS command first"
bakachan - Mo 29.08.11 15:26
Was mir grade noch auffällt:
Du hast keine Anmeldedaten bereitgestellt.
Dein smtpClient braucht die Credentials mit Benutzername und Passwort (müsste direkt eine Property "Credentials" drann sein)
KingQuantum - Mo 29.08.11 15:32
funktioniert das Programm ohne try catch?
wen ja was muss ich statt "catch (Exception ex)" eingeben?
und die credentials versuch ich mich ma zu kümmern (danke)
bakachan - Mo 29.08.11 15:42
Natürlich funktioniert das Programm ohne Try/Catch.
Try/Catch ist nur dazu da auftretende Fehler abzufangen und zu behandeln. Dabei sollte man sich aber auf möglichste kleine Bereiche und spezielle Exceptiontypen beschränken.
Bei deinem Code ist es allerdings recht sinnvoll bestimmte Fehlermeldungen abzufangen und zu behandeln z.B. wenn der Server nicht reagiert oder keine Verbindung aufgebaut werden konnte.
Das kannst du aber am Ende machen wenn der Rest funktioniert. (vorher behindert es meistens die Fehlersuche)
KingQuantum - Mo 29.08.11 15:51
gut dan hab ich hier schonmal den nächsten fehler^^
hab mir die Programmierung aus der Libary geholt (das geht am einfachsten)
nun hab ich den fehler:
Fehler 1
Der Name "CredentialCache" ist im aktuellen Kontext nicht vorhanden.
-.-
bakachan - Mo 29.08.11 15:59
Ohne die zugehörige Codezeile sagt das nicht viel aus.
Und wie kommst du eigentlich auf CredentialCache?
C#-Quelltext
1: 2:
| System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient(); client.Credentials = new System.Net.NetworkCredential("Benutzername", "Passwort"); |
So in etwa müsste das aussehen.
KingQuantum - Di 30.08.11 13:01
ich hab jetzt das berühmte authentifizierungs-Problem -.-
Für den SMTP-Server ist eine sichere Verbindung erforderlich, oder der Client wurde nicht authentifiziert. Die Serverantwort war: 5.7.0 Must issue a STARTTLS command first
ich glaube das ist auch nen bischen überladen:
C#-Quelltext
1: 2: 3: 4: 5:
| System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient(); client.Credentials = new System.Net.NetworkCredential("Example@hotmail.de", "ExamplePW"); SmtpClient smtpClient = new SmtpClient(); MailMessage message = new MailMessage(); MailAddress fromAddress = new MailAddress("Example@hotmail.de", "exampleName"); |
die letze Zeile kan ich auch entfernen aber dan muss auch der Eintrag raus:
message.From = fromAddress; oder dort Sender adresse nochmal eingeben
bakachan - Di 30.08.11 13:34
Jetzt stellt sich mir die Frage warum du 2 SmtpClients erstellst. Und ich wette du verwendest nur einen davon weiter (den ohne die Credentials).
Du solltest langsam mitkriegen das einfaches rauskopieren von Codeschnipseln dich nicht weiter bringt (ist ja nicht das erste mal). Du musst das ganze schon an deine eigene Lösung anpassen und dafür erstmal verstehen was da eigentlich steht.
KingQuantum - Di 30.08.11 16:02
hmm ich muss gestehen strg-C und strg-V war wohl nicht sonne gute idee...
hatte beim programm gedacht das das thema e-mail in 5 min erledigt ist
und dan den rest lange schreiben...
und nun hab ich fast alles andere fertig
nurnoch nein paar "kleinigkeiten"
Horschdware - Di 30.08.11 16:06
KingQuantum hat folgendes geschrieben : |
| ich muss gestehen strg-C und strg-V war wohl nicht sonne gute idee... |
Eine wundervolle Einsicht :zustimm:
KingQuantum - Mi 31.08.11 15:36
Jetzt hab ich ein Problem im namespace:
| Zitat: |
Fehler 1 Keine Überladung für "btn10E12K_Click" stimmt mit dem Delegaten "System.EventHandler" überein. F:\C-Sharp\oO\AP-LoaderV2.1\APLoaderV2.1.2.0.Designer.cs 159 37 AP-LoaderV2.1
|
ich weiß das ich den butten einmal nutze um eine auswahl zu treffen und danach soll dieser eine andere funktion übernehmen
und zwar das e-mail senden
ich den button gewählt wei er eigentlich eine passende Position hat, sollte ich einen neuen button erstellen?
im namespace mag ich nicht so gerne etwas verändern, da man mir geraten hat das das lieber nur fortgeschrittene machen sollen
ich könnte ein teil des codes Posten aber nur welchen? vom programm oder vom namespace?
bakachan - Mi 31.08.11 15:53
Das Problem hat nichts mit einem Namespace zu tun sondern damit das deine Funktion "btn10E12K_Click" nicht die Anforderungen des EventHandlers erfüllt.
Der normale EventHandler setzt eine Funktion vorraus die als Rückgabetyp void hat und 2 Parameter, der erste vom Typ Object der zweite vom Typ EventArgs, hat.
stes - Mi 31.08.11 22:09
Hallo,
wenn du den Fehler mittlerweile behoben hast sehe meinen Post einfach als Zusatzinformation an.
bakachan hat folgendes geschrieben : |
Du solltest langsam mitkriegen das einfaches rauskopieren von Codeschnipseln dich nicht weiter bringt (ist ja nicht das erste mal). Du musst das ganze schon an deine eigene Lösung anpassen und dafür erstmal verstehen was da eigentlich steht. |
Ganz meine Meinung.
KingQuantum hat folgendes geschrieben : |
hatte beim programm gedacht das das thema e-mail in 5 min erledigt ist
und dan den rest lange schreiben...
|
Wenn du keinerlei Erfahrung damit hast sind 5 min wohl nur der Fall wenn du einfach ein bestehendes Codebeispiel anpasst, aber selbst ein solches scheinst du nicht gesucht zu haben...
Mit ein wenig mehr Eigeninitiative findet man Seiten auf denen das ganze gut erklärt wird (mit auf die eigenen Zwecke anpassbaren Codebeispielen).
Gute Tuts bietet u.a. codeplanet.eu, siehe zum aktuellen Thema
Codeplanet Tutorial zu TCP/Socketprogrammierung, Kapitel "EMails versenden" [
http://www.codeplanet.eu/tutorials/csharp/4-tcp-ip-socket-programmierung-in-csharp.html?start=6]
Ein bisschen Recherche kommt auch dir selbst zugute, es ist wohl effizienter und weniger zeitintensiv ein paar gute Artikel zu lesen als jede Fehlermeldung zu posten und deren Ursache von anderen (denen die genauen Informationen z.T. sogar noch fehlen) klären zu lassen.
Ich hoffe der o.g. Artikel bringt dich weiter ;)
Gruß
stes
KingQuantum - Fr 02.09.11 13:01
neue hürde neues Probem
aus der liste der SMTP und POP3 server kennt man z.B. diesen satz
Postausgangsserver: smtp.live.com (STARTTLS; Port 587)
es ist eine einfache Info oder?
im Program sind jetzt an verschiedenen positionen folgende befehle Eingearbeitet:
C#-Quelltext
1: 2:
| int port = 587; string strSmtpServer = "smtp.live.com"; |
eigentlich ist dann schon alles getan oder?
aber nein ist es nicht.
dank try catch hat catchy mit ma nen kleinen (nicht auf die winForm seite passenden) fehlercode ausgegeben
die Kurzform lautet soviel wie: STRATTLS nirgens gefunden.
Edit habs gefunden danke Prog Läuft :)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!