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;
}