I. Téléchargement et intégration des librairies dans NetBeans IDE 6.8▲
Tout d'abord, vous devez télécharger la dernière version de Java Mail à partir de cette page, ainsi que DJ Native Swing.
Après avoir téléchargé les bibliothèques, vous avez besoin de les mettre dans la bibliothèque du Gestionnaire de NetBeans. Je vous recommande de stocker toutes les bibliothèques, dans C: \ Program Files \ Java bibliothèques \ , par exemple.
II. Création d'une application Java et ajout de bibliothèques au projet▲
Suivre les étapes pour commencer à créer l'application.
1. Choisir Fichier -> Nouveau Projet -> Application Java. Cliquez suivant.
2. Quand la fenêtre 'Nom et Emplacement' apparait, nommez votre projet FCKEditorEmailSender et décochez 'Créer Classe Main' et vous finissez par créer un projet vide.Cliquer 'Finir'.
3. Dans l'onglet Projets, faites un clic droit sur Bibliothèques et choisissez Ajouter une bibliothèque dans menu.
Ensuite, sélectionner la bibliothèque que vous avez ajoutée à partir du Gestionnaire de bibliothèques.
Vous devriez avoir maintenant Java Mail et les fichiers jar DJNativeSwing.
Votre projet doit maintenant ressembler à l'image ci-dessous :
III. Créer le paquetage et les classes Java▲
Maintenant, nous allons coder un peu.
Allez sur le projet que vous avez créé et puis créez un package nommé EmailSender. Dans le paquet, créez une classe Java nommée EmailSender(même nom, ne vous inquiétez pas) à partir de la boîte de dialogue Nouveau fichier.
Dans la classe, créez des champs privés comme indiqué ci-dessous :
public
class
EmailSender {
private
String smtpServer;
private
String port;
private
String user;
private
String password;
private
String auth;
private
String from;
Créez un simple constructeur en pressant ALT + INSERT et sélectionnez tous les champs dans la fenêtre. Afin de permettre l'envoi d'emails par l'API JavaMail, vous devez créer un objet Properties où vous mettez toutes les informations nécessaires au sujet de la session SMTP, tels que le serveur, le port et l'utilisateur.
À la fin créez la méthode suivante :
private
Properties prepareProperties
(
)
Ensuite, lorsque vous préparez l'objet Properties, vous pouvez tout simplement mettre le modèle d'un message électronique.
Cette méthode renvoie un message MIME (qui signifie Multipurpose Internet Mail Extensions Message Class). Ensuite, créer cette méthode :
private
MimeMessage prepareMessage
(
Session mailSession,String charset,
String from, String subject,
String HtmlMessage,String[] recipient)
La prochaine étape à propos de l'envoi d'emails via Internet implique la création d'une méthode pour envoyer des messages de contenu HTML. Créez cette méthode :
public
void
sendEmail
(
String subject,String HtmlMessage,String[] to)
La plupart des serveurs SMTP doivent authentifier les utilisateurs à distance qui tentent d'envoyer des emails.
Pour cette raison, nous devons créer une simple classe SMTPAuthenticator dans le paquet EmailSender.
Cette classe étend javax.mail.Authenticator et fournit une méthode comme suit :
protected
PasswordAuthentication getPasswordAuthentication
(
)
Maintenant nous ajoutons les implémentations des méthodes montrées ci-dessous :
private
Properties prepareProperties
(
)
{
Properties props =
new
Properties
(
);
props.setProperty
(
"mail.smtp.host"
, smtpServer);
props.setProperty
(
"mail.smtp.port"
, port);
props.setProperty
(
"mail.smtp.user"
, user);
props.setProperty
(
"mail.smtp.password"
, password);
props.setProperty
(
"mail.smtp.auth"
, auth);
return
props;
}
private
MimeMessage prepareMessage
(
Session mailSession,String charset,
String from, String subject,
String HtmlMessage,String[] recipient) {
//Multipurpose Internet Mail Extensions
MimeMessage message =
null
;
try
{
message =
new
MimeMessage
(
mailSession);
message.setFrom
(
new
InternetAddress
(
from));
message.setSubject
(
subject);
for
(
int
i=
0
;i<
recipient.length;i++
)
message.addRecipient
(
Message.RecipientType.TO, new
InternetAddress
(
recipient[i]));
message.setContent
(
HtmlMessage, "text/html; charset=
\"
"
+
charset+
"
\"
"
);
}
catch
(
Exception ex) {
Logger.getLogger
(
EmailSender.class
.getName
(
)).log
(
Level.SEVERE, null
, ex);
}
return
message;
}
public
void
sendEmail
(
String subject,String HtmlMessage,String[] to)
{
Transport transport =
null
;
try
{
Properties props =
prepareProperties
(
);
Session mailSession =
Session.getDefaultInstance
(
props, new
SMTPAuthenticator
(
from, password, true
));
transport =
mailSession.getTransport
(
"smtp"
);
MimeMessage message =
prepareMessage
(
mailSession, "ISO-8859-2"
,
from, subject, HtmlMessage, to);
transport.connect
(
);
Transport.send
(
message);
}
catch
(
Exception ex) {
}
finally
{
try
{
transport.close
(
);
}
catch
(
MessagingException ex) {
Logger.getLogger
(
EmailSender.class
.getName
(
)).
log
(
Level.SEVERE, null
, ex);
}
}
}
package
EmailSender;
import
javax.mail.Authenticator;
import
javax.mail.PasswordAuthentication;
public
class
SMTPAuthenticator extends
Authenticator{
private
String username;
private
String password;
private
boolean
needAuth;
public
SMTPAuthenticator
(
String username, String password,boolean
needAuth)
{
this
.username =
username;
this
.password =
password;
this
.needAuth =
needAuth;
}
@Override
protected
PasswordAuthentication getPasswordAuthentication
(
) {
if
(
needAuth)
return
new
PasswordAuthentication
(
username, password);
else
return
null
;
}
}
IV. Création d'un formulaire Swing pour fournir une belle interface graphique▲
Maintenant que nous avons fini le travail concernant l'email, nous allons nous concentrer sur Swing et l'intégration FCKEditor.
Vous devez cliquer sur le bouton droit sur le paquet EmailSender et choisissez 'Nouveau'->'JFrame Form', appelez cette classe SendEmail et mettez la classe dans le package EmailSender.
Maintenant faites un clic droit sur la vue du design de la JFrame et sélectionnez :
Choisir disposition -> Border Layout
Quand vous essayez de déplacer un JPanel depuis la Palette sur le design, vous verrez quelques bordures qui sont simplement des détenteurs de contenu du border layout.
Si vous souhaitez en connaitre davantage, lisez BorderLayout de la doc officielle Java.
Cliquez sur Panel dans la Palette et glissez-le comme dans l'image ci-dessous. Dans cet espace, vous allez placer des contrôles pour obtenir les valeurs SMTP.
Maintenant, cliquez droit sur le panneau ci-dessus et sélectionnez :
Mise en page Set -> Format Null.
Cela rendra vos contrôles non flottants quand l'utilisateur va redimensionner la fenêtre et d'autre part les contrôles seront dans la même position, car il a été créé en mode design.
Testez avec des présentations différentes lorsque vous exécutez votre application pour voir ce qui va arriver:)
Maintenant, vous aurez besoin pour créer des boutons pour interagir avec l'utilisateur. Mettez un nouveau JPanel au plus bas « Placer le support ».
Ajouter deux boutons :
Et nous sommes proches de la fin du tutoriel. La dernière chose à faire est de mettre FCKEditor dans la méthode principale. Modifiez ainsi :
public
static
void
main
(
String[] args)
UIUtils.setPreferredLookAndFeel
(
);
NativeInterface.open
(
);
final
String configurationScript =
"FCKConfig.ToolbarSets[
\"
Default
\"
] = [
\n
"
+
"['Source','DocProps','-','Save','NewPage','Preview','-','Templates'],
\n
"
+
"['Cut','Copy','Paste','PasteText','PasteWord','-','Print','SpellCheck'],
\n
"
+
"['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
\n
"
+
"['Form','Checkbox','Radio','TextField','Textarea','Select','Button','ImageButton','HiddenField'],
\n
"
+
"'/',
\n
"
+
"['Style','FontFormat','FontName','FontSize'],
\n
"
+
"['TextColor','BGColor'],
\n
"
+
"'/',
\n
"
+
"['Bold','Italic','Underline','StrikeThrough','-','Subscript','Superscript'],
\n
"
+
"['OrderedList','UnorderedList','-','Outdent','Indent','Blockquote'],
\n
"
+
"['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
\n
"
+
"['Link','Unlink','Anchor'],
\n
"
+
"['Image','Flash','Table','Rule','Smiley','SpecialChar','PageBreak', '-', 'ShowBlocks'],
\n
"
+
"];
\n
"
+
"FCKConfig.ToolbarCanCollapse = false;
\n
"
;
java.awt.EventQueue.invokeLater
(
new
Runnable
(
) {
public
void
run
(
) {
htmlEditor =
new
JHTMLEditor
(
HTMLEditorImplementation.FCKEditor,
JHTMLEditor.FCKEditorOptions.setCustomJavascriptConfiguration
(
configurationScript));
SendEmail es2 =
new
SendEmail
(
);
es2.setSize
(
new
Dimension
(
800
,600
));
es2.add
(
htmlEditor,BorderLayout.CENTER);
es2.setLocationByPlatform
(
true
);
es2.setVisible
(
true
);
}
}
);
}
Maintenant, lorsque vous remplacez la méthode principale accédez à la vue Design et double-cliquez sur les deux boutons pour générer actionPerformed.
Mettez ce code pour chaque bouton. Notez bien que j'ai utilisé le code ci-dessous pour fournir des nouveaux threads pour éviter bloc Graphical User Interface cours Envoyer un e-mail:
Interface cours Envoyer un e-
mail:
javax.swing.SwingUtilities.invokeLater
(
new
Runnable
(
) {
public
void
run
(
) {
emailer.sendEmail
(
subject.getText
(
),
htmlEditor.getHTMLContent
(
),
recipientsString);
}
}
);
private
void
sendEmailActionPerformed
(
java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
StringTokenizer recepientsTokenizer =
new
StringTokenizer
(
to.getText
(
), ","
);
final
String[] recipientsString =
new
String[recepientsTokenizer.countTokens
(
)];
for
(
int
i =
0
; i <
recipientsString.length; i++
) {
recipientsString[i] =
recepientsTokenizer.nextToken
(
);
}
final
EmailSender emailer =
new
EmailSender
(
smtpServer.getText
(
),
port.getText
(
), username.getText
(
),
password.getPassword
(
).toString
(
),
"true"
, from.getText
(
));
javax.swing.SwingUtilities.invokeLater
(
new
Runnable
(
) {
public
void
run
(
) {
emailer.sendEmail
(
subject.getText
(
),
htmlEditor.getHTMLContent
(
),
recipientsString);
}
}
);
}
private
void
jButton2ActionPerformed
(
java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
dispose
(
);
}
Vous pouvez maintenant construire votre projet et le montrer à vos amis:)
Vous avez donc normalement quelque chose qui ressemble à ceci :
Ici, vous pouvez télécharger le projet NetBeans.
Tip
Lorsque vous téléchargez DJ Native vous pouvez double-cliquer sur le DJNativeSwing-SWTDemo.jar à regarder de plus près dans classesm différents impressionnants comme JWebBrowser JHtmlEditor avec HtmlEditors différents.
V. Remerciements▲
Cet article est une traduction de celui rédigé par Robert Piesnikowski dont vous pourrez trouver l'original ici. Je tiens à remercier Robert Piesnikowski pour les échanges que nous avons eus et son accord pour la traduction de son article.