Usuário com melhor resposta
Recebendo Emails

Pergunta
-
Respostas
-
Voce pode usar os protocolos POP3 ou IMAP para receber emails.
O POP3 é nativo .NET, veja um exemplo abaixo:
https://www.emailarchitect.net/eagetmail/kb/vbnet.aspx
O IMAP (bem mais poderoso que o POP3) precisa de um componete externo, e at/ agora eu nao achei nenhum gratuito que seja bom... mas caso queira tentar:
https://briancaos.wordpress.com/2012/04/24/reading-mails-using-imap-and-mailsystem-net/
Se voce quiser existem excelentes componentes IMAP mas sao pagos:
http://www.componentpro.com/imap.net/
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Editado William John Adam TrindadeModerator quarta-feira, 13 de abril de 2016 14:24
- Marcado como Resposta Marcos SJ quarta-feira, 13 de abril de 2016 14:32
Todas as Respostas
-
Voce pode usar os protocolos POP3 ou IMAP para receber emails.
O POP3 é nativo .NET, veja um exemplo abaixo:
https://www.emailarchitect.net/eagetmail/kb/vbnet.aspx
O IMAP (bem mais poderoso que o POP3) precisa de um componete externo, e at/ agora eu nao achei nenhum gratuito que seja bom... mas caso queira tentar:
https://briancaos.wordpress.com/2012/04/24/reading-mails-using-imap-and-mailsystem-net/
Se voce quiser existem excelentes componentes IMAP mas sao pagos:
http://www.componentpro.com/imap.net/
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Editado William John Adam TrindadeModerator quarta-feira, 13 de abril de 2016 14:24
- Marcado como Resposta Marcos SJ quarta-feira, 13 de abril de 2016 14:32
-
Olá Antonio,
Só para complementar a resposta do William, eu escrevi um artigo justamente sobre esse tema uns meses atrás.. Os exemplos estão em C#, mas, você pode facilmente converte-los para VB.NET utilizando um conversor online:
Como receber e-mails no C# utilizando POP3?
Abraço!
André Alves de Lima
Microsoft MVP - Client App Dev
Visite o meu site: http://www.andrealveslima.com.br
Me siga no Twitter: @andrealveslima -
bom dia pessoal,
William, você já testou o código?
estou tendo o seguinte error.
The thread 0x2f64 has exited with code 0 (0x0).
Exception thrown: 'System.FormatException' in System.dll
Exception thrown: 'EAGetMail.MailServerException' in EAGetMail45.dll
-ERR authorization failedeste componente é pago?
valeu.
-
-
bom dia pessoal,
William, você já testou o código?
estou tendo o seguinte error.
The thread 0x2f64 has exited with code 0 (0x0).
Exception thrown: 'System.FormatException' in System.dll
Exception thrown: 'EAGetMail.MailServerException' in EAGetMail45.dll
-ERR authorization failedeste componente é pago?
valeu.
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
-
Olá Antonio,
Esse erro vindo do Gmail normalmente acontece por dois motivos:
1) O POP3 não está habilitado nas configurações do Gmail (eu detalhei esse ponto no artigo).. Habilite em Configurations / Forwarding / POP
2) O acesso à sua conta do Gmail não está habilitado para aplicativos "menos seguros".. Altere essa configuração no link https://www.google.com/settings/security/lesssecureapps
Por favor, confira essas duas configurações e tente novamente..
Abraço!
André Alves de Lima
Microsoft MVP - Client App Dev
Visite o meu site: http://www.andrealveslima.com.br
Me siga no Twitter: @andrealveslima -
Sim William, consigo configurar um aplicativo.
public void LerServerMail()
{
pnMsg.Visible = true;
Application.DoEvents();
try
{
Cursor = Cursors.WaitCursor;
_hostname = "pop.gmail.com"; // Host do seu servidor POP3. Por exemplo, pop.gmail.com para o servidor do Gmail.
_port = 995// Porta utilizada pelo host. Por exemplo, 995 para o servidor do Gmail.
_useSsl = true // Indicação se o servidor POP3 utiliza SSL para autenticação. Por exemplo, o servidor do Gmail utiliza SSL, então, "true".
_username = "antonio@gmail.com"; // Usuário do servidor POP3. Por exemplo, seuemail@gmail.com.
_password = "******"; // Senha do servidor POP3.
using (var client = new OpenPop.Pop3.Pop3Client())
{
client.Connect(_hostname, _port, _useSsl);
client.Authenticate(_username, _password);
int messageCount = client.GetMessageCount();
_emails.Clear();for (int i = messageCount; i > 0; i--)
{
var popEmail = client.GetMessage(i);
var popText = popEmail.FindFirstPlainTextVersion();
var popHtml = popEmail.FindFirstHtmlVersion();string mailText = string.Empty;
string mailHtml = string.Empty;
if (popText != null)
mailText = popText.GetBodyAsText();
if (popHtml != null)
mailHtml = popHtml.GetBodyAsText();_emails.Add(new Email()
{
Id = popEmail.Headers.MessageId,
Assunto = popEmail.Headers.Subject,
De = popEmail.Headers.From.Address,
Para = string.Join("; ", popEmail.Headers.To.Select(to => to.Address)),
Data = popEmail.Headers.DateSent,
ConteudoTexto = mailText,
ConteudoHtml = !string.IsNullOrWhiteSpace(mailHtml) ? mailHtml : mailText
});
}AtualizarDataBindings();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
Cursor = Cursors.Default;
pnMsg.Visible = false;
}}messagem de error;
Não é possível ler os dados da conexão de transporte: Uma tentativa de conexão falhou porque o componente conectado não respondeu corretamente após um período de tempo ou a conexão estabelecida falhou porque o host conectado não respondeu.
valeu.
- Editado Antonio Fcs sexta-feira, 15 de abril de 2016 12:22
-
André.
verifiquei a configuração e funcionou, obrigado.
os outros host de e-mails funcionam da mesma maneira, é preciso habilita esta configuração?
Teria algum recurso que tornaria o aplicativo seguro e não precisaria desabilitar esta opção?
valeu.
- Editado Antonio Fcs sexta-feira, 15 de abril de 2016 12:41
-
Olá Antonio,
Que bom que funcionou! Qualquer coisa poste novamente..
Cada provedor você pode encontrar uma surpresa.. Normalmente você só precisa alterar as configurações (porta, formato do nome do usuário e coisas do tipo) corretamente.. Mas, nunca se sabe..
Abraço!
André Alves de Lima
Microsoft MVP - Client App Dev
Visite o meu site: http://www.andrealveslima.com.br
Me siga no Twitter: @andrealveslima -
-
Se voce estiver usando o OpenPop, como sugiriu o Andre, entao segue um exemplo:
var client = new Pop3Client(); try { client.Connect("MailServerName", Port_Number, UseSSL); //UseSSL true or false client.Authenticate("UserID", "password"); var messageCount = client.GetMessageCount(); var Messages = new List<Message>(messageCount); for (int i = 0;i < messageCount; i++) { Message getMessage = client.GetMessage(i + 1); Messages.Add(getMessage); } foreach (Message msg in Messages) { foreach (var attachment in msg.FindAllAttachments()) { string filePath = Path.Combine(@"C:\Attachment", attachment.FileName); if(attachment.FileName.Equals("blabla.pdf")) { FileStream Stream = new FileStream(filePath, FileMode.Create); BinaryWriter BinaryStream = new BinaryWriter(Stream); BinaryStream.Write(attachment.Body); BinaryStream.Close(); } } } } catch (Exception ex) { Console.WriteLine("", ex.Message); } finally { if (client.Connected) client.Dispose(); }
fonte:http://stackoverflow.com/questions/10317411/how-to-save-email-attachment-using-openpop
att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------