Wie kann ich in Visual Basic eine E-Mail als EML-Datei speichern

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von ChrizzleWhizzle.

    Wie kann ich in Visual Basic eine E-Mail als EML-Datei speichern

    Hallo liebe VB-Paradise-User!

    Ich habe mithilfe von Visual Basic 2010 Express einen kleinen Mail-Sender gebaut. Jetzt möchte ich, dass der User des Programms die E-Mail als EML-Datei speichern kann und später wieder öffnen und dann Senden kann.

    Wenn jemand ein Codebeispiel hätte, wäre ich sehr dankbar! :thumbsup:

    Viele Grüße

    VisualBasicCoder ;)
    1min google ^^
    Spoiler anzeigen

    Quellcode

    1. using System;
    2. using System.Collections.Generic;
    3. using System.Runtime.InteropServices;
    4. using System.Text;
    5. using DvApi32;
    6. namespace ConsoleApplication4
    7. {
    8. class Program
    9. {
    10. [DllImport("dvapi32.dll", EntryPoint = "DVEmlFromMailItem")]
    11. public extern static long DVEmlFromMailItem(MailItem oMailItem, StringBuilder Path);
    12. static void Main(string[] args)
    13. {
    14. eMail2eml();
    15. }
    16. /// <summary>
    17. /// Save all MailItems entries as .eml
    18. /// </summary>
    19. private static void eMail2eml()
    20. {
    21. DavidAPIClass oApp;
    22. Account oAcc;
    23. Archive oArchive;
    24. MessageItems oMessageItems;
    25. MailItem oMailItem;
    26. int l;
    27. oApp = new DavidAPIClass();
    28. oApp.LoginOptions = DvLoginOptions.DvLoginForceAsyncDuplicate;
    29. oAcc = oApp.Logon("", "", "", "", "", "NOAUTH");
    30. oArchive = oAcc.GetSpecialArchive(DvArchiveTypes.DvArchivePersonalIn);
    31. oMessageItems = oArchive.AllItems;
    32. for (int i = 0; oMessageItems.Count > i; i++)
    33. {
    34. if (oMessageItems.Item(i).Type == DvItemTypes.DvEMailItem)
    35. {
    36. oMailItem = (MailItem)oMessageItems.Item(i);
    37. StringBuilder oSb = new StringBuilder(260);
    38. if (DVEmlFromMailItem(oMailItem, oSb) != 0)
    39. {
    40. System.IO.File.Copy(oSb.ToString(), @"c:\temp\" + oMailItem.Subject + ".eml");
    41. }
    42. }
    43. }
    44. oAcc.Logoff();
    45. }
    46. }
    47. }

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ChrizzleWhizzle“ ()

    hm ok sorry hatte das ohne zu testen einfach gepostet :(

    Aber diesmal hört es sich viel versprechender an^^

    Spoiler anzeigen

    VB.NET-Quellcode

    1. ''' <summary>
    2. ''' ExtendedMail-Klasse erweiterte die MailMessage-Klasse um eine Methode zum
    3. ' Speichern der Email.
    4. ''' </summary>
    5. ''' <remarks></remarks>
    6. Public Class ExtendedMail
    7. Inherits System.Net.Mail.MailMessage
    8. ''' <summary>
    9. ''' Speichert die Email im angegebenen Pfad im .eml-Format
    10. ''' </summary>
    11. ''' <param name="Path">Das Verzeichnis in dem die Email gespeichert
    12. ' werden soll.</param>
    13. ''' <remarks></remarks>
    14. Public Function Save(ByVal Path As String) As Boolean
    15. Try
    16. 'Erstelle SmtpClient-Instanz. Die Angabe des Hosts ist nicht
    17. ' erforderlich.
    18. Dim smtp As New System.Net.Mail.SmtpClient
    19. 'Auslieferungsmethode
    20. smtp.DeliveryMethod = _
    21. Net.Mail.SmtpDeliveryMethod.SpecifiedPickupDirectory
    22. 'Ausgabepfad
    23. smtp.PickupDirectoryLocation = Path
    24. 'Email "speichern"
    25. smtp.Send(Me)
    26. Return True
    27. Catch ex As Exception
    28. Return False
    29. End Try
    30. End Function
    31. End Class