I have an automatic mail content that I want to send in java. I want to format it in java using MessageFormat.
Here is the content of the mail containing three parameters to customize.
Bonjour,
Nous vous confirmons la reception du {0}$ correspondant à l'achat de votre
{1} correspondant au forunisseur {3}
Si cela vous convient, nous vous enverrons la facture detaille avec toute les justificatifs
et le detail des commandes
Nous restons à votre entière disposition pour toute informations complementaires
A très bientôt.
Ceci est un message automatique , merci de ne pas repondre à ce mail.
These parameters will be retrieved in an array and will be inserted in the content of the mail
String[] data = new String[] {"15","p1","Tera"};
String montant = data[0];
String produit = data[1];
String fournisseur = data[2];
String message = "Bonjour, ..."; //The content of the mail above
MessageFormat mf = new MessageFormat(message);
System.out.println(mf);
I want to display the message as in the content of the mail and how to pass my three string variables instead of {0}, {1} and {2}. How can I do this in java ?
You can do:
String message = "Bonjour, ..."
MessageFormat mf = new MessageFormat(message);
String formattedStr = mf.format(new Object[]{"15", "p1", "Tera"});
Note - single quote '
should be escaped by doubling the single quote: ''
.
Unescaped quote:
String msg = "Bonjour,\n" +
"{0}$ correspondant à l'achat de votre {1} correspondant au forunisseur {2}\n";
MessageFormat mf = new MessageFormat(msg);
String formattedStr = mf.format(new Object[]{"15", "p1", "Tera"});
System.out.println(formattedStr);
Incorrect output:
Bonjour,
15$ correspondant à lachat de votre {1} correspondant au forunisseur {2}
Not what we wanted...
To fix it, we should escape the quote l'achat
--> l''achat
:
String msg = "Bonjour,\n" +
"{0}$ correspondant à l''achat de votre {1} correspondant au forunisseur {2}\n";
MessageFormat mf = new MessageFormat(msg);
String formattedStr = mf.format(new Object[]{"15", "p1", "Tera"});
System.out.println(formattedStr);
Correct output:
Bonjour,
15$ correspondant à l'achat de votre p1 correspondant au forunisseur Tera