Problème envoi de mail en Java
Bonjour,
Voila mon problème, j'ai une classe Mail très simple avec une méthode pour envoyer un mail (envoiMail) :
Code:
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
| import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
public class Mail {
public static void envoiMail(String from, String to, String cc, String sujet, String texte, PieceJointe pj, String signature) {
// Création de l'objet Properties qui contient tous les paramètres d'initialisation nécessaires.
Properties props = new Properties();
props.put("mail.smtp.host", "chrmt-smtp01");
Session session = Session.getInstance(props, null);
try {
// Création de l'objet message
MimeMessage msg = new MimeMessage(session);
msg.setSubject(sujet); // Ajout du sujet
msg.setFrom(from); // Ajout du from ==> Erreur
msg.setRecipients(Message.RecipientType.TO, to); // Ajout du destinataire
msg.setRecipients(Message.RecipientType.CC, cc); // Ajout du destinataire en copie
// Ajout du contenu au message
msg.setContent(createMultipart(texte, pj, signature));
Transport.send(msg);
} catch (MessagingException mex) {
System.out.println("send failed, exception: " + mex);
}
}
public static MimeMultipart createMultipart(String texte, PieceJointe pj, String signature) throws MessagingException {
MimeMultipart mp = new MimeMultipart();
// 1ere partie du message : Le texte
MimeBodyPart mbp1 = new MimeBodyPart();
mbp1.setText(texte, "ISO-8859-1", "html");
mp.addBodyPart(mbp1);
// 2ème partie du message : La pièce jointe
if(pj != null) {
MimeBodyPart mbp2 = new MimeBodyPart();
DataSource source = new FileDataSource(pj.getFile());
mbp2.setDataHandler(new DataHandler(source));
mbp2.setFileName(pj.getName());
mp.addBodyPart(mbp2);
}
// 3ème partie du message : La signature
MimeBodyPart mbp3 = new MimeBodyPart();
mbp3.setText(signature, "ISO-8859-1", "html");
mp.addBodyPart(mbp3);
return mp;
}
} |
lorsque je test cette méthode directement dans eclipse, à partir d'une fonction main, cela fonctionne parfaitement :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| import java.io.File;
import java.io.IOException;
import package_mail.Mail;
import com.google.common.base.Charsets;
public class testMainClass {
public static void main(String[] args) throws IOException {
String signature = com.google.common.io.Files.toString(new File("code-signature.html"), Charsets.UTF_8);
String texte = "texte de test test";
String sujet = "ALERTE";
String to = "ppp@ppp.fr";
String cc = "ppp@ppp.fr";
Mail.envoiMail("aaa@aaa.fr", to, cc, sujet, texte, null, signature);
}
} |
maintenant, à partir d'un logiciel, je lui demande d'appeler cette méthode et j'obtiens cette erreur :
Code:
java.lang.NoSuchMethodError: javax.mail.internet.MimeMessage.setFrom(Ljava/lang/String;)
l'erreur est donc sur la ligne :
maintenant, si je supprime cette ligne, le mail est bien envoyé mais avec du code html pour la signature :
Code:
mbp3.setText(signature, "ISO-8859-1", "html");
Si quelqu'un à une explication ou une idée pour m'aider.
Merci.