Zum Inhalt springen

sicherungskopie der versendeten Mails (VB05)


Empfohlene Beiträge

Geschrieben

hi leute,

hab grad in der Arbeit irgendwo n Problem (ich weiß ich recht mager beschrieben aber ich sitz daheim und hab den quellcode nicht zu hand und versuch diesen part der anwendung zu rekapitulieren). Hab mir mal ne consolenanwendung zusammengeschrieben die zwar eine abgespeckte version ist aber die fast das selbe tätigt:


 Sub Main()

        Dim time As String

        Dim ho(1) As String

        Dim path1 As String


        time = DateTime.Now

        ho = Split(Tri***(time), " ")

        Console.Write(ho(0))

        Console.Read()

        path1 = "test\" & ho(0) & "\" & "simon\"

        If My.Computer.FileSystem.DirectoryExists(path1) Then

            Console.WriteLine("Path1 does exist")

            Console.Read()


        Else

            My.Computer.FileSystem.CreateDirectory(path1)

            Console.WriteLine("Path1 doesn't exist")

            Console.Read()

        End If

        Dim writer As New System.IO.StreamWriter(path1 & "test.txt", False, System.Text.Encoding.Default)

        writer.Write("it does work")

        writer.Close()

        Console.WriteLine("finish")

        Console.Read()


        Console.WriteLine(My.Application.Info.DirectoryPath)

        Console.Read()

    End Sub

Der Witz ist ja eigentlich bei mir funktionierts einwandfrei. OK ich hab da jetzt wirklich viel weggelassen (wo man fehler machen kann). Ich versuchs mal zu erläutern was ich genau machen will.

Wie vielleicht aus meinem vorherigen thread schon herausgeht schreib ich momentan ne anwendung zum versenden von email (die auf einer sql Datenbank zurückgreift). So nun wollte ich noch eine möglichkeit einbauen, die versendeten Mails in einem vordefinierten Ordner als txt zu speichern. Beispiel:

-Den Übergeordnete Ordner nennen wir mal Mail-Backup

-In diesem Ordner werden die Mails in weitere Ordner die zur übersichtlichkeit dienen gespeichert. Der ordnername ist abhängig von dem jeweiligen Datum an welchem die Mails verschickt wurden. (was ich auch interessant fand war, das es keine expliziete funktion gibt die nur das Datum ausgiebt sonder wenn dann nur Datum & Uhrzeit, sprich man muss diese in ein string packen und spliten)

-In dem jeweiligen Ordner befinden sich dann noch unterordner die namendlich mit den versendeten Mailadressen versehn werden. Darin befinden sich dann die Kopien die mit dem Betreff benannt wurden.

Ich hatte dies schon einmal geschafft er machte es mir dann auch. Nur hatte ich dann noch veränderungsvorschläge und dannach gings nichtmehr.

Wünsche noch einen schönen Abend

Simon

Geschrieben

Code, der "fast dasselbe" tut, ist bei der Fehlersuche wenig hilfreich. Ein Programm, das fast richtig ist, kann komplett anders aussehen als eins, das vollständig richtig ist.

was ich auch interessant fand war, das es keine expliziete funktion gibt die nur das Datum ausgiebt
Doch, gibt es:

DateTime.ToString Method (String) (System)

dannach gings nichtmehr
ist keine ausreichende Fehlerbeschreibung.

Was soll eigentlich Tri*** sein?

Geschrieben (bearbeitet)

Hier der Quellcode :


 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click


        For Each item As String In ComboBox1.Items


            TextBox2.Text = item

            Dim mail As New Net.Mail.MailMessage()

            mail.From = New Net.Mail.MailAddress("Absender")

            mail.To.Add(TextBox2.Text)

            mail.Subject = TextBox1.Text

            mail.Body = RichTextBox1.Text

            mail.IsBodyHtml = True

                     Try

                mail.Attachments.Add(New Net.Mail.Attachment(TextBox3.Text))

            Catch

            End Try

            If copy.Checked = True Then

                copyevent()

            End If

            Dim smtp As New Net.Mail.SmtpClient("SMTP Adresse")

            smtp.Credentials = New System.Net.NetworkCredential("User", "PW")

            smtp.Send(mail)

            mail.Dispose()

            smtp = Nothing


