почтовый клиент pop3 (openpop.net) не смог получить почту, которая была отсканирована SurfControl plc - PullRequest
1 голос
/ 16 февраля 2011

Я использую клиент pop3 (openpop.net) для получения почты с сервера pop3. Он отлично работает для всех писем до сих пор. Но теперь не удалось получить почту, используя метод GetMessage (index) . Объект сообщения, полученный описанным выше способом, равен null для конкретной почты.

Я проверил почту вручную и, открыв ее, обнаружил в ней следующее сообщение:

Это сообщение было проверено на наличие вредоносных программ SurfControl plc. www.surfcontrol.com

Код c # .net выглядит следующим образом:

using (Pop3Client client = new Pop3Client())
{
    client.Connect(HostName, Port, UseSsl);
    client.Authenticate(UserName, Password);

    int MessageCount = client.GetMessageCount();

    MessageHeader h= client.GetMessageHeaders(MessageCount);

    List<int> deleteIndexes = new List<int>();

    #region Process all mails

    for (int index = 1; index <= MessageCount; index++)
    {
        try
        {
            #region Process the downloaded mail

            Message message;

            try
            {
                message = client.GetMessage(index);
            }
            catch
            {

            }

            MessageHeader Headers = message.Headers;

            RfcMailAddress FromMail = Headers.From;
            string Subject = Headers.Subject;
            string From = FromMail.Address;
            string ReceivedDate = Headers.DateSent.ToLocalTime().ToString();
        }
    }
}

Почему я не смог получить это письмо, используя упомянутую функцию клиента pop3? Любой, пожалуйста, помогите мне разобраться в этом вопросе.

Трассировка стека:

в System.Number.StringToNumber (String str, NumberStyles, NumberBuffer & number, информация NumberFormatInfo, логическое значение parseDecimal) в System.Number.ParseInt32 (String s, NumberStyles стиль, информация NumberFormatInfo) в System.Int32.Parse (String s, Провайдер IFormatProvider) на OpenPop.Mime.Header.HeaderFieldParser.ParseContentDisposition (String headerValue) в OpenPop.Mime.Header.MessageHeader.ParseHeader (String headerName, String headerValue) в OpenPop.Mime.Header.MessageHeader.ParseHeaders (NameValueCollection заголовки) в OpenPop.Mime.Header.MessageHeader..ctor (NameValueCollection headers)
в OpenPop.Mime.Header.HeaderExtractor.ExtractHeadersAndBody (Byte [] fullRawMessage, MessageHeader & headers, Byte [] & body) в OpenPop.Mime.MessagePart.GetMessagePart (Byte [] rawMessageContent)
в OpenPop.Mime.MessagePart.ParseMultiPartBody (Byte [] rawBody) в OpenPop.Mime.MessagePart.ParseBody (Byte [] rawBody) в OpenPop.Mime.MessagePart..ctor (Byte [] rawBody, заголовки MessageHeader) в OpenPop.Mime.Message..ctor (Byte [] rawMessageContent, Boolean parseBody) в OpenPop.Mime.Message..ctor (Byte [] rawMessageContent) в OpenPop.Pop3.Pop3Client.GetMessage (Int32 messageNumber)

1 Ответ

3 голосов
/ 16 февраля 2011

OpenPop.NET заявляет, что лучший способ получить поддержку - связаться с ними в их списке рассылки:
hpop-users@lists.sourceforge.net

Какие-нибудь исключения выбрасываются GetMessage(index)? Для GetMessage(index) невозможно вернуть нулевую ссылку - но если она выдает исключение, ваше предложение catch ничего не сделает, и вы продолжите, как будто ничего не произошло, и переменная message не будет установлена. Не могли бы вы сказать нам, если возникли какие-либо исключения, и дать нам трассировку стека, если так?

Кроме того, если вы не удалили ни одного кода перед публикацией этого вопроса, ваш код выглядит как беспорядок. Почему вы выбираете заголовки для последнего сообщения в почтовом ящике со строкой:

MessageHeader h= client.GetMessageHeaders(MessageCount);

Не похоже, что вы используете его.

Кроме того, похоже, что в цикле for вы извлекаете письмо только для просмотра заголовков - тогда вам следует использовать метод GetMessageHeaders(index) для экономии полосы пропускания.

...