domingo, 1 de setembro de 2013

JavaMail



É uma framework para envio, recebimento e manipulação de e-mais, com implementações para IMAP e SMTP.

Ambiente básico para utilização do JavaMail:
JDK (Ambiente de desenvolviemento do JDK)
JavaMail (mail.jar), JAF (activation.jar)
Qmail (servidor de mails)
import javax.activation.*;
import javax.mail.internet.*;
import java.util.*;
import javax.mail.*;
public class smtp_jm
{         
            public static void main(String args[]) throws Exception
            {
                        Properties props = new Properties();
                        props.put("mail.smtp.host", "smtp.mail.yahoo.com.br");
// definicao do host
                        props.put("mail.smtp.auth", "true");
// determina se tera autenticaçao                  
                        Authenticator auth = new SMTPAuthenticator();   // autenticador                          
                        Session s = Session.getInstance(props,auth); 
                        s.setDebug(true); // em caso de nao querer debugaçao suprima esta linha
                        MimeMessage message = new MimeMessage(s);
                        InternetAddress from = new InternetAddress("lilith_nefelin@yahoo.com.br");
                        message.setFrom(from);                       
                        InternetAddress to = new InternetAddress("helloween_salvation@yahoo.com.br");
                        message.addRecipient(Message.RecipientType.TO, to); 
                        message.setSubject("E-Mail enviado a partir do JavaMail.");
                        message.setText("Este é o texto da mensagem enviada através do JavaMail!");
                        Transport.send(message);
            }
}
class SMTPAuthenticator extends Authenticator
{   
            public PasswordAuthentication getPasswordAuthentication()
            {   
                        String username = "lilith_nefelin";   
                        String password = "manuka";   
                        return new PasswordAuthentication(username, password);   
            }   
 }


Para a leitura de e-mails de um servidor que utilize o protocolo POP, é necessário que a mensagem do servidor seja copiada e aberta localmente.
Para um servidor IMAP, nos estaremos trabalhando com o servidor diretamente.


import javax.activation.*;
import javax.mail.internet.*;
import java.util.*;
import javax.mail.*;
public class pop_jm
{         
            public static void main(String args[]) throws Exception
            {
                        String host= "pop.mail.yahoo.com.br";
                        String user= "helloween_salvation";
                        String pass= "manuka";             
                        Properties props = new Properties();
                        Authenticator auth = new SMTPAuthenticator();   // autenticador                          
                        Session session = Session.getDefaultInstance(props,auth);
                        session.setDebug(false); // em caso de nao querer debugaçao suprima esta linha                                    
                        Store store = session.getStore("pop3");
                        store.connect(host,user,pass);               
                        Folder folder = store.getFolder("INBOX");
                        folder.open(Folder.READ_ONLY);            
                        Message message[]= folder.getMessages();
                        System.out.println("\nTotal de Mensagens: "+message.length+"\n");                   
                        // Display from (only first) and subject of messages
                        for (int i=0, n=message.length; i<n; i++)
                        {
                                   System.out.println("From:     "+message[i].getFrom()[0]);
                                   System.out.println("Subject:  "+message[i].getSubject());
                                   System.out.println("Mensagem: "+message[i].getContent());
                        }                     
                        folder.close(false);
                        store.close();
            }
}
class SMTPAuthenticator extends Authenticator
{   
            public PasswordAuthentication getPasswordAuthentication()
            {   
                        String username = "helloween_salvation";   
                        String password = "manuka";   
                        return new PasswordAuthentication(username, password);   
            }   
 }


import javax.activation.*;
import javax.mail.internet.*;
import java.util.*;
import javax.mail.*;
public class smtp_anexo
{         
            public static void main(String args[]) throws Exception
            {
                        Properties props = new Properties();
                        props.put("mail.smtp.host", "smtp.mail.yahoo.com.br"); // definicao do host
                        props.put("mail.smtp.auth", "true"); // determina se tera autenticaçao                  
                        Authenticator auth = new SMTPAuthenticator();   // autenticador                          
                        Session s = Session.getInstance(props,auth); 
                        s.setDebug(true); // em caso de nao querer debugaçao suprima esta linha
                        MimeMessage message = new MimeMessage(s);
                        InternetAddress from = new InternetAddress("lilith_nefelin@yahoo.com.br");
                        message.setFrom(from);                       
                        InternetAddress to = new InternetAddress("helloween_salvation@yahoo.com.br");
                        message.addRecipient(Message.RecipientType.TO, to); 
                        message.setSubject("E-Mail enviado a partir do JavaMail.");
                        message.setText("Este é o texto da mensagem enviada através do JavaMail!");                
// Neste ponto entra os Anexos
                        Multipart multiparts = new MimeMultipart();  // Objeto que compoem todas as partes da mensagem
                        BodyPart corpopart = new MimeBodyPart();
                        corpopart.setText("texto");                    
                        multiparts.addBodyPart(corpopart);
                        DataSource DS = new FileDataSource("c:/testes/thread.java");
                        corpopart.setDataHandler(new DataHandler(DS));
                        corpopart.setFileName("thread.java");
                        multiparts.addBodyPart(corpopart);                    
                        message.setContent(multiparts);
                        Transport.send(message);
            }
}
class SMTPAuthenticator extends Authenticator
{   
            public PasswordAuthentication getPasswordAuthentication()
            {   
                        String username = "lilith_nefelin";   
                        String password = "manuka";   
                        return new PasswordAuthentication(username, password);   
            }   
 }


