Autor Beitrag
estrella1410
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46



BeitragVerfasst: Mo 10.12.07 10:07 
Hallo,

ich habe ein Programm geschrieben was e-mails versendet..klappt soweit ganz gut alles..nur dass ich den Inhalt, welchen ich aus einer Listbox auslese, nicht komplett in meiner Variable body, die in die E-mail reingeschriebn wird, speichern kann...es wird ja zeile für zeile ausgelesen und demnach aber immer nur die letzte zeile gespeichert...


ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
       
            do
            {
                dummy2 = sr_log2.ReadLine();
                lstBody.Items.Add(dummy2);
                dummy2 = body;
            } 
            while (sr_log2.EndOfStream == false);


MailMessage dieMail = new MailMessage("abc@xyz.de", dummy, subject,body());



kann mir jemand da mal nen tipp geben?

Gruß,

Jessy

Moderiert von user profile iconUGrohne: Code- durch C#-Tags ersetzt
golgol
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 58

Win XP Prof. / Linux
C# (VS 2005)
BeitragVerfasst: Mo 10.12.07 10:41 
Hi,

du hast schon recht, dass du die immer nur Zeilenweise auslesen kannst. Du müsstest den String (ganz allgemein) mit '+=' an den existierenden anhängen (und nicht mit '=', womit du ihn einfach neu zuweist). Davon abgesehen würde ich dir davon abraten das mit Strings zu machen, da die relativ langsam sind. Verwende lieber einen StringBuilder für sowas.
Achja: Wieso schreibtst du den Text in einer ListBox? Wäre da eine multiline-TextBox nicht geschickter? (Kenne dein Vorgehen dabei ja nicht).
estrella1410 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46



BeitragVerfasst: Mo 10.12.07 11:26 
Also ersteinmal danke für die antwort....

habe das mit dem += mal ungefähr so umgesetzt und es klappt jetzt...DANKE!

desweiteren nehme ich die lstbox weil es das was du erwähnt hast bei mir nicht gibt, hatte sowas gesucht aber nicht gefunden...

mit dem Stringbuilder habe ich nie zuvor gearbeitet...wie würde das denn aussehn?

Gruß,

Jessy
golgol
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 58

Win XP Prof. / Linux
C# (VS 2005)
BeitragVerfasst: Mo 10.12.07 11:39 
user profile iconestrella1410 hat folgendes geschrieben:
also das mit dem += läuft nicht da kommt die fehlermeldung "body" sei nicht zugewiesen ...hm...


Also ich kenne ja nur deinen Quellcodeausschnitt, aber wenn ich das richtig verstanden habe, dann willst du doch den Inhalt der ListBox-Zeilen in der Varialben "body" speichern oder? Wenn dem so ist, dann musst du die Variable natürlich im Vorfeld deklarieren und initailisieren. Des weiteren hättest du dann nen kleinen Fehler im Quellcode: In Zeile 6 müsste es heißen:
ausblenden C#-Quelltext
1:
body += dummy2;					

(hier gleich mit dem '+=') Ansonsten würde in der Variablen "body" nie was ankommen.


user profile iconestrella1410 hat folgendes geschrieben:
desweiteren nehme ich die lstbox weil es das was du erwähnt hast bei mir nicht gibt, hatte sowas gesucht aber nicht gefunden...


Du musst eine "normale" TextBox nehmen und dort in den Properties Multiline=true setzten. Das kannst du direkt über VS machen. Alternativ im Quellcode ginge das mit:
ausblenden C#-Quelltext
1:
2:
TextBox tx = new TextBox();
tx.Multiline = true;



user profile iconestrella1410 hat folgendes geschrieben:
jez habe ich eine frage ...weil das mit dem "+=" ja nicht klappt kannst du mir bissl was zum "Stringbuilder" sagen? Wie verwendet man diese...habe zuvor nicht damit gearbeitet...!


Ein StringBuilder kommt ganz allgemein immer dann zum Einsatz, wenn oft (und vorher in nicht genau definierter Anzahl) eine Zeichenkette an eine andere Zeichenkette angehängt werden soll. Zu genauren Funktionsweise solltest du dir am besten die MSDN-Sachen durchlesen (inkl. Beispiel):

