在 C# 中使用 IMAP 获取已发送邮件的问题
Issues fetching sent Mail using IMAP in c#
我正在使用 IMAP 从 gmail 获取我的邮件。它可以很好地从收件箱中提取电子邮件,但在发送邮件时,会提供空值。
这是我正在使用的代码:
ImapClient client = new ImapClient("ExampleHost", port, ssl);
try
{
client.Login("ExampleEmail", "ExamplePass", AuthMethod.Login);
IEnumerable<uint> units = client.Search(SearchCondition.Seen());
DataTable TempTaskTable = new DataTable();
TempTaskTable.Columns.Add("FromEmail", typeof(string));
TempTaskTable.Columns.Add("ToEmail", typeof(string));
TempTaskTable.Columns.Add("Subject", typeof(string));
foreach (var uid in units)
{
System.Net.Mail.MailMessage email = client.GetMessage(uid,true, "[Gmail]/Sent Mail");
DataRow TempTaskRow2 = TempTaskTable.NewRow();
TempTaskRow2["FromEmail"] = email.Sender;
TempTaskRow2["ToEmail"] = email.From;
TempTaskRow2["Subject"] = email.Subject;
}
bool result = false;
string msg = "";
usp_TempTasksSave(TempTaskTable, TempTaskAttachmentDatatTable, out result, out msg);
}
catch (Exception ex)
{
string exceptionCheck = ex.Message;
}
这是我的输出:
我也在 Whosebug 上搜索过,到目前为止这是我得到的唯一帮助还不够
- get Sent mail using IMAP
非常感谢任何形式的帮助。
我通过设置默认邮箱解决了这个问题。 就我而言,默认邮箱始终是 INBOX,因此我无法获取已发送的邮件。只用了一行就解决了这个问题。这是我现在使用的代码:
ImapClient client = new ImapClient("ExampleHost", port, ssl);
client.DefaultMailbox = "[Gmail]/Sent Mail";
try
{
client.Login("ExampleEmail", "ExamplePass", AuthMethod.Login);
IEnumerable<uint> units = client.Search(SearchCondition.Seen());
DataTable TempTaskTable = new DataTable();
TempTaskTable.Columns.Add("FromEmail", typeof(string));
TempTaskTable.Columns.Add("ToEmail", typeof(string));
TempTaskTable.Columns.Add("Subject", typeof(string));
foreach (var uid in units)
{
System.Net.Mail.MailMessage email = client.GetMessage(uid,true, "[Gmail]/Sent Mail");
DataRow TempTaskRow2 = TempTaskTable.NewRow();
TempTaskRow2["FromEmail"] = email.Sender;
TempTaskRow2["ToEmail"] = email.From;
TempTaskRow2["Subject"] = email.Subject;
}
}
catch (Exception ex)
{
string exceptionCheck = ex.Message;
}
您还可以使用以下方式查看您的所有邮箱:
List<String> mailBoxesCheck = new List<string>();
foreach (var folder in client.ListMailboxes())
{
mailBoxesCheck.Add(folder);
}
我正在使用 IMAP 从 gmail 获取我的邮件。它可以很好地从收件箱中提取电子邮件,但在发送邮件时,会提供空值。
这是我正在使用的代码:
ImapClient client = new ImapClient("ExampleHost", port, ssl);
try
{
client.Login("ExampleEmail", "ExamplePass", AuthMethod.Login);
IEnumerable<uint> units = client.Search(SearchCondition.Seen());
DataTable TempTaskTable = new DataTable();
TempTaskTable.Columns.Add("FromEmail", typeof(string));
TempTaskTable.Columns.Add("ToEmail", typeof(string));
TempTaskTable.Columns.Add("Subject", typeof(string));
foreach (var uid in units)
{
System.Net.Mail.MailMessage email = client.GetMessage(uid,true, "[Gmail]/Sent Mail");
DataRow TempTaskRow2 = TempTaskTable.NewRow();
TempTaskRow2["FromEmail"] = email.Sender;
TempTaskRow2["ToEmail"] = email.From;
TempTaskRow2["Subject"] = email.Subject;
}
bool result = false;
string msg = "";
usp_TempTasksSave(TempTaskTable, TempTaskAttachmentDatatTable, out result, out msg);
}
catch (Exception ex)
{
string exceptionCheck = ex.Message;
}
这是我的输出:
我也在 Whosebug 上搜索过,到目前为止这是我得到的唯一帮助还不够
- get Sent mail using IMAP
非常感谢任何形式的帮助。
我通过设置默认邮箱解决了这个问题。 就我而言,默认邮箱始终是 INBOX,因此我无法获取已发送的邮件。只用了一行就解决了这个问题。这是我现在使用的代码:
ImapClient client = new ImapClient("ExampleHost", port, ssl);
client.DefaultMailbox = "[Gmail]/Sent Mail";
try
{
client.Login("ExampleEmail", "ExamplePass", AuthMethod.Login);
IEnumerable<uint> units = client.Search(SearchCondition.Seen());
DataTable TempTaskTable = new DataTable();
TempTaskTable.Columns.Add("FromEmail", typeof(string));
TempTaskTable.Columns.Add("ToEmail", typeof(string));
TempTaskTable.Columns.Add("Subject", typeof(string));
foreach (var uid in units)
{
System.Net.Mail.MailMessage email = client.GetMessage(uid,true, "[Gmail]/Sent Mail");
DataRow TempTaskRow2 = TempTaskTable.NewRow();
TempTaskRow2["FromEmail"] = email.Sender;
TempTaskRow2["ToEmail"] = email.From;
TempTaskRow2["Subject"] = email.Subject;
}
}
catch (Exception ex)
{
string exceptionCheck = ex.Message;
}
您还可以使用以下方式查看您的所有邮箱:
List<String> mailBoxesCheck = new List<string>();
foreach (var folder in client.ListMailboxes())
{
mailBoxesCheck.Add(folder);
}