Я ищу способ чтения писем с помощью Pop3 в C# 2.0. В настоящее время я использую код, найденный в CodeProject. Однако это решение является менее идеальным. Самая большая проблема заключается в том, что он не поддерживает электронные письма, написанные в unicode.Чтение электронной почты с использованием Pop3 в C#
ответ
Я успешно использовал OpenPop.NET для доступа к электронной почте через POP3.
Загрузка электронной почты через протокол POP3 является легкой частью задачи. Протокол довольно прост, и единственной сложной частью могут быть расширенные методы аутентификации, если вы не хотите отправлять текстовый пароль по сети (и не можете использовать SSL-шифрованный канал связи). См. RFC 1939: Post Office Protocol - Version 3 и RFC 1734: POP3 AUTHentication command.
Жесткая часть приходит, когда вам нужно проанализировать полученное электронное письмо, а это значит, что в большинстве случаев необходимо разбор MIME-формата. Вы можете написать быстрый & грязный парсер MIME в течение нескольких часов или дней, и он будет обрабатывать 95% всех входящих сообщений. Улучшение анализатор поэтому он может анализировать практически любой электронной почты означает:
- получать образцы, отправленные из наиболее популярных почтовых клиентов и улучшить парсер для того, чтобы исправить ошибки и RFC кривотолков, генерируемые ими.
- Убедившись, что сообщения, нарушающие RFC для заголовков сообщений и контента не приведут к сбою анализатора, и что вы будете иметь возможность читать каждое читаемое или угадываемо значение из искореженной электронной почты
- корректной обработки вопросов интернационализации (например, языки написано с RIGH налево, правильную кодировку для конкретного языка и т.д.)
- UNICODE
- Вложения и иерархического дерева пункт сообщения, как показано в "Mime torture email sample"
- S/MIME (подписанных и зашифрованных электронных писем).
- и так далее
Отладка надежный анализатор MIME занимает месяцы работы. Я знаю, потому что я смотрел, как мой друг пишет один такой парсер для компонента, упомянутого ниже, и писал для него несколько модульных тестов ;-)
Назад к исходному вопросу.
После code taken from our POP3 Tutorial page и ссылки поможет вам:
//
// create client, connect and log in
Pop3 client = new Pop3();
client.Connect("pop3.example.org");
client.Login("username", "password");
// get message list
Pop3MessageCollection list = client.GetMessageList();
if (list.Count == 0)
{
Console.WriteLine("There are no messages in the mailbox.");
}
else
{
// download the first message
MailMessage message = client.GetMailMessage(list[0].SequenceNumber);
...
}
client.Disconnect();
В основном вы говорите «купите мой компонент», правильно? Ничего плохого в этом, это звучит как хороший компонент. – MarkJ 2009-11-06 12:31:01
Вы можете попробовать любой сторонний компонент (свободный или коммерческий). Мой пост пытался указать на то, что написание такого компонента является трудным и трудоемким, потому что потребность в обширном тестировании - то, что вы вряд ли сможете обойтись без большого отчета об ошибках с данными большого числа реальных пользователей. Было бы неплохо, если вы выберете компонент Rebex, но если вы выберете другой, у меня нет проблем с ним. Написание собственного анализатора MIME или использование кода доказательной концепции, найденного в Интернете, - это ИМХО, в данном случае это не лучший способ. Но я, может быть, навязана ;-), нарисуйте свой собственный конкремент и сначала проверьте код. – 2009-11-06 19:21:16
Могу ли я использовать компонент Rebex для получения сообщений из почтового ящика Exchange 2003? – Kiquenet 2010-11-23 09:46:53
называть меня старомодным, но почему использовать 3rd библиотеку партии для простого протокола. Я реализовал POP3-читатели в веб-приложении ASP.NET с помощью System.Net.Sockets.TCPClient и System.Net.Security.SslStream для шифрования и аутентификации. Что касается протоколов, как только вы открываете связь с сервером POP3, есть только несколько команд, с которыми вам приходится иметь дело. Это очень простой протокол для работы.
Приложение с открытым исходным кодом BugTracker.NET включает в себя клиент POP3, который может анализировать MIME. И код POP3, и MIME-код принадлежат другим авторам, но вы можете видеть, как все это сочетается в моем приложении.
Для анализа MIME я использую http://anmar.eu.org/projects/sharpmimetools/.
Смотрите файл POP3Main.cs, POP3Client.cs и insert_bug.aspx
Вы также можете попробовать Mail.dll mail component, он имеет поддержку SSL, Unicode и многонациональную поддержку по электронной почте:
using(Pop3 pop3 = new Pop3())
{
pop3.Connect("mail.host.com"); // Connect to server and login
pop3.Login("user", "password");
foreach(string uid in pop3.GetAll())
{
IMail email = new MailBuilder()
.CreateFromEml(pop3.GetMessageByUID(uid));
Console.WriteLine(email.Subject);
}
pop3.Close(false);
}
Вы можете скачать его здесь: https://www.limilabs.com/mail
Обратите внимание, что это коммерческий продукт, который я создал.
Я бы не рекомендовал OpenPOP. Я потратил несколько часов на отладку проблемы - POPClient.GetMessage() OpenPOP загадочно возвращал значение null. Я отлаживал это и обнаружил, что это была строка индекса ошибка - см. Патч я представил здесь: http://sourceforge.net/tracker/?func=detail&aid=2833334&group_id=92166&atid=599778. Было трудно найти причину, так как есть пустые блоки catch {}, которые проглатывают исключения.
Кроме того, проект в основном в состоянии покоя ... последний релиз был в 2004 году
На данный момент мы все еще используем OpenPOP, но я буду смотреть на некоторые из других проектов рекомендовали людям Вот.
HigLabo.Mail прост в использовании. Вот пример использования:
using (Pop3Client cl = new Pop3Client())
{
cl.UserName = "MyUserName";
cl.Password = "MyPassword";
cl.ServerName = "MyServer";
cl.AuthenticateMode = Pop3AuthenticateMode.Pop;
cl.Ssl = false;
cl.Authenticate();
///Get first mail of my mailbox
Pop3Message mg = cl.GetMessage(1);
String MyText = mg.BodyText;
///If the message have one attachment
Pop3Content ct = mg.Contents[0];
///you can save it to local disk
ct.DecodeData("your file path");
}
вы можете получить его от https://github.com/higty/higlabo или NuGet [HigLabo]
Я просто попытался SMTPop и она работала.
- Скачано this.
- Добавлен
smtpop.dll
ссылку на мой проект # .NET C
написал следующий код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SmtPop;
namespace SMT_POP3 {
class Program {
static void Main(string[] args) {
SmtPop.POP3Client pop = new SmtPop.POP3Client();
pop.Open("<hostURL>", 110, "<username>", "<password>");
// Get message list from POP server
SmtPop.POPMessageId[] messages = pop.GetMailList();
if (messages != null) {
// Walk attachment list
foreach(SmtPop.POPMessageId id in messages) {
SmtPop.POPReader reader= pop.GetMailReader(id);
SmtPop.MimeMessage msg = new SmtPop.MimeMessage();
// Read message
msg.Read(reader);
if (msg.AddressFrom != null) {
String from= msg.AddressFrom[0].Name;
Console.WriteLine("from: " + from);
}
if (msg.Subject != null) {
String subject = msg.Subject;
Console.WriteLine("subject: "+ subject);
}
if (msg.Body != null) {
String body = msg.Body;
Console.WriteLine("body: " + body);
}
if (msg.Attachments != null && false) {
// Do something with first attachment
SmtPop.MimeAttachment attach = msg.Attachments[0];
if (attach.Filename == "data") {
// Read data from attachment
Byte[] b = Convert.FromBase64String(attach.Body);
System.IO.MemoryStream mem = new System.IO.MemoryStream(b, false);
//BinaryFormatter f = new BinaryFormatter();
// DataClass data= (DataClass)f.Deserialize(mem);
mem.Close();
}
// Delete message
// pop.Dele(id.Id);
}
}
}
pop.Quit();
}
}
}
- 1. Чтение POP3 сообщения электронной почты с PHP и IMAP вопросов
- 2. POP3 получить кодировку электронной почты C#
- 3. архив сообщений POP3 с использованием клиента электронной почты
- 4. Получение электронной почты из pop3 в WSH?
- 5. Как читать последнее письмо электронной почты с помощью pop3 C#
- 6. Чтение почты Java для сообщений POP3
- 7. Чтение pop3 писем с использованием OpenPop.Net
- 8. Динамическое создание адреса электронной почты IMAP/Pop3
- 9. Чтение содержимого электронной почты
- 10. Чтение данных электронной почты в C#
- 11. Получить адрес электронной почты получателя, используя C# pop3
- 12. Чтение электронной почты Outlook с определенным адресом в python с POP3
- 13. Как удалить сообщение электронной почты с помощью libcurl и POP3?
- 14. Чтение электронной почты Microsoft Exchange на C#
- 15. ошибки выборка pop3 почты
- 16. Чтение электронной почты из папки «Входящие» C#
- 17. Адрес электронной почты C++ и запись/чтение
- 18. Чтение/запись данных POP3
- 19. Чтение тела электронной почты с использованием gmail в R
- 20. Отправка электронной почты автоматически с использованием C#
- 21. Получение электронной почты с использованием PHP
- 22. ASP.NET: Как загрузить вложения электронной почты с помощью POP3?
- 23. Чтение электронной почты из gmail не работает
- 24. получение электронной почты POP3 и сохранить в БД
- 25. Чтение почты за POP3 в Gmail через Java
- 26. Как извлечь содержимое электронной почты (pop3) в строку Valid Format
- 27. Прочитать учетную запись электронной почты POP3 в SQL Server 2008
- 28. Помогите с моими проблемами при получении электронной почты с использованием протокола POP3
- 29. Как отправить/получить (SMTP/POP3) адрес электронной почты, используя R?
- 30. Управление и обработка электронной почты
ссылку NuGet: https://www.nuget.org/packages/OpenPop.NET/ – razon 2017-01-13 11:50:30