msdn2.microsoft.com/...gbuilder(VS.80).aspx
estrella1410 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46



BeitragVerfasst: Mo 10.12.07 11:45 
Danke für die Tipps!!

Jez habe ich noch eine kleine Frage ...

wie kann ich den Textinhalt in der Variable "body" in html umwandeln damit das alles so "hübsch" angezeigt wird...

myMail.BodyFormat = MailFormat.Html;<< ich weis so gibg es bei System.Web.Mail....das ist ja aber veraltet und ich nutze nun System.Net.Mail .. dort geht dies wohl irgendwie anders aber ich komme nicht drauf wie ich das ändern kann...Gruß Jessy
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mo 10.12.07 12:38 
Nach meiner Auffassung ist die SDK-Doku das wichtigste Nachschlagewerk. Wenn Du mit System.Net.Mail und MailMessage arbeitest, dann könntest Du dort auch selbst die MailMessage.BodyEncoding-Eigenschaft finden. Jürgen
estrella1410 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46



BeitragVerfasst: Mo 10.12.07 13:40 
also ich habe mal meinen code hier reingepackt...das problem liegt in der variablen "body" da hilft mir dein hinweis nicht weiter!

ich kriege es nicht hin dass der den inhalt der lstbox so übernimmt wie er is also MIT leerzeilen sondern er hängt alles aneinander ...das is mein problem ..ich weis aba nicht wie ich "enter" einbauen soll...habe nun einiges versucht..über ASCII 10, 13 bis hinzu \u2305 wie unten steht....




ausblenden volle Höhe 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:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using email.Properties;
using System.Net.Mail;
using System.Net.Mime;

namespace email
{
    public partial class Form1 : Form
    {
        string name, dummy, dummy2, emailinhalt;


        public Form1()
        {


            InitializeComponent();

        }
        private void btnAnhang_Click(object sender, EventArgs e)
        {
            //nur PDF anzeigen; PDF Datei auswählen;
            name = Settings.Default.name;
            StreamReader sr_log = new StreamReader(name);


            dummy = sr_log.ReadLine();
            txtbcc.Text = (dummy + ";");


            openFile.Filter = "nurPDF|*.pdf";

            if (openFile.ShowDialog() == DialogResult.OK)
            {
                lblanhang.Text = ("Folgende Datei wurde angehängt: " + openFile.FileName);
                lblanhang.Visible = true;
            }
        }

        private void btnSenden_Click_1(object sender, EventArgs e)
        {

            emailinhalt = Settings.Default.emailinhalt;
            
            StreamReader sr_log2 = new StreamReader(emailinhalt);
            string subject = txtbetreff.Text;
            string body = dummy2 ;

//            char[] crlf = { (char)13, (char)(10) };



            do
            {
                dummy2 = sr_log2.ReadLine();

                //if (dummy2 == "")
                //{
                //    dummy2 = Environment.NewLine;
                //}
                lstBody.Items.Add(dummy2);
                body = body + (dummy2 +(char)'\u2305');
            }
            while (sr_log2.EndOfStream == false);

                MailMessage dieMail = new MailMessage("xya@web.de", dummy, subject, body);
                body = dieMail.Body;       

                dieMail.Attachments.Add(new Attachment(openFile.FileName.ToString()));
                //dieMail.IsBodyHtml =true;
                //string someArrows = new string(new char[] { '\u2190', '\u2191', '\u2192' ,'\u2305'});
                //dieMail.Body += Environment.NewLine + someArrows;
                //dieMail.BodyEncoding = System.Text.Encoding.UTF8;

                SmtpClient Server = new SmtpClient("abc@def.loc");
                Server.Send(dieMail);

        }
    }
}
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 10.12.07 13:42 
Hallo!

Da die ursprüngliche Frage erledigt ist, mache ich hier mal zu. Bitte erstelle für eine neue Frage auch einen neuen Thread. Danke! :-)

Grüße
Christian

P.S.: Bitte nutze für C#-Code die cs-Tags anstatt der code-Tags.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Dieses Thema ist gesperrt, Du kannst keine Beiträge editieren oder beantworten.

Das Thema wurde von einem Team-Mitglied geschlossen. Wenn du mit der Schließung des Themas nicht einverstanden bist, kontaktiere bitte das Team.