Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2072 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  envoyer un mail

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

envoyer un mail

n°907422
jeromejans​on
Posté le 25-11-2004 à 09:15:24  profilanswer
 

bonjour,
je voudrais envoyer un mail depuis une servlet
le mail ne contiendra qu'une url, et un peu de texte
je peux utiliser le serveur de messagerie de mon entreprise pour envoyer le mail(smtp)
 
par contre, j'ai commencer a regarder un peu sur le net, et je pense que ca ne me sert a rien d'utiliser l'api JavaMail (beaucoup trop complexes pour le besoin que j'ai)
j'ai vu qu'on pouvait utiliser les commandes HELO, MAIL FROM:, RCPT TO: DATA etc.. mais je n'en sait pas plus
 
si vous pouvez m'eclairer ;)
 
merci

mood
Publicité
Posté le 25-11-2004 à 09:15:24  profilanswer
 

n°907428
J_C_R
Posté le 25-11-2004 à 09:26:20  profilanswer
 

Tu trouves javamail compliqué ?
Franchement...
 

Code :
  1. import java.util.*;
  2. import javax.mail.*;
  3. import javax.mail.internet.*;
  4. public class Jmail
  5. {
  6.    private String serverAddress;
  7.    private boolean verbose = true;
  8.    private String fromAddress;
  9.    private String recipient;
  10.    private String subject;
  11.    private String body;
  12.  
  13.    public Jmail(String serverAddress, String fromAddress, String recipient, String subject, String body)
  14.    {
  15.       this.serverAddress = serverAddress;
  16.       this.fromAddress = fromAddress;
  17.       this.recipient = recipient;
  18.       this.subject = subject;
  19.       this.body = body;
  20.       this.verbose = true;
  21.    }
  22.    public Jmail(String serverAddress, String fromAddress, String recipient, String subject, String body, boolean verbose)
  23.    {
  24.       this.serverAddress = serverAddress;
  25.       this.fromAddress = fromAddress;
  26.       this.recipient = recipient;
  27.       this.subject = subject;
  28.       this.body = body;
  29.       this.verbose = verbose;     
  30.    }
  31.  
  32.    public void send() throws Exception
  33. {
  34.       Message mesg;
  35.       Session session;
  36.      
  37.  Properties props = new Properties();
  38.  props.put("mail.smtp.host", serverAddress);
  39.  session = Session.getDefaultInstance(props, null);
  40.  session.setDebug(verbose);
  41.   mesg = new MimeMessage(session);
  42.   mesg.setFrom(new InternetAddress(this.fromAddress));
  43.   mesg.addRecipient(Message.RecipientType.TO, new InternetAddress(this.recipient));
  44.   mesg.setSubject(this.subject);
  45.   mesg.setText(body);
  46.   Transport.send(mesg);
  47. }
  48.    public void setRecipient(String recipient)
  49.    {
  50.       this.recipient = recipient;
  51.    }
  52. }


 
C'est si compliqué ?
J'ai aussi la version qui utilise des sockets et qui envoi des HELO et autres RSET, DATA etc...

n°907454
jeromejans​on
Posté le 25-11-2004 à 10:06:01  profilanswer
 

c'est vrai qu'en me montrant ca, ca a pas l'air si complique ;)
mais en fait, ce que j'aimerais savoir aussi, si je peux donc utiliser le serveur de messagerie de mon entreprise
c'est un serveur exchange 2000
donc il faudrait que je m'identifie normalement (user, mot de passe) pour penvoir faire du smtp
 
sinon, si tu peux me montrer ta version avec les sockets ;)
 
merci

n°907485
J_C_R
Posté le 25-11-2004 à 10:37:58  profilanswer
 

Dans ma boîte c'est du exchange. Du moment qu'il cause smtp...
 
Voilà une façon de faire en direct. Ca n'est pas de moi, j'ai dû piocher ça dans le java cookbook il y a déjà un bon bout de temps. J'utilise javamail maintenant.
 
 

