www.mikrocontroller.net

Forum: PC-Programmierung C#: *.txt in einen String


Important announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Hubert (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hallo,
ich benötige ein Programm, welches mir Maschinendaten per E-Mail sendet. 
Bis jetzt kann das Programm nur den String, der beim Aufruf übergeben 
wird, als Text senden und eine Datei anhängen.

Jetzt soll aber zusätzlich (unten angehängt) der Inhalt der *.txt-Datei 
ausgelesen werden und in den Mailtext eingefügt werden. Wie kann man das 
in C# machen?
      if (args.Length==1)
      {
        System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();

        System.Net.NetworkCredential cred = new System.Net.NetworkCredential(account, pw);
        
        mail.To.Add(an);
        mail.Subject = betreff;
        
        mail.From = new System.Net.Mail.MailAddress(von, von_name);
        mail.IsBodyHtml = true;
        mail.Body = args[0];
        mail.Attachments.Add(new System.Net.Mail.Attachment("C:\\TEMP\\mailfile.txt"));
        System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("smtp.gmail.com");
        smtp.UseDefaultCredentials = false;
        smtp.EnableSsl = true;
        smtp.Credentials = cred;
        smtp.Port = 587;
        smtp.Send(mail);
      }

Autor: Sharping (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Du hast doch eigentlich alles beisammen? Warum hängst du den Inhalt der 
Datei nicht einfach an "mail.Body" an?

Autor: Udo Schmitt (urschmitt)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Indem man die Datei öffnet in einen Puffer einliest und den dann in den 
Mailtext einfügt.
Wo ist das Problem, das ist eine ganz normale Programmieraufgabe, wenn 
man die ersten 5 Kapitel eines C# Buchs durchgearbeitet hat.

Die Frage ist, willst du programmieren (lernen), oder suchst du jemanden 
der dir ein Programm schreibt?

Autor: Hubert (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Sharping schrieb:
> Du hast doch eigentlich alles beisammen? Warum hängst du den Inhalt der
> Datei nicht einfach an "mail.Body" an?

Genau die Frage ist nur, ob ich den Inhalt erst in einen Puffer legen 
muss, oder nicht. Ich programmiere schon lange in C, aber C# ist für 
mich noch Neuland. In C würde ich mir eine Schleife basteln, die bis zum 
Ende der Datei jeweils n Mal bis zum Ende der Zeile einliest, und den 
gelesenen String mit sprintf zusammenfügt. Aber ich glaube, das geht 
noch einfacher.

Autor: Udo Schmitt (urschmitt)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Was erwartet mail.body für einen Datentyp? Ich habe noch nichts mit c# 
gemacht vermute aber mal eine Instanz eines Klasse String. Und diese 
Stringklasse hat bestimmt eine dynamische Längenverwaltung und Methoden 
zum appenden (anhängen) von Text.
Vieleicht gibt es auch einen StringBuffer wie im Java.
Die Klassen musst du dir suchen und anschauen.
Genau wie die Reader und Writer Klassen zum lesen und Schreiben von 
Dateien.

Autor: Hubert (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Udo Schmitt schrieb:
> Was erwartet mail.body für einen Datentyp

Das müsste ein string sein.

Autor: Udo Schmitt (urschmitt)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hubert schrieb:
> müsste

Konjunktiv heisst nicht wissen!
Glauben hat beim programmieren nichts verloren.
ist es ein char[] oder eine Instanz einer Klasse "String"

Schau es dir an und schau dir dann die Klassen an. Anders wirst du c# 
nicht lernen.
Die Vorteile der modernen OO Sprachen liegen in den mächtigen 
Klassenbibliotheken, die dir so viel Arbeit abnehmen.
Die sonstige Programmierung ist immer noch wie in C, nur daß du für 
viele Probleme schon fertige Methoden und Klassen hast.

Autor: Hubert (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Udo Schmitt schrieb:
> ist es ein char[] oder eine Instanz einer Klasse "String"
>
> Schau es dir an und schau dir dann die Klassen an.

>>public string Body { get; set; }
>>Typ: System.String

Es ist also ein String.

Das mit den vielen Klassenbibliotheken weiß ich ja, deshalb suche ich ja 
nach einer schönen Lösung, die mir an den Body den Inhald der TXT-Datei 
hängt.

Autor: junge ... (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
schau dir mal den streamreader an

Autor: Bernd H. (geeky)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
string datei_inhalt=File.ReadAllText("dateipfad");
ggf. noch Encoding angeben ;D

Autor: Hubert (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Bernd H. schrieb:
> string datei_inhalt=File.ReadAllText("dateipfad");ggf. noch Encoding angeben ;D

Prima, damit und mit der msdn-Hilfe habe ich etwas hinbekommen. Bis 
dahin habe ich es die ganze Zeit mit StreamReader und ReadBlock 
probiert. Hab's aber nicht hinbekommen. Wäre das für meinen Fall so oder 
so die falsche Funktion?

Hat Encoding auch etwas damit zu tun, dass das der Befehl Zeilenumbrüche 
in der Textdatei ignoriert?

Autor: Hubert (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hubert schrieb:
> at Encoding auch etwas damit zu tun, dass das der Befehl Zeilenumbrüche
> in der Textdatei ignoriert?

Fehler selber bemerkt: Das liegt am HTML-Format. Wenn man dies 
ausschaltet, geht es. Ist ja auch logisch :-D

Eiun großes Dankeschön!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net