Home / Programmazione / Java / Inviare email da Yahoo con Java
Mattepuffo

Inviare email da Yahoo con Java

Inviare email da Yahoo con Java

Se non abbiamo un dominio "conosciuto" e "attendibile" (notare le virgolette), potrebbe essere utile inviare email da un nostro account di posta (Gmail, Hotmail, Yahoo, ecc).

Oggi vediamo come inviare email usando il nostro account Yahoo e Java.

Ovviamente con qualche piccola modifica, potete impostare il codice per usare Hotmail o altro provider.

Comunque, prima di cominciare dovete scaricare la libreria JavaMail da qui, ed inserirle nel vostro progetto.

A questo punto vediamo il codice:

import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class Mail {

    private static final String SMTP_HOST_NAME = "smtp.mail.yahoo.com";
    private static final String SMTP_AUTH_USER = "YOUR_EMAIL";
    private static final String SMTP_AUTH_PWD = "YOUR_PASSWORD";
    private static final String[] TO_ADDRESS = {"EMAIL_TO"};
    private static final String[] CC_ADDRESS = null;

    public static void send() throws AddressException, MessagingException {
        Properties props = System.getProperties();
        props.put("mail.smtp.socketFactory.port", "465");
        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        props.put("mail.smtp.host", SMTP_HOST_NAME);
        props.put("mail.smtp.auth", true);
        props.put("mail.smtp.ssl.enable", "true");
        Session session = Session.getDefaultInstance(props, null);
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress(SMTP_AUTH_USER));
        InternetAddress[] addTo = new InternetAddress[TO_ADDRESS.length];
        for (int i = 0; i < addTo.length; i++) {
            addTo[i] = new InternetAddress(TO_ADDRESS[i]);
        }
        message.setRecipients(Message.RecipientType.TO, addTo);
        if (CC_ADDRESS != null) {
            InternetAddress[] addCc = new InternetAddress[CC_ADDRESS.length];
            for (int i = 0; i < addCc.length; i++) {
                addCc[i] = new InternetAddress(CC_ADDRESS[i]);
            }
            message.setRecipients(Message.RecipientType.CC, addCc);
        }
        message.setSubject("Email da Yahoo!");

        Transport transport = session.getTransport("smtp");
        transport.connect(SMTP_HOST_NAME, SMTP_AUTH_USER, SMTP_AUTH_PWD);
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();
    }

}

Le destinazioni (TO e CC) sono entrambi array, impostati in maniera "fissa" da codice; per fare un esempio di test va più che bene.

Nella parte iniziale del codice impostiamo alcuni settaggi; sotto cicliamo sui due array per impostari i destinari.

Sotto eseguiamo la connessione con le credenziali, ed inviamo l'email.

Enjoy!