【问题标题】:archive POP3 emails using webmail client使用 webmail 客户端归档 POP3 电子邮件
【发布时间】:2013-02-13 17:55:18
【问题描述】:

请耐心等待这个问题。据我了解,如果电子邮件客户端从 POP3 服务器读取电子邮件,则该电子邮件将从服务器中删除,并且仅存在于电子邮件客户端中。

在尝试开发非常简单的网络邮件客户端时,我设法将脚本放在一起,从给定的服务器读取电子邮件。但我正在努力寻找一种最简单的方法在客户端上存档该电子邮件。

这里是sn-p:

protected void Read_Emails()
{
    Pop3Client pop3Client;
    if (Session["Pop3Client"] == null)
    {
        pop3Client = new Pop3Client();
        pop3Client.Connect("mail.mail.com", 110, false);
        pop3Client.Authenticate("user@mail.com", "password");
        Session["Pop3Client"] = pop3Client;
    }
    else
    {
        pop3Client = (Pop3Client)Session["Pop3Client"];
    }
    int count = pop3Client.GetMessageCount();
    DataTable dtMessages = new DataTable();
    dtMessages.Columns.Add("Number");
    dtMessages.Columns.Add("MessageNumber");
    dtMessages.Columns.Add("From");
    dtMessages.Columns.Add("Subject");
    dtMessages.Columns.Add("DateSent");

    for (int i = 1; i <= count; i++)
    {
        try
        {
            Message message = pop3Client.GetMessage(i);
            dtMessages.Rows.Add();
            dtMessages.Rows[dtMessages.Rows.Count - 1]["Number"] = i;
            dtMessages.Rows[dtMessages.Rows.Count - 1]["From"] = message.Headers.From;
            dtMessages.Rows[dtMessages.Rows.Count - 1]["Subject"] = message.Headers.Subject;
            dtMessages.Rows[dtMessages.Rows.Count - 1]["DateSent"] = message.Headers.DateSent;
        }catch{}


    }
    gvEmails.DataSource = dtMessages;
    gvEmails.DataBind();


}

还有 ASP.NET 部分

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeBehind="Default.aspx.cs" Inherits="MA2._Default" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">


        <asp:GridView ID="gvEmails" runat="server" AutoGenerateColumns = "false">
            <Columns>
            <asp:BoundField HeaderText = "#" DataField = "Number" />
            <asp:BoundField HeaderText = "From" DataField = "From" />
            <asp:HyperLinkField HeaderText = "Subject" DataNavigateUrlFields = "MessageNumber" DataNavigateUrlFormatString = "~/ShowMessageCS.aspx?MessageNumber={0}" DataTextField = "Subject" />
            <asp:BoundField HeaderText = "Date" DataField = "DateSent" />
            </Columns>
        </asp:GridView>

</asp:Content>

我的问题是如何在客户端保存收到的电子邮件? 使用数据库还是将它们作为文件存储在服务器上?

我到处寻找可以找到的所有示例,但找不到关于在客户端保存电子邮件的部分。

【问题讨论】:

    标签: c# asp.net email client webmail


    【解决方案1】:

    好的,所以我或多或少会尝试为您提供一个概念性的答案,因为您还没有尝试过任何东西......这取决于您对存档的定义。您可以将“数据”归档到数据库或通常的 xml 文件中。您正在做的是将电子邮件分解为对象,您所要做的就是将这些对象存储在您可以检索它们的地方。如果你没有数据库,使用xml文件的方式,考虑制作一系列xml文件,这样一个就不会变得太大然后变慢。另一种方法是传统的 Outlook 存档,我只能在这里为您提供路径:

    您能够创建/附加到 .pst 二进制文件的唯一方法是通过互操作服务。以下是一些帮助您入门的链接:

    http://www.codeproject.com/Questions/441470/how-to-read-emails-from-outlook-using-csharp

    http://www.codeproject.com/Questions/461801/Open-Outlook-asp-net

    http://forums.asp.net/t/1041781.aspx/1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-13
      • 2013-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-13
      • 2020-12-22
      • 1970-01-01
      相关资源
      最近更新 更多