import javax.activation.*;
import javax.mail.internet.*;
import java.util.*;
import javax.mail.*;
public class listdir
{         
            public static void main(String args[]) throws Exception
            {                     
                        String host= "pop.mail.yahoo.com.br";
                        String user= "helloween_salvation";
                        String pass= "manuka"; 
                        Properties props = new Properties();
                        Authenticator auth = new SMTPAuthenticator(user,pass);   // autenticador             
                        Session session = Session.getDefaultInstance(props,auth);
                        session.setDebug(true); // em caso de nao querer debugaçao suprima esta linha              
                        Store store = session.getStore("pop3");
                        store.connect(host,user,pass);                           
                        Folder root         = store.getDefaultFolder();
                        Folder folders[]= root.list();       
                        for (int k=0;k < folders.length;k++)
                        {
                                   Folder tmp = folders[k];
                                   tmp.open(Folder.READ_ONLY);
                                   System.out.println("Nome Completo: "+tmp.getFullName());
                                   System.out.println("Nome: "+tmp.getName());
                                   System.out.println("Qtde: "+tmp.getMessageCount());
                                   System.out.println("Nao lidas: "+tmp.getUnreadMessageCount());
                                   System.out.println("Novas mensagens: "+tmp.getNewMessageCount());
                                   tmp.close(true);
                        }
                        store.close();
            }
}
class SMTPAuthenticator extends Authenticator
{  
            String username;
            String password;           
            public SMTPAuthenticator(String user, String pass){
                        this.username= user;
                        this.password= pass;
            }
            public PasswordAuthentication getPasswordAuthentication()
            {     
                        return new PasswordAuthentication(username, password);   
            }   
 }



import javax.activation.*;
import javax.mail.internet.*;
import java.util.*;
import javax.mail.*;
public class makedir
{         
            public static void main(String args[]) throws Exception
            {                     
                        String host= "pop.mail.yahoo.com.br";
                        String user= "helloween_salvation";
                        String pass= "manuka"; 
                        Properties props = new Properties();
                        Authenticator auth = new SMTPAuthenticator(user,pass);   // autenticador             
                        Session session = Session.getDefaultInstance(props,auth);
                        session.setDebug(true); // em caso de nao querer debugaçao suprima esta linha              
                        Store store = session.getStore("pop3");
                        store.connect(host,user,pass);                                      
                        Folder novo = store.getFolder("teste");
                        if (!novo.exists())
                                   novo.create(Folder.HOLDS_MESSAGES);              
                        store.close();
            }
}


import java.io.*;
import javax.mail.*;
import javax.mail.internet.*;

public class DeleteMessageExample {
  public static void main (String args[]) throws Exception {
    String host = "pop.ig.com.br";
    String username = "torah_1999";
    String password = "manoel";
    Authenticator auth = new SMTPAuthenticator();   // autenticador  
    // Get session
    Session session = Session.getInstance(System.getProperties(), auth);   
    session.setDebug(false);
    // Get the store
    Store store = session.getStore("pop3");
    store.connect(host, username, password);
    // Get folder
    Folder folder = store.getFolder("INBOX");
    folder.open(Folder.READ_WRITE);
    BufferedReader reader = new BufferedReader (
      new InputStreamReader(System.in));
    // Get directory
    Message message[] = folder.getMessages();
    for (int i=0, n=message.length; i<n; i++) {
       System.out.println(message[i].getSubject());
       System.out.println("Do you want to delete message? [YES to delete]");
       String line = reader.readLine();
       // Mark as deleted if appropriate
       if ("YES".equals(line)) {
         message[i].setFlag(Flags.Flag.DELETED, true);
       }
    }
    // Close connection
    folder.close(true);
    store.close();
  }
}
class SMTPAuthenticator extends Authenticator
{   
            public PasswordAuthentication getPasswordAuthentication()
            {   
                        String username = "torah_1999";   
                        String password = "manoel";   
                        return new PasswordAuthentication(username, password);   
            }   
 }


Recebe mensagens
 
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.security.Security;
import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.*;
import javax.mail.internet.InternetAddress;

public class RecebeMail {
  
    public static void main(String args[]) throws Exception {
      
        Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
      
        new RecebeMail().recebeMSG();
    }
    public void recebeMSG() throws MessagingException {
              
        Properties props = new Properties();
        props.put("mail.pop3.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        props.put("mail.pop3.socketFactory.fallback", "false");
        props.put("mail.store.protocol", "pop3");
  
        Session session = Session.getDefaultInstance(props,null);
        Store store = session.getStore("pop3");
      
        //Estabelece conexão
        store.connect("pop.gmail.com",995, "USUARIO", "SENHA");
      
        //Obtem a pasta e a abre
        Folder folder = store.getFolder("INBOX");
        folder.open(Folder.READ_ONLY);
      
        //Obtem mensagens
        Message msg[] = folder.getMessages();
      
        for (int i = 0; i < msg.length; i++){
            try {
                System.out.println("MENSAGEM:" + i);
                System.out.println("NOME: " + ((InternetAddress) msg[i].getFrom()[0]).getPersonal() + "\n" +
                                   "FROM: " + ((InternetAddress) msg[i].getFrom()[0]).getAddress());
                System.out.println("DATA DE ENVIO: " + msg[i].getSentDate());
                System.out.println("ASSUNTO "+msg[i].getSubject());
                System.out.println("CONTEUDO " +msg[i].getContent());
                System.out.println("FIM DA MENSAGEM: " + i);
            } catch (MessagingException ex) {
                ex.printStackTrace();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
              
        folder.close(false);
        store.close();
    }

}

Nenhum comentário:

Postar um comentário