Code :
  1. import java.net.*;
  2. import java.io.*;
  3. public class SimpleSendMail
  4. {
  5. String mail = null;
  6. String to = null;
  7. String from = null;
  8. String name = null;
  9. boolean verbose = false;
  10. String smtpServerAddress = "smtp";
  11. int smtpServerPort = 25;
  12. Socket socketSmtpServer = null;
  13. DataOutputStream dos = null;
  14. BufferedReader br = null;
  15. /**
  16.  * @param mail message à envoyer
  17.  * @param name nom fourni lors de la connexion au serveur stmp
  18.  * @param from adresse email de l'auteur
  19.  * @param to adresse email destinataire
  20.  */
  21. public SimpleSendMail(String mail, String name, String from, String to)
  22. {
  23.  this.mail=mail;
  24.  this.name=name;
  25.  this.from=from;
  26.  this.to=to;
  27. }
  28. /**
  29.  * @param smtpServer adresse du serveur smtp
  30.  * @param port port du serveur smtp (25 en général)
  31.  * @param mail message à envoyer
  32.  * @param name nom fourni lors de la connexion au serveur stmp
  33.  * @param from adresse email de l'auteur
  34.  * @param to adresse email destinataire
  35.  */
  36. public SimpleSendMail(String smtpServer, int port, String mail, String name, String from, String to)
  37. {
  38.  this.smtpServerAddress=smtpServer;
  39.  this.smtpServerPort=port;
  40.  this.mail=mail;
  41.  this.name=name;
  42.  this.from=from;
  43.  this.to=to;
  44. }
  45. /**
  46.  * @param smtpServer adresse du serveur smtp
  47.  * @param port port du serveur smtp (25 en général)
  48.  * @param mail message à envoyer
  49.  * @param name nom fourni lors de la connexion au serveur stmp
  50.  * @param from adresse email de l'auteur
  51.  * @param to adresse email destinataire
  52.  * @param verbose : affiche sur la sortie standard la discussion avec le serveur smtp
  53.  */
  54. public SimpleSendMail(String smtpServer, int port, String mail, String name, String from, String to, boolean verbose)
  55. {
  56.  this.smtpServerAddress=smtpServer;
  57.  this.smtpServerPort=port;
  58.  this.mail=mail;
  59.  this.name=name;
  60.  this.from=from;
  61.  this.to=to;
  62.  this.verbose=verbose;
  63. }
  64.    /**
  65.     * envoi du message
  66.     */
  67. public void send() throws UnknownHostException, IOException
  68. {
  69.  println("Connexion..." );
  70.  try
  71.  {
  72.   socketSmtpServer = new Socket(smtpServerAddress, smtpServerPort);
  73.   dos = new DataOutputStream(socketSmtpServer.getOutputStream());
  74.   br  = new BufferedReader(new InputStreamReader(socketSmtpServer.getInputStream()));
  75.  }
  76.  catch (UnknownHostException uhe) {throw (uhe);}
  77.  catch (IOException ioe) {throw (ioe);}
  78.  String strBuf = null; //reçoit les réponses du serveur
  79.  strBuf = br.readLine(); println(strBuf);
  80.  //strBuf = br.readLine(); println(strBuf);  
  81.  println("HELO" );
  82.  dos.writeBytes("HELO " + name + "\n" );
  83.  strBuf = br.readLine(); println(strBuf);
  84.  println("RSET" );
  85.  dos.writeBytes("RSET\n" );
  86.  strBuf = br.readLine(); println(strBuf);
  87.  println("MAIL FROM" );
  88.  dos.writeBytes("MAIL FROM:<"+from+">\n" );
  89.  br.readLine();
  90.  println("RCPT TO" );
  91.  dos.writeBytes("RCPT TO:<"+to+">\n" );
  92.  br.readLine();
  93.  println("DATA" );
  94.  dos.writeBytes ("DATA\n" );
  95.  strBuf = br.readLine(); println(strBuf);
  96.  dos.writeBytes (mail);
  97.  println("." );
  98.  dos.writeBytes("\n.\n" ); //signale la fin de DATA
  99.  strBuf = br.readLine(); println(strBuf);
  100.  println("QUIT" );
  101.  dos.writeBytes("QUIT\n" );
  102.  strBuf = br.readLine(); println(strBuf);
  103.  dos.close();
  104.  br.close();
  105.  socketSmtpServer.close();
  106. }
  107. private void println(String s)
  108. {
  109.  if (verbose) System.out.println(s);
  110. }
  111. }

n°907562
jeromejans​on
Posté le 25-11-2004 à 12:12:34  profilanswer
 

j'avais deja reussi a faire ca
mais ce que je ne comprend pas, c'est que normalement il faut s'authentifier aupres du serveur exchange, et la ya pas besoin, ca marche comme ca !!!
 
et avec cette methode, le mail est bien envoye, bien recu, mais quand on ouvre le mail (j'ai fais des tests avec mon adresse) il n'y a rien dans les champs "De" et "A", c'est bizarre
 
merci de m'eclairer

n°907649
the real m​oins moins
Posté le 25-11-2004 à 14:06:06  profilanswer
 

ben faut quand meme etre un peu maso pour faire ça à la main alors que javamail le fait, et mieux, pour toi...

n°907699
jeromejans​on
Posté le 25-11-2004 à 14:30:23  profilanswer
 

en fait j'utilise javamail, c'est vrai que c'est un peu mieux ;)
par contre, je comprend toujours pas pourquoi j'ai pas besoin de m'authentifier, je met juste l'adresse de mon serveur de messagerie, je ne met meme pas dans "FROM" le nom d'un compte qui est auoriser a utiliser le serveur de messagerie, et je peux envoyer un mail
c'est quand meme vachement dangereux, ou c'est un probleme de configuration du serveur mail??
 
merci

n°907741
jeromejans​on
Posté le 25-11-2004 à 15:04:47  profilanswer
 

encore une ptite question ;)
comment faire pour que le corps de mon mail contienne un lien hypertexte?
bien evidemment, si je met un "<a href.." dans setText(), ca ne marche pas
 
