Announcement

Collapse
No announcement yet.

C# Illegales Zeichen im Pfad???

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • C# Illegales Zeichen im Pfad???

    Hallo, ich hab ein programm das Emails mit Anhang versendet aber wenn ich auf den Button drücke kommt:
    Illegales Zeichen im Pfad
    Ich hab nichts gefunden was illegal sein könnte. Vielleicht könnt ihr mir ja helfen
    Hier der Code:
    Code:
    using System;
    using System.Windows.Forms;
    using System.IO;
    using System.Net.Mail;
    
    namespace SSFN_file_versenden
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                //textBox1.Text = string.Empty;
                string contains = "test";
                string[] Files = Directory.GetFiles(@"C:\Users\Robin\Documents");
    
                foreach (string file in Files)
                {
                    if (file.ToUpper().Contains(contains.ToUpper()))
                    {
                        string path = ("\r\n" + file);
                        textBox1.Text = textBox1.Text + path;
                        try
                        {
                            MailMessage mail = new MailMessage();
                            SmtpClient SmtpServer = new SmtpClient("smtp.web.de");
    
                            mail.From = new MailAddress("[email protected]");
                            mail.To.Add("[email protected]");
                            mail.Subject = ("test1");
                            mail.Body = ("test");
                            mail.Attachments.Add(new Attachment(textBox1.Text));
    
                            SmtpServer.Port = 587;
                            SmtpServer.Credentials = new System.Net.NetworkCredential("[email protected]", "password");
                            SmtpServer.EnableSsl = true;
    
                            SmtpServer.Send(mail);
                            MessageBox.Show("Finished");
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(ex.ToString());
                        }
                    }
                }
            }
        }
    }
    Danke...

  • #2
    string path = ("\r\n" + file);
    textBox1.Text = textBox1.Text + path;
    und
    mail.Attachments.Add(new Attachment(textBox1.Text));
    Christian

    Comment


    • #3
      [HIGHLIGHT=C#]string path = ("\r\n" + file);
      textBox1.Text = textBox1.Text + path;
      // snip
      mail.Attachments.Add(new Attachment(textBox1.Text));[/HIGHLIGHT]
      Du stellst dem Pfad zum file einen Zeilenumbruch vorn an um das dann in die TextBox zu schreiben.
      Und nimnst dann den TextBox Inhalt um den als Attachment zu verwenden. Ein Zeilenumbruch ist kaum ein gültiges Zeichen in einem Pfad.

      Warum nimmst du nicht einfach file? Das ist ein gültiger Pfad (denn hast du ja vom System bekommen) und das ganze funktioniert dann auch wenn du mehr als einen Treffer in deinem Verzeichnis hast. Dann werden halt entsprechend viele Mails versendet.

      Comment


      • #4
        Der ganze Code ist eh falsch.
        Es läuft eine Schleife über die gefundenen Dateien
        Enthält das gefundene File den gesuchten String, so wird das File in die Textbox aufgenommen und jedesmal eine eMail mit allen bis dahin gefundenen Dateien aus der in die Textbox geschriebenen Files versandt. Also erste eine eMail mit der ersten Datei, dann eine mit der ersten und zweiten Datei usw. Es dürfte auch nicht funktionieren, x-Anhänge mit einem mail.Attachments.Add(new Attachment(textBox1.Text)); zu senden. Für jedes File ist ein add erforderlich.

        Strukturiere dein Programm:

        Es gibt eine Methode
        SucheDateien mit Parameter: Suchkriterium
        Diese sucht die Dateien, prüft ob sie dem Suchkriterium entsprechen und gibt eine Arraylist mit den gefundenen Treffern zurück

        Es gibt eine Methode
        AktualisiereTextbox mit Parameter: Arraylist mit den gefundenen Treffern
        Diese trägt die Namen in die Textbox ein.

        Es gibt eine Methode
        SendeEmail mit Parameter: Arraylist mit den gefundenen Treffern
        Diese sendet die eMail. Entweder eine mit allen Dateien oder je Datei eine eMail
        Zuletzt editiert von Christian Marquardt; 06.10.2015, 19:58.
        Christian

        Comment

        Working...
        X