Private Sub copyevent()

        Dim abc As String

        Dim def(0) As String

        Dim copy As String

        Dim copy2 As String

        abc = DateTime.Now

        def = Split(abc, " ")

        copy = "Copys\" & def(0) & "\" & TextBox2.Text & "\" & TextBox1.Text & ".txt"

        copy2 = "Copys\" & def(0) & "\" & TextBox2.Text

        If My.Computer.FileSystem.DirectoryExists(copy2) = True Then

            Dim copyw As New System.IO.StreamWriter(copy, True, System.Text.Encoding.Default)

            copyw.Write("Betreff:" & TextBox1.Text & vbCrLf & "Absender: ???" & vbCrLf & "Empfänger: " & TextBox2.Text & vbCrLf & "Anhang: " & TextBox3.Text & vbCrLf & " ------------------------------------------------------------------- " & vbCrLf & "Nachricht: " & vbCrLf & RichTextBox1.Text)

            copyw.Close()

            MessageBox.Show("does exist") ' bitte ignorieren dies dient lediglich dafür, damit ich weiß wieweit die schleife durchlaufen wird


        Else

            My.Computer.FileSystem.CreateDirectory(copy2)

            Dim copyw As New System.IO.StreamWriter(copy, True, System.Text.Encoding.Default)

            copyw.Write("Betreff:" & TextBox1.Text & vbCrLf & "Absender: ???" & vbCrLf & "Empfänger: " & TextBox2.Text & vbCrLf & "Anhang: " & TextBox3.Text & vbCrLf & " ------------------------------------------------------------------- " & vbCrLf & "Nachricht: " & vbCrLf & RichTextBox1.Text)

            copyw.Close()

            MessageBox.Show("doesn't exist") ' bitte ignorieren dies dient lediglich dafür, damit ich weiß wieweit die schleife durchlaufen wird

        End If

    End Sub

        Next

hat sich jedoch schon erledigt, da es höchst warscheinlich an den Strings in der copyevent() Prozedur liegt war gestern doch schon recht müde ;) . Muss etz erst mal genau schaun da die String doch recht unübersichtlich gehalten sind :confused: .

Tri*** benutzt man um bei String die eventuell enstehenden lehrzeichen vor und nach dem String wegzuschneiden. (AFAIK)

Wie ich gerade erst gesehn hab wird auch im quellcode die sternchen angezeigt deswegen die frage.

Es handelt sich hierbei um Trim $ , natürlich ohne lehrzeichen, nur zeigt mir dann die seite *** an.

mfg

simon

Bearbeitet von Gateway_man
Geschrieben

hat sich erledigt.

Noch ein problem hab ich da noch:


  Dim oldsb As String

        Dim startuppath As String


        startuppath = Tri***(My.Application.Info.DirectoryPath.ToString)

        oldsb = Tri***(OpenFileDialogsb.FileName.ToString)

        ' MessageBox.Show(oldsb)

        My.Computer.FileSystem.CopyFile(oldsb, startuppath & "\SBV\")

        sbrefresh()

Das problem liegt darin das ich nur den Zielpfad angeben will und nicht auch noch den Dateinnamen den die zu kopierende Datei dann hat angeben muss. So wie es jetzt ist meldet er mir nen Fehler, da ich als Ziel nur den Pfad angegeben habe " startuppath & "\SBV\") " . So will ich das aber ich meine die Files variieren ja auch und ich will nicht immer einen namen der zu kopierenden Datei für den Zielpfad eingeben müssen. Ich will das der Dateiname gleich bleibt.

lg

simon

Geschrieben

dann nimm dir doch die letzte Position von "\" in deinem vorherigen pfad +1 und dann haste deinen dateinamen.

Entweder per strpos, split oder halt zeichen von hinten durchlaufen und warten bis ein \ kommt ...

Geschrieben
split oder halt zeichen von hinten durchlaufen und warten bis ein \ kommt ...

Das hört sich interessant an. Geht das ? einen string von ende nach anfang zu spliten. Ich hab auch schon daran gedacht, aber mir war nicht bewusst wie man den string von ende nach anfang splitet (bzw. ist es mir immer noch nicht bewusst wie) deshalb habe ich diese möglichkeit außer acht gelassen, da man ja unterschiedliche Pfade hat und ich dann ja nicht immer weiß welches element der Dateiname ist (okay man kann natürlich auch sagen das es immer das letzte array element ist).

Hättest du evtl n bsp für die oben erwähnte split funktion? Normal wäre es ja wie folgt:


     Dim test As String = "Gott is des schee heut schon wieder Freitag, aber muss trotzdem noch bis 18 Uhr arbeiten"

        Dim test2(1) As String

        test2 = Split(test, ", ")

        Console.Write(test2(0))

        Console.Read()

'Consolenausgabe = Gott is des schee heut schon wieder Freitag

hier wäre es ja nicht schwer zu sagen das er mir den teil nach dem komma ausgeben soll einfach 0 mit einer 1 ersetzen. Aber wenn die größe der Felder des arrays zur laufzeit unbekannt sind, dann seh ich da n problem, jedoch wenn du weiß wie man einen string von ende nach anfang spliten kann wäre das auch kein problem mehr wie gesagt würd mich über informationen diesbezüglich freuen.

Geschrieben (bearbeitet)

Z.b. das hier ist eine Möglichkeit:

Dim splitted() As String = "C:\abc\def\ghi\j.txt".Split("\")
MsgBox(splitted(splitted.Length - 1))[/PHP]

Oder

[PHP]
Dim path As String = "C:\abc\def\ghi\j.txt"
MsgBox(path.Substring(path.LastIndexOf("\") + 1))

Oder


Dim path As String = "C:\abc\def\ghi\j.txt"
Dim splitted() As Char = path.ToCharArray
Dim result As String = ""
For i As Integer = splitted.Length - 1 To 0 Step -1
If splitted(i) <> "\" Then
result = splitted(i) & result
Else
Exit For
End If
Next
MsgBox(result)
[/PHP]

Bearbeitet von DominikJ

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...