Ce prog gère l'envoi de mail à travers le protocole SMTP. Il fonctionne mais il faut disposer d'un serveur SMTP...
Source / Exemple :
/**************************************************************
- Applet pour l'envoi de mail à un destinataire unique
- s'intègre dans une page html
-
- Nom programme: CommunicationMail
- Version: 1.0
- Auteur: Gaëlle P.
- E-mail: me_gaelle@yahoo.fr
- Date: 13/05/2002
*
import java.awt.*;
import java.applet.*;
import java.net.*;
import java.util.*;
import java.net.URL;
import java.awt.event.*;
import java.io.*;
import java.lang.*;
import java.security.*;
public class CommunicationMail extends Applet
{
Button boutonEnvoyer;
Button boutonAnnuler;
TextArea zoneMessage;
TextField zoneSujet;
TextField zoneExpediteur;
Panel panneau1, panneau2, panneau3, panneau4;
URL url;
String expediteur;
String sujet;
String message;
String serveurMail = "smtp.serveur.fr"; //Le serveur SMTP sur lequel on a des autorisations
String date;
Socket socket;
int port = 25; //Port standard pour SMTP
PrintWriter fluxSortie;
public void init()
{
//Definition des panneaux
panneau1 = new Panel();
panneau2 = new Panel();
panneau3 = new Panel();
panneau4 = new Panel();
//Definition des zones Sujet et expéditeur (TextField)
zoneExpediteur = new TextField(25);
zoneSujet = new TextField(25);
//Definition de la zone message (TextArea)
zoneMessage = new TextArea();
//Definition des boutons
boutonEnvoyer = new Button("Envoyer");
boutonAnnuler = new Button("Annuler");
//Définition des actions des boutons
boutonEnvoyer.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
Envoyer();
}
});
boutonAnnuler.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
Annuler();
}
});
//Ajout de la zoneExpediteur au panneau1
panneau1.add(zoneExpediteur);
add("South", panneau1);
//Ajout de la zoneSujet au panneau2
panneau2.add(zoneSujet);
add("South", panneau2);
//Ajout de la zoneMessage au panneau3
panneau3.add(zoneMessage);
add("South", panneau3);
//Ajout des boutons au panneau4
panneau4.add(boutonEnvoyer);
panneau4.add(boutonAnnuler);
add("South", panneau4);
}
void Envoyer()
{
PrintWriter to;
BufferedReader from;
expediteur = zoneExpediteur.getText();
sujet = zoneSujet.getText();
message = zoneMessage.getText();
try
{
//Ouverture d'une connexion sur le port 25 du serveur
socket = new Socket(serveurMail, port);
//Récupération du flux de sortie vers le serveur
fluxSortie = new PrintWriter(new
OutputStreamWriter(socket.getOutputStream()),true);
//Envoi de la requête précisant le compte d'envoi
fluxSortie.println("USER "+"moncompte"+"\r");
//Envoi de la requête précisant le mot de passe du compte
fluxSortie.println("PASS "+"motdepasse"+"\r");
//Envoi de la requête précisant l'expéditeur
fluxSortie.println("mail from: "+expediteur);
//Envoi de la requête précisant le destinataire
fluxSortie.println("rcpt to: destinataire@serveur.com");
//Envoi de la requête précisant l'envoi du message
fluxSortie.println("data");
//Envoi du message
date = (new Date()).toString();
fluxSortie.println(date + sujet +"\n"+ message);
//Terminaison du message
fluxSortie.println(".");
//Envoi de la requête de terminaison de session SMTP
fluxSortie.println("QUIT");
}
catch(NullPointerException e){}
catch(AccessControlException e)
{
Annuler();
zoneMessage.append("***** ERREUR **** ERREUR ****\n");
zoneMessage.append("Connexion impossible: accès refusé !");
System.exit(1);
}
catch(UnknownHostException e)
{
Annuler();
zoneMessage.append("***** ERREUR **** ERREUR ****\n");
zoneMessage.append("Hôte inconnu: connexion impossible !");
System.exit(1);
}
catch(IOException e)
{
Annuler();
zoneMessage.append("***** ERREUR **** ERREUR ****\n");
zoneMessage.append("Pas d'E/S pour la connexion avec l'hôte !");
System.exit(1);
}
catch(Exception e){}
finally
{
try
{
fluxSortie.close();
socket.close();
}
catch(IOException e){}
catch(NullPointerException e){}
}
}
public void Annuler()
{
zoneMessage.setText("");
zoneExpediteur.setText("");
zoneSujet.setText("");
}
public void paint(Graphics g)
{
g.drawString("Expéditeur", 35, 30);
g.drawString("Sujet", 35, 60);
panneau1.setLocation(105, 10);
panneau2.setLocation(105,40);
panneau3.setLocation(25, 80);
panneau4.setLocation(30, 255);
}
}
Conclusion :
Normalement le mot de passe n'est pas absolument nécessaire si vous êtes connectés sur le réseau du serveur !
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.