C#: *.txt in einen String

Gast #2672296
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?
1
      if (args.Length==1)
2
      {
3
        System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
4

5
        System.Net.NetworkCredential cred = new System.Net.NetworkCredential(account, pw);
6
        
7
        mail.To.Add(an);
8
        mail.Subject = betreff;
9
        
10
        mail.From = new System.Net.Mail.MailAddress(von, von_name);
11
        mail.IsBodyHtml = true;
12
        mail.Body = args[0];
13
        mail.Attachments.Add(new System.Net.Mail.Attachment("C:\\TEMP\\mailfile.txt"));
14
        System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("smtp.gmail.com");
15
        smtp.UseDefaultCredentials = false;
16
        smtp.EnableSsl = true;
17
        smtp.Credentials = cred;
18
        smtp.Port = 587;
19
        smtp.Send(mail);
20
      }
Gast #2672315
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.
#2672328
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.
#2672350
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.
Gast #2672360
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.
Gast #2672464
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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren