OpenPop.net получить фактический текст сообщения
Я использую OpenPop.net чтобы попытаться проанализировать наши ссылки из всех писем, которые находятся в данном почтовом ящике. Я нашел этот метод, чтобы получить все сообщение:
public static List<OpenPop.Mime.Message> FetchAllMessages(string hostname, int port, bool useSsl, string username, string password)
{
// The client disconnects from the server when being disposed
using (Pop3Client client = new Pop3Client())
{
// Connect to the server
client.Connect(hostname, port, useSsl);
// Authenticate ourselves towards the server
client.Authenticate(username, password);
// Get the number of messages in the inbox
int messageCount = client.GetMessageCount();
// We want to download all messages
List<OpenPop.Mime.Message> allMessages = new List<OpenPop.Mime.Message>(messageCount);
// Messages are numbered in the interval: [1, messageCount]
// Ergo: message numbers are 1-based.
// Most servers give the latest message the highest number
for (int i = messageCount; i > 0; i--)
{
allMessages.Add(client.GetMessage(i));
}
client.Disconnect();
// Now return the fetched messages
return allMessages;
}
}
Теперь я пытаюсь прокрутить каждое сообщение, но я не могу понять, как это сделать, у меня есть это до сих пор для моей кнопки:
private void button7_Click(object sender, EventArgs e)
{
List<OpenPop.Mime.Message> allaEmail = FetchAllMessages("pop3.live.com", 995, true, "[email protected]", "xxxxx");
var message = string.Join(",", allaEmail);
MessageBox.Show(message);
}
Как бы я перебирал каждую запись в allaEmail, чтобы я мог отобразить ее в MessageBox?
2 ответов:
Я вижу, что вы используете Пример fetchAllEmail с домашней страницы OpenPop. Аналогичный пример , показывающий, как получить основной текст, также находится на главной странице.
Вы также можете посмотреть, как на самом деле структурированы электронные письма. Введение в электронную почту существует именно для этой цели.
Сказав это, я бы сделал что-то подобное приведенному ниже коду.
Я надеюсь, что это поможет вам в пути. Обратите внимание, что есть также онлайн документация для OpenPop.private void button7_Click(object sender, EventArgs e) { List<OpenPop.Mime.Message> allaEmail = FetchAllMessages(...); StringBuilder builder = new StringBuilder(); foreach(OpenPop.Mime.Message message in allaEmail) { OpenPop.Mime.MessagePart plainText = message.FindFirstPlainTextVersion(); if(plainText != null) { // We found some plaintext! builder.Append(plainText.GetBodyAsText()); } else { // Might include a part holding html instead OpenPop.Mime.MessagePart html = message.FindFirstHtmlVersion(); if(html != null) { // We found some html! builder.Append(html.GetBodyAsText()); } } } MessageBox.Show(builder.ToString()); }
Вот как я это сделал:
string Body = msgList[0].MessagePart.MessageParts[0].GetBodyAsText(); foreach( string d in Body.Split('\n')){ Console.WriteLine(d); }Надеюсь, это поможет.
Comments