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


von Hubert (Gast)


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
      }

von Sharping (Gast)


Lesenswert?

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

von Udo S. (urschmitt)


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?

von Hubert (Gast)


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.

von Udo S. (urschmitt)


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.

von Hubert (Gast)


Lesenswert?

Udo Schmitt schrieb:
> Was erwartet mail.body für einen Datentyp

Das müsste ein string sein.

von Udo S. (urschmitt)


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.

von Hubert (Gast)


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.

von junge ... (Gast)


Lesenswert?

schau dir mal den streamreader an

von Bernd H. (geeky)


Lesenswert?

1
string datei_inhalt=File.ReadAllText("dateipfad");
ggf. noch Encoding angeben ;D

von Hubert (Gast)


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?

von Hubert (Gast)


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!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.