merci ;)

n°907839
the real m​oins moins
Posté le 25-11-2004 à 17:17:46  profilanswer
 

eeeuuuuuu bah [:mlc]
si t'envoie un mail en plain text, ... ben... c'est du plain text.. alors là ton seul espoir c'est que le client mail fasse de la transformation de ce qu'il reconnait comme étant une url...
 
sinon bah t'envoie ton mail en html (enfin, les deux, et c'est le client mail qui décide quel contenu afficher.. j'ai oublié le terme qui définit ça)

n°907879
J_C_R
Posté le 25-11-2004 à 17:56:28  profilanswer
 

jeromejanson a écrit :

en fait j'utilise javamail, c'est vrai que c'est un peu mieux ;)
par contre, je comprend toujours pas pourquoi j'ai pas besoin de m'authentifier, je met juste l'adresse de mon serveur de messagerie, je ne met meme pas dans "FROM" le nom d'un compte qui est auoriser a utiliser le serveur de messagerie, et je peux envoyer un mail
c'est quand meme vachement dangereux, ou c'est un probleme de configuration du serveur mail??
 
merci


Pour ton histoire d'authentification, ça doit être une histoire de domaine. Si tu es dans le même domaine que ton serveur de mail alors il accepte de relayer tes mails.
Ce n'est qu'une hypothèse, j'ai pas testé.
 
En ce qui me concerne, tous les champs du mail sont correctement rempli (To: et From:). Tu dois avoir une petite erreur quelquepart.

mood
Publicité
Posté le 25-11-2004 à 17:56:28  profilanswer
 

n°908254
jeromejans​on
Posté le 26-11-2004 à 09:59:29  profilanswer
 

J_C_R a écrit :

Pour ton histoire d'authentification, ça doit être une histoire de domaine. Si tu es dans le même domaine que ton serveur de mail alors il accepte de relayer tes mails.
Ce n'est qu'une hypothèse, j'ai pas testé.
 
En ce qui me concerne, tous les champs du mail sont correctement rempli (To: et From:). Tu dois avoir une petite erreur quelquepart.


 
c'est ce que je pensais hier soir, du fait que mon serveur ou se trouve l'appli web java est situe sur le meme domaine que le serveur mail, il n'y a pas de soucis pour faire du smtp sans authentification
 
merci bien les gars ;)

n°908835
veryfree
Posté le 26-11-2004 à 21:34:55  profilanswer
 

il y a ORO aussi, c'est plus leger que javamail :o ( 2 jar a installé ca fait beaucoup)

n°909284
darklord
You're welcome
Posté le 27-11-2004 à 19:34:13  profilanswer
 

jeromejanson a écrit :

par contre, je comprend toujours pas pourquoi j'ai pas besoin de m'authentifier, je met juste l'adresse de mon serveur de messagerie, je ne met meme pas dans "FROM" le nom d'un compte qui est auoriser a utiliser le serveur de messagerie, et je peux envoyer un mail
c'est quand meme vachement dangereux, ou c'est un probleme de configuration du serveur mail??


 
Rien à voir avec Javamail. Fais le depuis ton outlook ou autre et tu auras exactement le même résultat.

n°909286
darklord
You're welcome
Posté le 27-11-2004 à 19:35:29  profilanswer
 

jeromejanson a écrit :

encore une ptite question ;)
comment faire pour que le corps de mon mail contienne un lien hypertexte?
bien evidemment, si je met un "<a href.." dans setText(), ca ne marche pas
 
merci ;)


 
Tu peux ajouter un body multipart. Une version HTML ou tu indiques ton lien et une version text/plain qui contient l'url en texte. Si le client mail reconnait le format il t'affichera le mail au format HTML. Dans le cas contraire tu verras la version texte.
 
Chercher sur javaworld, j'avais lu un article sur le sujet. Sinon, j'ai du code qui traine qui le fait. MP si ca t'intéresse.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  envoyer un mail

 

Sujets relatifs
Envoyer un mail "propre" avec la fonction mail()Envoyer un mail dans un serveur en java
comment envoyer un mail au format html en java?[PHP] envoyer automatiquement un mail de confirmation
[PHP] Envoyer un mail crypter avec PGP/GPGEnvoyer automatiquement un mail toutes les heures
Formulaire pour envoyer un mail Chez Tiscali (pages perso)Envoyer un mail avec mailto de haute importance
[Outlook] Avoir un bouton pour envoyer un mail à un contact...envoyer un formulaire via un mail ou serveur?
Plus de sujets relatifs à : envoyer un mail


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR