Visualizzazione dei risultati da 1 a 6 su 6

Discussione: JavaMail

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    2

    JavaMail

    Vorrei inviare dei messaggi tramite un'applicazione java. Ho creato questa classe, ma cosa sbaglio? Non invia niente a yahoo mail.

    codice:
    import java.util.*;
    import javax.mail.*;
    import javax.mail.internet.*;
    import javax.activation.*;
     
    public class Invio {
        public static void main(String[] args) 
        {
            String to="prova@yahoo.it";
            String from="prova@yahoo.it";
            String host="smtp.mail.yahoo.com";
            Properties props = new Properties();
            props.put("mail.smtp.host",host);
            props.put("mail.debug","true");
            Session session=Session.getInstance(props);
            try {
                Message msg=new MimeMessage(session);
                msg.setFrom(new InternetAddress(from));
                InternetAddress[] address ={new InternetAddress(to)};
                msg.setRecipients(Message.RecipientType.TO, address);
                msg.setSubject("An Hello World e-mail!");
                msg.setSentDate(new Date());
                msg.setText("Hello world!");
                Transport.send(msg);
            }
            catch (MessagingException mex) {
                mex.printStackTrace();
            }
        }
    }
    riguardo a yahoo ho trovato questo: clicca qui

    Gli errori che mi dice sono:

    com.sun.mail.smtp.SMTPSendFailedException: 530 authentication required - for help go to http://help.yahoo.com/help/us/mail/pop/pop-11.html

    at com.sun.mail.smtp.SMTPTransport.issueSendCommand(S MTPTransport.java:2057)
    at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTrans port.java:1580)
    at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTr ansport.java:1097)
    at javax.mail.Transport.send0(Transport.java:195)
    at javax.mail.Transport.send(Transport.java:124)
    at Invio.main(Invio.java:24)
    at __SHELL1.run(__SHELL1.java:6)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ e Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Native MethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(De legatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at bluej.runtime.ExecServer$3.run(ExecServer.java:724 )

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: JavaMail

    Originariamente inviato da Duca01
    Vorrei inviare dei messaggi tramite un'applicazione java. Ho creato questa classe, ma cosa sbaglio? Non invia niente a yahoo mail.
    Ma hai una qualche eccezione? O il programma va tutto liscio ma non arriva nulla? E comunque hai attivato il debug, vedi qualcosa di sospetto?
    Infine (cosa importante): non ho esperienza con yahoo.it ma il suo SMTP richiede autenticazione?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    yahoo.it richiede autenticazione. Inoltre sarebbe più corretto usare smtp.mail.yahoo.it ed in ogni caso, conviene usare l'smtp fornito a corredo con la connessione internet. yahoo.com ha da tempo sospeso la possibilità di utilizzare pop/smtp se non sugli account a pagamento.

    Sul sito-guida dedicato a JavaMail, nonché nella celeberrima pillola di LeleFT (tra i link in rilievo) dedicata a Java e Mail trovi tutte le info ed esempi per scrivere un tuo Authenticator - o semplicemente fare un copia-incolla sistemando i parametri).

    Come suggerito dall'autorevolissimo andbin, attiva il comodo debug fornito da JavaMail, così vedi esattamente che cosa sta facendo il tuo programma passo passo
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: JavaMail

    Originariamente inviato da Duca01
    com.sun.mail.smtp.SMTPSendFailedException: 530 authentication required - for help go to http://help.yahoo.com/help/us/mail/pop/pop-11.html
    Ok, il che mi pare inequivocabile: richiede autenticazione.

    Secondo la documentazione di JavaMail, visto che hai usato il send static di Transport allora la soluzione è: innanzitutto impostare la property mail.smtp.auth a "true" e poi implementare un javax.mail.Authenticator da passare all'altra versione di Session.getInstance.

    Questo Authenticator è una semplice classe che devi estendere per ridefinire il metodo:
    public PasswordAuthentication getPasswordAuthentication()
    nel cui corpo basta istanziare e restituire un PasswordAuthentication con username e password.

    La versione di getInstance è:
    getInstance(Properties props, Authenticator authenticator)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    2

    Re: Re: JavaMail

    Originariamente inviato da andbin
    Ok, il che mi pare inequivocabile: richiede autenticazione.

    Secondo la documentazione di JavaMail, visto che hai usato il send static di Transport allora la soluzione è: innanzitutto impostare la property mail.smtp.auth a "true" e poi implementare un javax.mail.Authenticator da passare all'altra versione di Session.getInstance.

    Questo Authenticator è una semplice classe che devi estendere per ridefinire il metodo:
    public PasswordAuthentication getPasswordAuthentication()
    nel cui corpo basta istanziare e restituire un PasswordAuthentication con username e password.

    La versione di getInstance è:
    getInstance(Properties props, Authenticator authenticator)
    ho fatto questo ora?

    codice:
    import java.util.*;
    import javax.mail.*;
    import javax.mail.internet.*;
    import javax.activation.*;
    import javax.mail.Authenticator;
    public class Invio {
        public static void main(String[] args) 
        {
            String to="prova@yahoo.it";
            String from="prova@yahoo.it";
            String host="smtp.mail.yahoo.com";
            Properties props = new Properties();
            props.put("mail.smtp.host",host);
            props.put("mail.debug","true");
            props.put("mail.smtp.auth","true");
            Session session=Session.getInstance(props);
            try {
                Message msg=new MimeMessage(session);
                msg.setFrom(new InternetAddress(from));
                InternetAddress[] address ={new InternetAddress(to)};
                msg.setRecipients(Message.RecipientType.TO, address);
                msg.setSubject("An Hello World e-mail!");
                msg.setSentDate(new Date());
                msg.setText("Hello world!");
                Transport.send(msg);
            }
            catch (MessagingException mex) {
                mex.printStackTrace();
            }
        }
    }

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: JavaMail

    Originariamente inviato da Duca01
    ho fatto questo ora?
    Devi implementare il Authenticator, creare un oggetto e passarlo come 2° argomento del Session.getInstance.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.