Autor Beitrag
Old5chool
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: So 29.05.16 06:52 
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
ausblenden volle Höhe 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");                                     //Absender 
                    mail.To.Add("Empfänger");                                                    //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;
                    //mail.IsBodyHtml = true; //Nur wenn Body HTML Quellcode ist  

                    SmtpClient client = new SmtpClient("smtp.web.de"25); //SMTP Server von Hotmail und Outlook. 

                    try
                    {
                        client.Credentials = new System.Net.NetworkCredential("Benutzerdaten""Passwort");//Anmeldedaten für den SMTP Server 

                        client.EnableSsl = true//Die meisten Anbieter verlangen eine SSL-Verschlüsselung 

                        client.Send(mail); //Senden 

                        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)
            {
                //do something else
            }
        }


ich habe die einstellung in einer xml so abgespeichert
ausblenden 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 user profile iconTh69: C#- durch XML-Tags ersetzt
Moderiert von user profile iconTh69: Titel geändert (Großschreibung)
Moderiert von user profile iconTh69: Beitragsformatierung überarbeitet (unnötige Leerzeilen entfernt).
Talemantros
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 444
Erhaltene Danke: 2

Win7 Proff 64bit
C# (VS2013)
BeitragVerfasst: So 29.05.16 09:29 
Hi Old5School,
Theoretisch müsste es so klappen:


ausblenden 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ß
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: So 29.05.16 09:39 
Hallo und :welcome:

bei XML ist es besser, diese Daten deserialisieren zu lassen (anstatt manuell die Daten zu lesen).
Dazu schau dir mal das Tutorial Mit XmlSerializer Objekte als XML speichern und laden an, d.h. du erstellst dir eine Klasse, welche die Daten (der XML-Struktur) beschreibt und wendest darauf dann die Deserialize-Methode an und kannst anschließend auf die Eigenschaften zugreifen.
Old5chool Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: 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
ausblenden 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
ausblenden 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
ausblenden 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 user profile iconTh69: C#- durch Code-Tags (bei der Fehlermeldung) ersetzt
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: So 29.05.16 12:55 
Tja, so wird es schwer mit dem Programmieren (lernen).
Lernst du denn anhand eines Buches, denn alleine durch Kopieren von Code aus dem Internet wirst du nicht sehr weit kommen?
Die Grundlagen der C#-Programmierung (sowie der Umgang mit dem Debugger) müssen einfach sitzen, bevor man GUI-Programme entwickelt.

Hier noch zwei hilfreiche Links für dich (aus dem anderen Forum):
[FAQ] NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt
[Artikel] Debugger: Wie verwende ich den von Visual Studio?
Old5chool Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4701
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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.