Entwickler-Ecke
WinForms - Werte aus XML lesen und verwenden für E-Mail
Old5chool - So 29.05.16 06:52
Titel: Werte aus XML lesen und verwenden für E-Mail
hallo ich bin neu hier und lerne gerade das programmiren.
ich habe folgenden code gefunden um e-mails zu verschicken
und würde gerne alle einstellung die man vor nehmen kann aus der xml laden,
nur wie habe ich noch nicht herraus gefunden
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: 36:
| private void Send_Click_1(object sender, EventArgs e) #region E-mail send btn { DialogResult mailsend = MessageBox.Show("Wirklich Senden???", "Senden", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (mailsend == DialogResult.Yes && comptd.Text != "" && comschicht.Text != "" && comtyp.Text != "" && commodel.Text != "") { MailMessage mail = new MailMessage(); mail.From = new MailAddress("Absender"); mail.To.Add("Empfänger"); mail.Subject = "Produktion" + " " + Date.Text + " " + Time.Text + " " + comptd.Text + " " + comschicht.Text; mail.Body = "Produktion" + Environment.NewLine + "Datum:" + Date.Text + " / " + Time.Text + Environment.NewLine + comptd.Text + Environment.NewLine + comschicht.Text + Environment.NewLine + comtyp.Text + Environment.NewLine + commodel.Text + Environment.NewLine + "Fehler Liste" + Environment.NewLine + "Naht C:" + ct1.Text + Environment.NewLine + "Naht D:" + ct2.Text + Environment.NewLine + "Naht E1/E2:" + ct3.Text + Environment.NewLine + "Naht I:" + ct4.Text + Environment.NewLine + "Naht B:" + ct5.Text + Environment.NewLine + "Teile Ohne Nacharbeit:" + ct6.Text; SmtpClient client = new SmtpClient("smtp.web.de", 25); try { client.Credentials = new System.Net.NetworkCredential("Benutzerdaten", "Passwort"); client.EnableSsl = true; client.Send(mail); MessageBox.Show("E-Mail wurde Erfolgreich versendet"); } catch (Exception ex) { MessageBox.Show("Fehler beim Senden der E-Mail \n\n{0}", ex.Message); } } else if (mailsend == DialogResult.No) { } } |
ich habe die einstellung in einer xml so abgespeichert
XML-Daten
1: 2: 3: 4: 5: 6: 7: 8: 9:
| <?xml version="1.0" encoding="utf-8"?> <Settings> <Empfänger>Empfänger</Empfänger> <benutzerdaten>benutzerdaten</benutzerdaten> <Absender>Absender</Absender> <passwort>passwort</passwort> <smpt>smpt</smpt> <port>port</port> </Settings> |
nur ich bekomme es nicht hin schon seid einer woche bin ich nun am googlen aber noch nix gefunden
ps der code wurde schon ein bissschen bearbeitet von mir jeden falls der inhalt der mail und der betreff
vielen dank für eure hilfe
mfg Old5chool
Moderiert von
Th69: C#- durch XML-Tags ersetzt
Moderiert von
Th69: Titel geändert (Großschreibung)
Moderiert von
Th69: Beitragsformatierung überarbeitet (unnötige Leerzeilen entfernt).
Talemantros - So 29.05.16 09:29
Hi Old5School,
Theoretisch müsste es so klappen:
C#-Quelltext
1: 2: 3: 4: 5:
| XmlDocument doc = new XmlDocument(); doc.Load("Pfad zur xml");
XmlNode node = doc.SelectSingleNode("/settings/port"); string port = node.FirstChild.Value; |
Gruß
Old5chool - So 29.05.16 09:55
ich habe es versucht vor den mail code zu hängen leider ohne erfolg so fern ich auf senden klick haut er mir einen fehler raus
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| XmlDocument doc = new XmlDocument(); doc.Load("Settings.xml");
XmlNode node = doc.SelectSingleNode("/settings/Empfänger"); string Empfänger = node.FirstChild.Value; XmlNode node1 = doc.SelectSingleNode("/settings/Passwort"); string passwort = node1.FirstChild.Value; XmlNode node2 = doc.SelectSingleNode("/settings/Absender"); string Absender = node2.FirstChild.Value; XmlNode node3 = doc.SelectSingleNode("/settings/benutzerdaten"); string benutzerdaten = node3.FirstChild.Value; |
und das sagt er mir
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:
| System.NullReferenceException wurde nicht behandelt. HResult=-2147467261 Message=Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt. Source=Fehlerboard StackTrace: bei Fehlerboard.Fehlerboard.Send_Click_1(Object sender, EventArgs e) in C:\Users\Old5c\OneDrive\Dokumente\Fehlerboard\Fehlerboard\Fehlerboard\Form1.cs:Zeile 307. bei System.Windows.Forms.Control.OnClick(EventArgs e) bei System.Windows.Forms.Button.OnClick(EventArgs e) bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) bei System.Windows.Forms.Control.WndProc(Message& m) bei System.Windows.Forms.ButtonBase.WndProc(Message& m) bei System.Windows.Forms.Button.WndProc(Message& m) bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) bei System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg) bei System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData) bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context) bei Fehlerboard.Program.Main() in C:\Users\Old5c\OneDrive\Dokumente\Fehlerboard\Fehlerboard\Fehlerboard\Program.cs:Zeile 18. bei System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) bei System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() bei System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) bei System.Threading.ThreadHelper.ThreadStart() InnerException: |
und er makiert mir immer die zeile
C#-Quelltext
1:
| string Empfänger = node.FirstChild.Value; |
und dan steht da noch {"Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."}
was ist das ???
danke für eure hilfe
Moderiert von
Th69: C#- durch Code-Tags (bei der Fehlermeldung) ersetzt
Old5chool - So 29.05.16 16:22
Danke für die Antworten!!!
ja ich habe ein Buch (Einstieg in c# mit Visual Studio 2015) und natürlich codes aus dem netz,
aber ich befasse mich mit den codes auch also so das ich weiss wie sie fubktioniren und was sie halt tuen um drauß zu lernen.
Ralf Jansen - Mo 30.05.16 13:47
Zitat: |
und dan steht da noch {"Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."}
was ist das ??? |
Du benutzt etwas das nicht initialisiert (null) ist. Also entweder node ist null oder FirstChild ist null. Rausbekommen solltest du das durch debuggen. Debuggen ist eine esentielle Fähigkeit die man sich frühzeitig aneignen sollte. Wenn du das noch nicht in deinem Fähigkeiten-Werkzeugkasten hast wäre es jetzt Zeit die zu trainieren. Sonst bleibt dir an viel zu vielen Stellen nur raten. Zum ~sehen~ solcher Probleme braucht man Erfahrung. Am Anfang also eher auf debuggen setzen.
Du solltest dich aber eh besser mit dem XmlSerializer beschäftigen. TH69 hat da ja freundlichweise was verlinkt. Das ist wesentlich einfacher und von der Entwicklungseite gesehen fast immer efizienter als sich mit XmlDocument rumzuschlagen.
Allgemeiner Hinweis: Xml ist Case sensitiv.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!