protected void Page_Load(object sender, EventArgs e)
 {
     int emailId = -1;
     if (Request.QueryString["emailId"] == null)
     {
         Response.Redirect("Pop3Client.aspx");
         Response.Flush();
         Response.End();
     }
     else
         Email = Session["email"].ToString();
     Password = Session["pwd"].ToString();
         emailId = Convert.ToInt32(Request.QueryString["emailId"]);
     Email email = null;
     List<MessagePart> msgParts = null;
     using (Prabhu.Pop3Client client = new Prabhu.Pop3Client (Host, Port,Email, Password, true))
     {
         client.Connect();
         email = client.FetchEmail(emailId);
         msgParts = client.FetchMessageParts(emailId);
     }
     if (email == null || msgParts == null)
     {
         Response.Redirect("Pop3Client.aspx");
         Response.Flush();
         Response.End();
     }
     MessagePart preferredMsgPart = FindMessagePart(msgParts, "text/html");
     if (preferredMsgPart == null)
         preferredMsgPart = FindMessagePart(msgParts, "text/plain");
     else if (preferredMsgPart == null && msgParts.Count > 0)
         preferredMsgPart = msgParts[0];
     string contentType, charset, contentTransferEncoding, body = null;
     if (preferredMsgPart != null)
     {
         contentType = preferredMsgPart.Headers["Content-Type"];
         charset = "us-ascii";
         contentTransferEncoding =preferredMsgPart.Headers["Content-Transfer-Encoding"];
         Match m = CharsetRegex.Match(contentType);
         if (m.Success)
             charset = m.Groups["charset"].Value;
         HeadersLiteral.Text = contentType != null ? "Content-Type: " +contentType + "<br />" : string.Empty;
         HeadersLiteral.Text += contentTransferEncoding != null ?"Content-Transfer-Encoding: " +contentTransferEncoding : string.Empty;
         if (contentTransferEncoding != null)
         {
             if (contentTransferEncoding.ToLower() == "base64")
                 body = DecodeBase64String(charset,preferredMsgPart.MessageText);
             else if (contentTransferEncoding.ToLower() =="quoted-printable")
                 body = DecodeQuotedPrintableString(preferredMsgPart.MessageText);
             else
                 body = preferredMsgPart.MessageText;
         }
         else
             body = preferredMsgPart.MessageText;
     }
     EmailIdLiteral.Text = Convert.ToString(emailId);
     DateLiteral.Text = email.UtcDateTime.ToString(); ;
     FromLiteral.Text = email.From;
     SubjectLiteral.Text = email.Subject;
     BodyLiteral.Text = preferredMsgPart != null ? (preferredMsgPart.Headers["Content-Type"].IndexOf("text/plain") != -1 ?"<pre>" + FormatUrls(body) + "</pre>" : body) : null;
     ListAttachments(msgParts);
 }
示例#2
0
    protected void Page_Load(object sender, EventArgs e)
    {
        int emailId = -1;

        if (Request.QueryString["emailId"] == null)
        {
            Response.Redirect("Pop3Client.aspx");
            Response.Flush();
            Response.End();
        }
        else
        {
            Email = Session["email"].ToString();
        }
        Password = Session["pwd"].ToString();
        emailId  = Convert.ToInt32(Request.QueryString["emailId"]);
        Email email = null;
        List <MessagePart> msgParts = null;

        using (Prabhu.Pop3Client client = new Prabhu.Pop3Client(Host, Port, Email, Password, true))
        {
            client.Connect();
            email    = client.FetchEmail(emailId);
            msgParts = client.FetchMessageParts(emailId);
        }
        if (email == null || msgParts == null)
        {
            Response.Redirect("Pop3Client.aspx");
            Response.Flush();
            Response.End();
        }
        MessagePart preferredMsgPart = FindMessagePart(msgParts, "text/html");

        if (preferredMsgPart == null)
        {
            preferredMsgPart = FindMessagePart(msgParts, "text/plain");
        }
        else if (preferredMsgPart == null && msgParts.Count > 0)
        {
            preferredMsgPart = msgParts[0];
        }
        string contentType, charset, contentTransferEncoding, body = null;

        if (preferredMsgPart != null)
        {
            contentType             = preferredMsgPart.Headers["Content-Type"];
            charset                 = "us-ascii";
            contentTransferEncoding = preferredMsgPart.Headers["Content-Transfer-Encoding"];
            Match m = CharsetRegex.Match(contentType);
            if (m.Success)
            {
                charset = m.Groups["charset"].Value;
            }
            HeadersLiteral.Text  = contentType != null ? "Content-Type: " + contentType + "<br />" : string.Empty;
            HeadersLiteral.Text += contentTransferEncoding != null ?"Content-Transfer-Encoding: " + contentTransferEncoding : string.Empty;
            if (contentTransferEncoding != null)
            {
                if (contentTransferEncoding.ToLower() == "base64")
                {
                    body = DecodeBase64String(charset, preferredMsgPart.MessageText);
                }
                else if (contentTransferEncoding.ToLower() == "quoted-printable")
                {
                    body = DecodeQuotedPrintableString(preferredMsgPart.MessageText);
                }
                else
                {
                    body = preferredMsgPart.MessageText;
                }
            }
            else
            {
                body = preferredMsgPart.MessageText;
            }
        }
        EmailIdLiteral.Text = Convert.ToString(emailId);
        DateLiteral.Text    = email.UtcDateTime.ToString();;
        FromLiteral.Text    = email.From;
        SubjectLiteral.Text = email.Subject;
        BodyLiteral.Text    = preferredMsgPart != null ? (preferredMsgPart.Headers["Content-Type"].IndexOf("text/plain") != -1 ?"<pre>" + FormatUrls(body) + "</pre>" : body) : null;
        ListAttachments(msgParts);
    }