この質問にはしばらくお待ちください。電子メールクライアントがPOP3サーバーから電子メールを読み取る場合、その電子メールはサーバーから消去され、電子メールクライアントにのみ存在することを理解しています。
非常に単純なWebメールクライアントを開発するために、特定のサーバーからの電子メールを読み取るスクリプトを作成することができました。しかし、私はその電子メールをクライアントにアーカイブする最も簡単な方法を見つけるのに苦労しています。
スニペットは次のとおりです。
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>
私の質問は、受信した電子メールをクライアントに保存する方法ですか?データベースを使用しますか、それともサーバーにファイルとして保存しますか?
私はどこでも見つけられるすべての例を探していましたが、クライアントでの電子メールの保存に関する部分を見つけることができませんでした。