IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Java Discussion :

problème avec le smtp host


Sujet :

API standards et tierces Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 35
    Points : 18
    Points
    18
    Par défaut problème avec le smtp host
    Bonjour à tous,

    J'ai une appli web en Java ou je dois rajouter un bouton permettant d'envoyer un email avec un parametre recupéré dans l'appli.

    Pour cela, j'ai utilisé javamail et spring avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    JavaMailSenderImpl sender = new JavaMailSenderImpl();
     
    sender.setHost("smtp.mail.yahoo.fr");    
     
     MimeMessage message = sender.createMimeMessage();
     
    MimeMessageHelper helper = new MimeMessageHelper(message);
     
    helper.setFrom("mymail@yahoo.fr");        
    helper.setTo("mymail@yahoo.fr");        
    helper.setSubject("subject");    
    helper.setText("Hello, it works!");        
     
    sender.send(message);
    le résultat est que j'ai l'erreur suivante :

    Could not connect to SMTP host: smtp.mail.yahoo.fr, port: 25;

    j'essaye donc de faire un essai pour envoyer un email depuis ma boite yahoo vers la même boite sans passer par l'email de la société ; j'utilise donc smtp.mail.yahoo.fr

    Est ce que mon code est juste?

    l'erreur à propos du SMTP est due à quoi? Merci

  2. #2
    Membre averti Avatar de aJavaDeveloper
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 248
    Points : 300
    Points
    300
    Par défaut
    Ton problème provient du fait que le serveur SMTP de Yahoo ne tourne par sur le port 25 mais sur le port 465.
    Tu dois donc ajouter l'instruction suivante dans ton code :
    De plus, ce serveur est sécurisé par SSL.
    Cette mesure de sécurité doit être gérée dans ton code.
    Pour ce faire, voici un lien qui pourrait t'aider : http://forum.java.sun.com/thread.jsp...sageID=3083565.
    Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie.
    Confucius

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 35
    Points : 18
    Points
    18
    Par défaut
    J'ai encore ce message d'erreur :

    DEBUG SMTP: trying to connect to host "smtp.mail.yahoo.fr", port 465, isSSL false

  4. #4
    Membre averti Avatar de aJavaDeveloper
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 248
    Points : 300
    Points
    300
    Par défaut
    Je pense que ta configuration n'est pas correcte car le flag isSSL devrait être à true (étant donné que le serveur mail de Yahoo est sécurisé par SSL).
    Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie.
    Confucius

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 35
    Points : 18
    Points
    18
    Par défaut
    Y'a t il des erreurs dans cette config et lesquelles ?

    (par rapport à mon message précédent)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Properties props = new Properties();
                  props.put("mail.smtp.host", "smtp.mail.yahoo.fr");
                  props.put("mail.smtp.auth", "true");
                  props.put("mail.debug", "true");
                  props.put("mail.smtp.port", "465");
                  props.put("mail.smtp.socketFactory.port", "465");
                  props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
                  props.put("mail.smtp.socketFactory.fallback", "false");

  6. #6
    Membre averti Avatar de aJavaDeveloper
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 248
    Points : 300
    Points
    300
    Par défaut
    N'aurais-tu pas oublier d'exécuter l'instruction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sender.setJavaMailProperties(props);
    Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie.
    Confucius

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 35
    Points : 18
    Points
    18
    Par défaut
    Ce que j'ai fait c'est reprendre l'exemple au lien indiqué
    http://forum.java.sun.com/thread.jsp...sageID=3083565
    et l'adapter à mon cas

    je n'y vois pas d'initialisation des properties avec sender... mais juste
    Properties props = new Properties();

    j'ai repris axactement le même code (adapté)

    si j'ai bien compris le code serait celui là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    import java.security.Security;
    import java.util.Properties;
     
    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 class YahooTest {
     
        private static final String SMTP_HOST_NAME = "smtp.mail.yahoo.fr";
        private static final String SMTP_PORT = "465";
        private static final String emailMsgTxt = "Test Message Contents";
        private static final String emailSubjectTxt = "A test from yahoo";
        private static final String emailFromAddress = "myaddress@yahoo.fr";
        private static final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
        private static final String[] sendTo = {"myaddress@yahoo.fr"};
     
     
        public static void main(String args[]) throws Exception {
     
            Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
     
            new YahooTest().sendSSLMessage(sendTo, emailSubjectTxt,
                    emailMsgTxt, emailFromAddress);
            System.out.println("Sucessfully Sent mail to All Users");
        }
     
        public void sendSSLMessage(String recipients[], String subject,
                String message, String from) throws MessagingException {
            boolean debug = true;
     
            Properties props = new Properties();
            props.put("mail.smtp.host", SMTP_HOST_NAME);
            props.put("mail.smtp.auth", "true");
            props.put("mail.debug", "true");
            props.put("mail.smtp.port", SMTP_PORT);
            props.put("mail.smtp.socketFactory.port", SMTP_PORT);
            props.put("mail.smtp.socketFactory.class", SSL_FACTORY);
            props.put("mail.smtp.socketFactory.fallback", "false");
     
            Session session = Session.getDefaultInstance(props,
                    new javax.mail.Authenticator() {
     
                        protected PasswordAuthentication getPasswordAuthentication() {
                            return new PasswordAuthentication("xxxxxx", "xxxxxx");
                        }
                    });
     
            session.setDebug(debug);
     
            Message msg = new MimeMessage(session);
            InternetAddress addressFrom = new InternetAddress(from);
            msg.setFrom(addressFrom);
     
            InternetAddress[] addressTo = new InternetAddress[recipients.length];
            for (int i = 0; i < recipients.length; i++) {
                addressTo[i] = new InternetAddress(recipients[i]);
            }
            msg.setRecipients(Message.RecipientType.TO, addressTo);
     
            // Setting the Subject and Content Type
            msg.setSubject(subject);
            msg.setContent(message, "text/plain");
            Transport.send(msg);
        }
    }
    avec mon adresse email yahoo à la place de myaddress@yahoo.fr

    dans
    return new PasswordAuthentication("xxxxxx", "xxxxxx"); il faut indiquer
    le mot de passe de l'accès à la boite, répété.

    Ou serait l'erreur ?!

  8. #8
    Membre averti Avatar de aJavaDeveloper
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 248
    Points : 300
    Points
    300
    Par défaut
    dans
    return new PasswordAuthentication("xxxxxx", "xxxxxx");
    il faut indiquer le mot de passe de l'accès à la boite, répété.
    Ce que tu dis est faux.
    Voici ce que dit la JavaDoc : http://java.sun.com/products/javamai...ntication.html.
    Le premier paramètre est le nom d'utilisateur, le deuxième, le mot de passe.
    Si ça ne fonctionne toujours pas après cette correction, essaie de t'inspirer du code suivant : http://rademailhosting.com/javamail/javamailssl.html.
    Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie.
    Confucius

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 35
    Points : 18
    Points
    18
    Par défaut
    Merci pour ta réponse.

    J'ai effectivement fait une erreur en mettant deux fois le mot de passe. Cela dit, j'ai aussi essayé avec user et mot de passe et ca ne marche toujours pas. Le dernier lien que tu as donné me semble correspondre au précédent et je n'y vois pas de différence (ca ne veut pas dire qu'il y en a pas).

    Je pense qu'il est préférable d'utiliser le serveur et une boite email locaux (de la société) et non un webmail. C'est moins compliqué en tout cas.

    A ce propos, il faut vraiment demander à l'administrateur le nom du serveur smtp ou bien il y a un moyen de le savoir autrement via un outlook configuré ou une commande système par exemple ?

  10. #10
    Membre averti Avatar de aJavaDeveloper
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 248
    Points : 300
    Points
    300
    Par défaut
    Je pense qu'il est préférable d'utiliser le serveur et une boite email locaux (de la société) et non un webmail. C'est moins compliqué en tout cas.
    C'est clair que, si tu as la possibilité, utilise plutôt le serveur mail de ton entreprise ou alors un serveur mail que tu as installé localement.
    A ce propos, il faut vraiment demander à l'administrateur le nom du serveur smtp ou bien il y a un moyen de le savoir autrement via un outlook configuré ou une commande système par exemple ?
    Si ton outlook est configuré pour le serveur mail que tu désires utiliser, tu peux identifier ce serveur de la façon suivante :
    Outils
    > Afficher ou modifier les comptes de messagerie existants
    > [Sélectionner le compte dans la liste]
    > Modifier
    Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie.
    Confucius

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 35
    Points : 18
    Points
    18
    Par défaut
    autre question :

    Pour envoyer un email depuis une application, faut il avoir forcément une boite email d'envoi (addressFrom) ou peut on envoyer un texte quelconque avec juste préciser le destinataire. Comment le faire dans ce cas? Merci

  12. #12
    Membre averti Avatar de aJavaDeveloper
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 248
    Points : 300
    Points
    300
    Par défaut
    Non, tu ne dois pas nécessairement spécifier un émetteur réel lorsque tu envoies un e-mail.
    Tu peux ainsi écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    helper.setFrom(test@dummy.com);
    même si l'adresse test@dummy.com n'existe pas.
    Tu peux même décider de ne pas spécifier l'émetteur du mail (mais ce dernier risque alors d'être considéré comme un spam...).
    Enfin, si tu choisis de spécifier l'émetteur du mail, veille à ce que le format de l'adresse que tu utilises soit valide (<...>@<...>.<...>).
    Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie.
    Confucius

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 35
    Points : 18
    Points
    18
    Par défaut
    cela veut dire que je peux utiliser ma boite email yahoo par exemple pour envoyer un email à la même boite, le texte envoyé sera entré dans mon code java et en spécifiant le serveur smtp de ma société?

    techniquement, quelle est la différence dans le cas d'un réseau de société de passer par internet (spécifier un serveur smtp yahoo) ou bien un serveur smtp du réseau de l'entreprise pour envoyer sur une boite email.

    Peux tu citer les étapes avec la différence dans les deux cas (en incluant la question de la sécurité) ? Merci

  14. #14
    Membre averti Avatar de aJavaDeveloper
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 248
    Points : 300
    Points
    300
    Par défaut
    J'ai déjà expliqué les étapes de l'envoi d'un e-mail précédemment :
    Citation Envoyé par aJavaDeveloper
    Lorsque tu envoies un e-mail via un client mail (Outlook, par exemple), les étapes sont les suivantes :
    1. ton client mail envoie ton e-mail, via SMTP, à ton serveur mail -- c'est ce serveur que tu renseignes dans ton code Java
    2. ton serveur mail envoie alors ton e-mail, toujours via SMTP, au serveur mail qui héberge la boîte aux lettres du destinataire de ton e-mail
    3. enfin, c'est le destinataire de ton e-mail qui est responsable de venir récupérer ton e-mail sur son serveur; pour ce faire, il peut utiliser un protocole comme POP3, IMAP ou HTTP (s'il s'agit d'un web mail)
    Je pense que la question de la sécurité ne change rien à ces étapes.
    La seule différence est l'utilisation du protocole SSL comme protocole sous-jacent au protocole SMTP (ce qui donne du SMTPS).

    techniquement, quelle est la différence dans le cas d'un réseau de société de passer par internet (spécifier un serveur smtp yahoo) ou bien un serveur smtp du réseau de l'entreprise pour envoyer sur une boite email.
    Techniquement, je crois qu'il n'y a aucune différence.
    Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie.
    Confucius

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 35
    Points : 18
    Points
    18
    Par défaut
    le sens de ma question était :

    Si moi je n'arrive pas à envoyer directement mon email sur le serveur smtp de yahoo, comment le serveur smtp de la société arriverait il sachant que le protocole est le même (smtp)?

    La différence est elle dans les paramètres d'adressage et de sécurité qui serait erronés ou manquants dans mon programme et non depuis le serveur de la société?

    mon appli serait plus "inconnue" sécurité parlant que le serveur smtp de la société qui aura ainsi plus de facilité d'accès?

  16. #16
    Membre averti Avatar de aJavaDeveloper
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 248
    Points : 300
    Points
    300
    Par défaut
    Si moi je n'arrive pas à envoyer directement mon email sur le serveur smtp de yahoo, comment le serveur smtp de la société arriverait il sachant que le protocole est le même (smtp)?
    Je pense (mais sans être certain) qu'il ne faut pas confondre envoi d'un e-mail et relai d'un e-mail...
    Quand tu tentes d'entrer directement en contact avec le serveur SMTP de Yahoo, c'est pour envoyer un e-mail.
    Lorsque le serveur SMTP d'une société tente d'entrer en contact avec le serveur SMTP de Yahoo, c'est pour relayer un e-mail.
    La différence se situe sûrement à ce niveau là...
    Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie.
    Confucius

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 35
    Points : 18
    Points
    18
    Par défaut
    Ma société utilise Lotus Notes et je voudrais savoir le nom du serveur smtp à partir de ce logiciel (pour envoyer un email via JavaMail). Quel est donc le moyen d'avoir cette information dans ce cas?

    Il parrait que dans ce cas la messagerie est gérée autrement (Domino), comment ?

    ANY IDEA ?!!!!!!!!!!!!!!!!!!!!!!

Discussions similaires

  1. Problème avec mysql.host
    Par LePhasme dans le forum Installation
    Réponses: 4
    Dernier message: 05/03/2012, 10h23
  2. [javamail] problème avec smtp host
    Par maaalek dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 02/08/2009, 22h17
  3. problème avec le fichier HOSTS
    Par Tsunamy dans le forum Windows XP
    Réponses: 4
    Dernier message: 26/05/2009, 10h35
  4. Problème avec Net::SMTP
    Par Dosseh dans le forum Programmation et administration système
    Réponses: 4
    Dernier message: 20/01/2009, 18h24
  5. SMTP : Problème avec l'envoi de pièces jointes
    Par Sunsawe dans le forum Développement
    Réponses: 2
    Dernier message: 13/04/2007, 00h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo