Получение вложений из почтового аккаунта в .NET - PullRequest
3 голосов
/ 14 июня 2010

Мне бы хотелось, чтобы бесплатная библиотека для .NET могла получать вложения из учетной записи (например, gMail или других) через imap4 (не обязательно) и сохранять их в папке.

В идеале это было быпозвольте мне получить их список и загрузить только некоторые из них (фильтрация по расширению, имени и / или размеру) и быть свободными.

Я уже сделал это с пробной версией EAGetMail , но для того, что я пытаюсь купить неограниченную версию этой библиотеки, она не совсем подходит (я не знал, что сама эта функциональность была одной из тех, с ограниченным временем).

--- [edit - Higuchi] ---

Я использую следующий код:

Dim cl As New Pop3Client()
        cl.UserName = "marcelo.f.ramires@gmail.com"
        cl.Password = "mypassword"
        cl.ServerName = "pop.gmail.com"
        cl.AuthenticateMode = Pop3AuthenticateMode.Pop
        cl.Ssl = False
        cl.Authenticate() //takes a while, but passes even if there's a wrong password

        Dim mg As Pop3Message = cl.GetMessage(1) //gives me an exception: Message = "Pop3 connection is closed"

ОБНОВЛЕНИЕ: Установка порта на 995 дает мнеИсключение «Время отклика»

Как уже отмечалось, у меня возникли некоторые проблемы при попытке подключиться и получить первое электронное письмо.любая помощь?

1 Ответ

5 голосов
/ 14 июня 2010

Хорошо, я знаю, что вы указали IMAP4, но я решил, что предложу это в любом случае, если POP3 - вариант, так как он мне пригодился:

http://csharpmail.codeplex.com/

Эта библиотека предоставляет доступ к почте POP3, которую многие почтовые службы (включая Gmail) предлагают в дополнение к более новому IMAP.

Основной класс - Pop3Client, который обеспечивает доступ к функциям POP3, таким как ExecuteList, ExecuteTop и т. Д. Я использовал это специально для того, о чем вы спрашиваете, - для сканирования и загрузки вложений.

Если вы решите, что это то, что вы могли бы использовать в конце концов и нуждаетесь в дальнейшем руководстве, дайте мне знать.

ОБНОВЛЕНИЕ : В ответ на ваш обновленный вопрос у меня есть только несколько предварительных предложений:

  1. Попробуйте установить для свойства Pop3Client.Port значение 995. Я знаю, что именно это Gmail использует для POP3.
  2. Метод Pop3Client.Authenticate возвращает значение bool, указывающее, прошла ли аутентификация успешно. Вы можете проверить это значение после вызова метода, чтобы узнать, возможно ли дальнейшее продвижение.

ОБНОВЛЕНИЕ 2 : я попробовал это дома со следующими настройками, и у меня это сработало:

Using client As New Pop3Client
    client.UserName = "username@gmail.com"
    client.Password = "[insert password here]"
    client.ServerName = "pop.gmail.com"
    client.AuthenticateMode = Pop3AuthenticateMode.Pop
    client.Ssl = True ' NOTICE: in your example code you have False here '
    client.Port = 995
    client.Authenticate()

    Dim messageList = client.ExecuteList()
    Console.WriteLine("# Messages: {0}", messageList.Count)
End Using

Попробуйте эти настройки и посмотрите, работают ли они у вас.

ОБНОВЛЕНИЕ 3 : Еще одна вещь! Обязательно ли вы включили POP для своей учетной записи Gmail? Если нет, вам нужно сделать это!

  1. В папке входящих сообщений Gmail нажмите «Настройки» (вверху справа).
  2. На странице настроек перейдите на вкладку с надписью «Пересылка и POP / IMAP».
  3. В разделе Загрузка POP выберите одну из переключателей, чтобы включить почту POP.
  4. Нажмите «Сохранить изменения» внизу.
...