Ola. Gostaria de saber se tem como fazer um programa em java para alerta de e-mail. No caso, eu tenho um programa que manda e-mail e tudo mais, só que eu precisava que, quando a pessoa recebesse o e-mail, além do e-mail, iria um alerta de aviso “Seu e-mail chegou” bem no meio da tela do computador (tipo uma pop-up ou estilo quando você está no msn e recebe um e-mail). Teria como fazer isto??
[quote=marcus.rodrigues]Ola. Gostaria de saber se tem como fazer um programa em java para alerta de e-mail. No caso, eu tenho um programa que manda e-mail e tudo mais, só que eu precisava que, quando a pessoa recebesse o e-mail, além do e-mail, iria um alerta de aviso “Seu e-mail chegou” bem no meio da tela do computador (tipo uma pop-up ou estilo quando você está no msn e recebe um e-mail). Teria como fazer isto??
Muito obrigado![/quote]
Isso é mais chato que parece; e se pensar bem, você não precisa disso.
Por exemplo, se o destinatário é alguém que está usando o MS Outlook ou o Lotus Notes ou algum outro software corporativo de email, esse tal software já faz isso (mostrar o aviso de recebimento de nova mensagem).
Se o destinatário é um endereço do Google Mail ou do Yahoo Mail e se ele tiver o Google Toolbar ou o Yahoo Toolbar e se estiver configurado para dar avisos de email, isso também ocorre. Acho que o Microsoft HotMail também deve ter algum recurso parecido (sorry, nunca tive uma conta no Hotmail nem no MSN então não sei como e se funciona.)
Em outros casos, você precisa fazer um software que fique varrendo constantemente a caixa postal do usuário (e pode acreditar, amigo, isso é bem chato de fazer, porque é diferente para cada provedor de email, e pode até ser que não seja possível fazer isso), e inspecionando se chegou o tal email de confirmação. Isso quer dizer que vai ser um software bem intrometido e talvez muito pesado, se você resolver fazer em Java.
Caso queira fazer isso , e necessario fazer um cliente pop3 para ficar lendo sua caixa de mensagens toda hora . Da um pouco de trabalho fazer , mas voce vai aprender muitas coisa relacionadas a redes . Busque por client pop3 no google , de uma olhada neste exemplo http://www.inf.u-szeged.hu/~bilickiv/h_op/jegyzetek/client_socket.html . Flw
hum…isso tb poderia ser uma boa, mas é o seguinte: Eu só quero que apareça essa pop-up quando receber um e-mail específico (ex: so apareça msg quando r eceber e-mail de abc@jjj.com.br) entenderam?
No caso, n precisaria ficar atualizando o e-mail de tempo em tempo…apenas ir uma pop-up junto com o e-mail escolhido para isso.
É que eu vou utilizar o programa pra eu mandar o e-mail e um conhecido meu receber, entao eu que enviaria a msg com o pup-up…
Bom, obrigado pelas ajudas!! Mas se derem para me ajudar novamente eu agradeço!
Nesse caso vc teria que combinar um regex com o leitor do pop3, que verficaria se foi de tal origem , mas seria inevitável a verificação periódica do e-mail… Pensando que o e-mail seria conferido pelo cliente.
Por outro lado, como alternativa, você arruma um servidor, que fará o trabalho de verificar X e-mails pop3, e avisar ao cliente que chegaram os e-mails que ele espera tanto…Onerando menos a máquina do cliente.
SE pensar até mesmo usando ajax vc consegue esse efeito(talvez até de forma mais simples)
Marcus, agora entendi o que você quer. O que você quer é saber se uma mensagem foi lida pelo destinatário.
Havia um tempo em que isso era relativamente fácil de fazer - bastava você pôr um campo adicional no cabeçalho do email ( “Return-Receipt-To:” ) e o software para ler emails já lhe mandava um email de “recibo” de volta. Hoje em dia, as pessoas usam web mails e a maior parte dos web mails não se digna a responder esses recibos; ou então você usa um Outlook ou um Thunderbird ou um Lotus Notes, que ficam lhe perguntando se você quer mandar um recibo de volta ou não, em vez de mandarem automaticamente.
É o seguinte: eu trabalho em uma empresa de cobrança (telemarketing ativo). Os cobradores abrem chamado para pagamentos, acordos, etc com os clientes. Mas, as vezes, um cliente chega no banco e liga pra gente avisando que quer receber o boleto via e-mail ou fax naquele exato momento. Porém, quem recebe esta ligação é o cobrador e ñ minha equipe do data center/contabilidade ( no caso a gente que envia o boleto depois de receber a solicitação). O problema é que demora um pouco pra gente ler os e-mails e tals…isso acaba prejudicando o serviço da empresa…Então minha equipe decidiu criar um programa (ou pegá-lo pronto) para, quando um cobrador receber esta ligação, ele mandar um e-mail nos avisando, mas, a gente precisa de algum alerta dizendo “e-mail com urgencia”, pra parar tudo que está fazendo e priorizar esta tarefa. Então por isso queria que o e-mail, além do conteúdo, viesse com um alerta, que de preferência aparecesse uma janela de aviso no meio da tela do computador. Agora ficou mais claro minha situação ne?? Se puderem continuar me ajudando eu agradeço!!
Bom criar um programa não é necessáriamente uma solução… existe como definir prioridades aos e-mails…
porém como não é isso que você parece querer. .eu acho legal, você colocar um serviço em java que fique lendo os e-mails e quando tiver um que seja urgente como é esse caso. Ele envia uma mensagem para o receptor de tal menságem (ele teria que ter os ips de cada um associados ao e-mail ou algo do genero, na verdade teria que ser mais complexo, teria que cada cliente avisar que está online e dizer o seu e-mail e IP de tempos em tempos). Quando esse serviço percebece que existe um e-mail com características de urgÊncia, ele enviaria uma menságem para o atendente que teria instalado na sua máquina um programa java cliente preparado para receber esse tipo de mensagem. Assim ele reagiria informando com algum barulho ou pop up…
Bom eu nunca fiz também, mas se fosse fazer, iria procurar tutoriais como fazer comunicação utilizando socket, aplicações swing(para dar os alertas), e sobre o pop3 para ler os e-mails no servidor.Que também tem uma biblioteca !
mando por esse aqui manda tudo certinho mas nao sei como fazer para ler os email
private String mailSMTPServer;
private String mailSMTPServerPort;
private File arquivo=null;
private String from="sua conta@gmail.com";
private String senha="sua senha";
Email(String mailSMTPServer, String mailSMTPServerPort) {
this.mailSMTPServer = mailSMTPServer;
this.mailSMTPServerPort = mailSMTPServerPort;
}
public void Email( String to, String subject, String message) {
Properties props = new Properties();
props.put("mail.transport.protocol", "smtp"); //define protocolo de envio como SMTP
props.put("mail.smtp.starttls.enable","true");
props.put("mail.smtp.host", mailSMTPServer); //server SMTP do GMAIL
props.put("mail.smtp.auth", "true"); //ativa autenticacao
props.put("mail.smtp.user", from); //usuario ou seja, a conta que esta enviando o email (tem que ser do GMAIL)
props.put("mail.debug", "true");
props.put("mail.smtp.port", mailSMTPServerPort); //porta
props.put("mail.smtp.socketFactory.port", mailSMTPServerPort); //mesma porta para o socket
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.socketFactory.fallback", "false");
SimpleAuth auth = null;
auth = new SimpleAuth ("seuusuarioparalogin","suasenhaparalogin");
Session session = Session.getDefaultInstance(props, auth);
session.setDebug(true); //Habilita o LOG das ações executadas durante o envio do email
//Objeto que contém a mensagem
Message msg = new MimeMessage(session);
try {
//Setando o destinatário
msg.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
//Setando a origem do email
msg.setFrom(new InternetAddress(from));
//Setando o assunto
msg.setSubject(subject);
//Setando o conteúdo/corpo do email
msg.setContent(message,"text/plain");
} catch (Exception e) {
System.out.println(">> Erro: Completar Mensagem");
e.printStackTrace();
}
Transport tr;
try {
tr = session.getTransport("smtp"); //define smtp para transporte
tr.connect(mailSMTPServer, "fabiodurgante", senha);
msg.saveChanges();
tr.sendMessage(msg, msg.getAllRecipients());
JOptionPane.showMessageDialog(this, "Email Send success", "Mensagem", JOptionPane.INFORMATION_MESSAGE);
arquivo=null;
tr.close();
} catch (Exception e) {
JOptionPane.showMessageDialog(this, "Erro ao enviar Email", "ERRO", JOptionPane.ERROR_MESSAGE);
// TODO Auto-generated catch block
System.out.println(">> Erro: Envio Mensagem");
e.printStackTrace();
}
}
class SimpleAuth extends Authenticator {
public String username = null;
public String password = null;
public SimpleAuth(String user, String pwd) {
username = user;
password = pwd;
}
}
baseado nisso ai como poeria fazer para ler email ???????? esta mandando tudo certo
[quote=marcus.rodrigues]Esse código que você mandou manda alerta pra pesso junto com o e-mail ou só manda o e-mail??
Obrigado![/quote]
Amigo, você já percebeu que a pessoa que vai receber o email tem de ter um programa que fica inspecionando a caixa postal e dá o tal alerta? Ou seja, você não deve se preocupar com isso.
(Só para pensar um pouco - pensar não dói. Imagine se você fosse um cara daqueles que fazem milhões e milhões de mensagens de spam. Se houvesse uma forma de o spammer ficar fazendo um monte de alertas no seu micro sem ele ter de instalar programa nenhum, você não iria chamar um matador de aluguel para eliminá-lo? )