analytics

jueves, 26 de octubre de 2017

Java enviar email desde codigo ejemplo gmail



Para ver una explicación extendida de este artículo, accede a la versión ampliada.
Vamos a ver cómo enviar emails desde Java con un ejemplo muy sencillo. La dependencia que vamos a emplear podeis encontrarla aquí. Como veis, utilizaremos el paquete javax.mail. Utilizando el SMTP indicado y el PUERTO indicado, funciona correctamente para cuentas de Gmail. Aunque cuidado, es posible que haya que indicar a Gmail en las opciones de personalización que se va a emplear externamente esta cuenta, sino, quizás no nos permita utilizarla desde código.


import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

....

    public static final String USER = "...???....@gmail.com";
    public static final String PASS = ".....???....";
    public static final String HOST = "localhost";
    public static final String SMTP = "smtp.gmail.com";
    public static final String port = "465";

 public static boolean enviarMail(String from, String to, String subject, String text) {

        Properties props = new Properties();
        props.put("mail.smtp.host", SMTP);
        props.put("mail.smtp.socketFactory.port", port);
        props.put("mail.smtp.socketFactory.class",
                "javax.net.ssl.SSLSocketFactory");
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.port", port);
  
        Session session = Session.getDefaultInstance(props,
            new javax.mail.Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(USER,PASS);
                }
            });
  
        try {
  
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress(from));
            message.setRecipients(Message.RecipientType.TO,
                    InternetAddress.parse(to));
            message.setSubject(subject);
            message.setText(text);
  
            Transport.send(message);
  
            System.out.println("Sent mail to "+to);
                        return true;
  
        } catch (MessagingException e) {
                    e.printStackTrace();
                        return false;
        }
    }

....

Java dispositivos de audio



Vamos a poner unas sencillas funciones que nos listarán los dispositivos de audio del sistema, para devolvernos o bien una lista de nombres del dispositivo, o bien una lista de mezcladores del sistema, (para poder después operar con ellos como proceda). No hay mucho más que explicar. Listo para un copy/paste y que sea de utilidad.

    
import java.util.ArrayList;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Line;
import javax.sound.sampled.Mixer;
import javax.sound.sampled.SourceDataLine;
import javax.sound.sampled.TargetDataLine;

    
    public static ArrayList<String> getInputDevices(){
        
        ArrayList<String> retVal = new ArrayList<>();
        Mixer.Info[] mixerInfo = AudioSystem.getMixerInfo();
        Line.Info targetDLInfo = new Line.Info(TargetDataLine.class);       

        for (int cnt = 0; cnt < mixerInfo.length; cnt++) {
            Mixer currentMixer = AudioSystem.getMixer(mixerInfo[cnt]);

            if (currentMixer.isLineSupported(targetDLInfo)) {
                retVal.add(mixerInfo[cnt].getName());                
            }            
        }
        return retVal;
    }
    

    public static ArrayList<String> getOutputDevices(){
        
        ArrayList<String> retVal = new ArrayList<>();
        Mixer.Info[] mixerInfo;
        mixerInfo = AudioSystem.getMixerInfo();        
        Line.Info sourcetDLInfo = new Line.Info(SourceDataLine.class);

        for (int cnt = 0; cnt < mixerInfo.length; cnt++) {
            Mixer currentMixer = AudioSystem.getMixer(mixerInfo[cnt]);
            if (currentMixer.isLineSupported(sourcetDLInfo)) {
                retVal.add(mixerInfo[cnt].getName());
            }
        }
        return retVal;
    }

    public static ArrayList<Mixer> getInputDevicesMixer(){
        
        ArrayList<Mixer> retVal = new ArrayList<>();
        Mixer.Info[] mixerInfo;
        mixerInfo = AudioSystem.getMixerInfo();
        Line.Info targetDLInfo = new Line.Info(TargetDataLine.class);       

        for (int cnt = 0; cnt < mixerInfo.length; cnt++) {
            Mixer currentMixer = AudioSystem.getMixer(mixerInfo[cnt]);

            if (currentMixer.isLineSupported(targetDLInfo)) {
                retVal.add(currentMixer);                
            }            
        }
        return retVal;
    }
    

    public static ArrayList<Mixer> getOutputDevicesMixer(){
        
        ArrayList<Mixer> retVal = new ArrayList<>();
        Mixer.Info[] mixerInfo = AudioSystem.getMixerInfo();        
        Line.Info sourcetDLInfo = new Line.Info(SourceDataLine.class);

        for (int cnt = 0; cnt < mixerInfo.length; cnt++) {
            Mixer currentMixer = AudioSystem.getMixer(mixerInfo[cnt]);
            if (currentMixer.isLineSupported(sourcetDLInfo)) {
                retVal.add(currentMixer);
            }
        }
        return retVal;
    }