Announcement

Collapse
No announcement yet.

eMail empfangen POP 3

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

  • eMail empfangen POP 3

    Hallo zusammen, es gab auch schon einen ählichen thread, der wurde leider nicht vollständig beantwortet


    Ich möchte emails von meinem gmail konto herunterladen.

    Code:
    Eingangsserver (POP3) - erfordert SSL:  	pop.googlemail.com
    SSL verwenden: Ja
    Port: 995
    Ausgangsserver (SMTP) - erfordert TLS: 	smtp.googlemail.com(Authentifizierung verwenden)
    Authentifizierung verwenden: Ja
    STARTTLS verwenden: Ja (Einige Clients nennen dies "SSL".)
    Port: 465 oder 587
    Kontoname: 	Ihr Google Mail-Nutzername (einschließlich @googlemail.com)
    E-Mail-Adresse: 	Ihre vollständige Google Mail-E-Mail-Adresse ([email protected])
    Passwort: 	Ihr Google Mail-Passwort
    alle verweisen auf diesen link : http://www.devtrain.de/artikel_839.aspx
    leider ist der aber nicht mehr gültig

    Kann mir jmd erklären wie ich das machen könnte oder ein beispiel posten?

    vielen dank!
    --
    http://www.vic-fontaine.com/

  • #2
    Hallo,

    dazu verwende ich eine Komponente von LumiSoft (ist glaub ich unter CodeProject veröffentlicht). Komponente ist für Anhang zu groß, hab sie aber zum download angeboten.

    C#-Beispiel:
    [highlight=c#]
    using System;
    using System.Collections.Generic;
    using LumiSoft.Net.Mime;
    using LumiSoft.Net.POP3.Client;

    namespace POP3_Test
    {
    class Program
    {
    static void Main(string[] args)
    {
    List<POP3_ClientMessage> messages = new List<POP3_ClientMessage>();
    POP3_Client pop3 = new POP3_Client();

    #region Verbinden
    string mailServer = "mailserver";
    int port = 110;
    string userName = "[email protected]";
    string password = "kennwort";

    try
    {
    pop3.Connect(mailServer, port, false);
    pop3.Authenticate(userName, password, true);
    }
    catch (Exception ex)
    {
    Console.WriteLine(ex.Message);
    }
    #endregion

    #region Alle Nachrichten ausgeben
    try
    {
    Console.WriteLine("Liste aller Emails");
    Console.WriteLine("==================\n");

    int counter = 0;
    foreach (POP3_ClientMessage message in pop3.Messages)
    {
    counter++;
    messages.Add(message);
    Mime headerMime = Mime.Parse(message.HeaderToByte());

    // Senders:
    string from;
    if (headerMime.MainEntity.From != null)
    from = headerMime.MainEntity.From.ToAddressListString();
    else
    from = "<none>";

    // Betreff:
    string subject;
    if (!string.IsNullOrEmpty(headerMime.MainEntity.Subje ct))
    subject = headerMime.MainEntity.Subject;
    else
    subject = "<none>";

    // Datum:
    DateTime date = headerMime.MainEntity.Date;

    // Größe:
    float size = (float)message.Size / 1000f;
    string sizeText = size.ToString("f2") + "KB";

    // Anhang?
    Mime messageMime = Mime.Parse(message.MessageToByte());
    bool attachment = false;
    foreach (MimeEntity entity in messageMime.Attachments)
    {
    attachment =
    entity.ContentDisposition_FileName != null;

    if (attachment) break;
    }

    // Ausgabe:
    Console.WriteLine(
    "{0}: {1}: {2}, {3}, Größe: {4}, Anhang: {5}",
    counter, date, from, subject, sizeText, attachment);
    }
    }
    catch (Exception ex)
    {
    Console.WriteLine(ex.Message);
    }
    #endregion

    #region Speichern von Anhängen
    Console.WriteLine();
    Console.Write("Von welcher Email soll der 1. Anhang ausgegeben werden? ");
    int index;
    if (int.TryParse(Console.ReadLine(), out index))
    {
    index--; // nullbasiert

    try
    {
    Mime attachmentMime =
    Mime.Parse(messages[index].MessageToByte());

    MimeEntity attachtmentEntity =
    attachmentMime.Attachments[0];

    Console.WriteLine();
    Console.WriteLine(attachtmentEntity.Data);

    Console.WriteLine();
    Console.WriteLine(attachtmentEntity.DataEncoded);

    Console.WriteLine();
    Console.WriteLine(attachtmentEntity.DataText);
    }
    catch { }
    }
    #endregion

    #region Löschen aller Nachrichten
    //foreach (POP3_ClientMessage message in pop3.Messages)
    //{
    // message.MarkForDeletion();
    //}
    #endregion

    #region Trennen
    pop3.Disconnect();
    #endregion

    Console.ReadKey();
    }
    }
    }
    [/highlight]

    VB.net-Beispiel:
    [highlight=vbnet]
    Imports System
    Imports System.Collections.Generic
    Imports LumiSoft.Net.Mime
    Imports LumiSoft.Net.POP3.Client

    Namespace POP3_Test
    Class Program
    Public Shared Sub Main(args As String())
    Dim messages As New List(Of POP3_ClientMessage)()
    Dim pop3 As New POP3_Client()

    '#Region "Verbinden"
    Dim mailServer As String = "mailserver"
    Dim port As Integer = 110
    Dim userName As String = "[email protected]"
    Dim password As String = "kennwort"

    Try
    pop3.Connect(mailServer, port, False)
    pop3.Authenticate(userName, password, True)
    Catch ex As Exception
    Console.WriteLine(ex.Message)
    End Try
    '#End Region

    '#Region "Alle Nachrichten ausgeben"
    Try
    Console.WriteLine("Liste aller Emails")
    Console.WriteLine("==================" & vbLf)

    Dim counter As Integer = 0
    For Each message As POP3_ClientMessage In pop3.Messages
    counter += 1
    messages.Add(message)
    Dim headerMime As Mime = Mime.Parse(message.HeaderToByte())

    ' Senders:
    Dim from As String
    If headerMime.MainEntity.From IsNot Nothing Then
    from = headerMime.MainEntity.From.ToAddressListString()
    Else
    from = "<none>"
    End If

    ' Betreff:
    Dim subject As String
    If Not String.IsNullOrEmpty(headerMime.MainEntity.Subject ) Then
    subject = headerMime.MainEntity.Subject
    Else
    subject = "<none>"
    End If

    ' Datum:
    Dim [date] As DateTime = headerMime.MainEntity.[Date]

    ' Größe:
    Dim size As Single = CSng(message.Size) / 1000F
    Dim sizeText As String = size.ToString("f2") + "KB"

    ' Anhang?
    Dim messageMime As Mime = Mime.Parse(message.MessageToByte())
    Dim attachment As Boolean = False
    For Each entity As MimeEntity In messageMime.Attachments
    attachment = entity.ContentDisposition_FileName IsNot Nothing

    If attachment Then
    Exit For
    End If
    Next

    ' Ausgabe:
    Console.WriteLine("{0}: {1}: {2}, {3}, Größe: {4}, Anhang: {5}", counter, [date], from, subject, sizeText, _
    attachment)
    Next
    Catch ex As Exception
    Console.WriteLine(ex.Message)
    End Try
    '#End Region

    '#Region "Speichern von Anhängen"
    Console.WriteLine()
    Console.Write("Von welcher Email soll der 1. Anhang ausgegeben werden? ")
    Dim index As Integer
    If Integer.TryParse(Console.ReadLine(), index) Then
    index -= 1
    ' nullbasiert
    Try
    Dim attachmentMime As Mime = Mime.Parse(messages(index).MessageToByte())

    Dim attachtmentEntity As MimeEntity = attachmentMime.Attachments(0)

    Console.WriteLine()
    Console.WriteLine(attachtmentEntity.Data)

    Console.WriteLine()
    Console.WriteLine(attachtmentEntity.DataEncoded)

    Console.WriteLine()
    Console.WriteLine(attachtmentEntity.DataText)
    Catch
    End Try
    End If
    '#End Region

    '#Region "Löschen aller Nachrichten"
    'foreach (POP3_ClientMessage message in pop3.Messages)
    '{
    ' message.MarkForDeletion();
    '}
    '#End Region

    '#Region "Trennen"
    pop3.Disconnect()
    '#End Region

    Console.ReadKey()
    End Sub
    End Class
    End Namespace
    [/highlight]

    Hoffe es hilft!

    mfG Gü
    Zuletzt editiert von gfoidl; 26.10.2008, 18:50. Reason: In VB.net Modifizierer für Sub Main geändert auf Public
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Vielen dank für die mühe,

      Ich krieg das nicht einmal zum laufen
      Das ist ja eine Consolenanwendung...
      ich füge den verweis hinzu usw...

      Nun melded er mir 7 Fehler, die wahrscheindlich von der Position der namespace liegt.

      Ich komm da überhaupt ned nach
      Code:
      Fehler	1	"Sub Main" wurde nicht in "ConsoleApplication1.POP3_Test.Module1" gefunden.	ConsoleApplication1
      --
      http://www.vic-fontaine.com/

      Comment


      • #4
        Das ist ja eine Consolenanwendung...
        und wo ist das Problem??

        Ein Grund warum so viele Probleme beim Lernen von Programmiersprachen haben ist der dass immer versucht wird sofort WinForms zu erstellen ohne von den Grundlagen eine Ahnung zu haben. In Konsolenanwendungen kann man sich auf das wesentliche konzentrieren. Eine Änderung des Codes dann auf Winform ist kein Problem.

        Sollte ich ein Bsp. posten dass nur aus GUI besteht und so der Code für POP3 untergeht? Mit dem Konsolen-Bsp sind die Strukturen doch viel klarer.

        Hättest du eine Ahnung von .net dann hättest du auch den 1. Fehler beheben können. In der Sub Main in Program.vb war der Modifizierer Private anstatt Public - hab ich oben korrigiert - der Fehler kommt von der automatischen Übersetzung von C# nach Vb.net und ich hab (wieder) vergessen dies manuell zu Ändern.

        mfG Gü
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment

        Working...
        X