Accuse de recpetion ou notification de recpetion avec javamail

Messages postés
30
Date d'inscription
lundi 21 novembre 2011
Dernière intervention
26 septembre 2012
- 15 févr. 2012 à 22:19 - Dernière réponse :  solidleon
- 21 juin 2018 à 10:29
bonjour a tous,

j'ai réussit d'envoyer un mail avec une pièce jointe avec api javamail et je cherche maintenant faire l'accuse de reception ou une notification de reception de mon mail et je sait pas comment faire ? merci de m'aider

voici mon code :



import java.util.Date;
import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

public class EmailAttachmentDemo {

private String from, to, bodyText, subject;
private String smtp, filename;
private int port;









public String getFilename() {
return filename;
}

public void setFilename(String filename) {
this.filename = filename;
}

public String getFrom() {
return from;
}

public String getBodyText() {
return bodyText;
}

public void setBodyText(String bodyText) {
this.bodyText = bodyText;
}

public int getPort() {
return port;
}

public String getSmtp() {
return smtp;
}

public String getSubject() {
return subject;
}

public String getTo() {
return to;
}

public void setFrom(String from) {
this.from = from;
}

public void setPort(int port) {
this.port = port;
}

public void setSmtp(String smtp) {
this.smtp = smtp;
}

public void setSubject(String subject) {
this.subject = subject;
}

public void setTo(String to) {
this.to = to;
}

public EmailAttachmentDemo(String from, String to, String bodyText, String subject, String filename) {
this.from = from;
this.to = to;
this.bodyText = bodyText;
this.subject = subject;
this.filename = filename;
this.smtp = "smtp.topnet.tn";
this.port = 25;
}

public boolean validmail(String email) {
Pattern p = Pattern.compile("^[a-zA-Z]+[.]+[a-zA-Z]+@[a-zA-Z.]{2,}[.][a-zA-Z]{2,4}$");
Matcher m = p.matcher(email);
if (m.matches() == true) {
return true;
} else {
System.out.println("email non valider");
return false;
}
}

public boolean sendEmail() {
if (!validmail(getFrom())) {
return false;
}
if (!validmail(getTo())) {
return false;
}

Properties properties = new Properties();
properties.put("mail.smtp.host", getSmtp());
properties.put("mail.smtp.port", getPort());

Session session = Session.getDefaultInstance(properties, null);
try {
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(getFrom()));
message.setRecipient(Message.RecipientType.TO, new InternetAddress(getTo()));

message.setSubject(getSubject());
message.setSentDate(new Date());


MimeBodyPart messagePart = new MimeBodyPart();
messagePart.setText(getBodyText());

MimeBodyPart attachmentPart = new MimeBodyPart();

FileDataSource fileDataSource = new FileDataSource(getFilename()) {

@Override
public String getContentType() {
return "application/octet-stream";
}
};

attachmentPart.setDataHandler(new DataHandler(fileDataSource));
attachmentPart.setFileName(getFilename());
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messagePart);
multipart.addBodyPart(attachmentPart);
message.setContent(multipart);


Transport.send(message);

System.out.println("mail envoyée");
return true;
} catch (MessagingException e) {
System.out.println("mail non envoyée");
// e.printStackTrace();
return false;

}

}

public static void main(String[] args) {
String from = "Chhibi.Ahmed@yahoo.fr";
String des = "chhibi.ahmed@gmail.com";
String msg = "bonjour";
String subject = "mailattachment";
String filename = "test.xlsx";

EmailAttachmentDemo demo = new EmailAttachmentDemo(from, des, msg, subject, filename);
if (!demo.sendEmail()) {
System.out.println("email non envoyée");
}
}
}
Afficher la suite 

Votre réponse

10 réponses

Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
- 16 févr. 2012 à 08:05
0
Merci
Bonjour,

Il faut ajouter une information dans le header :

message.setHeader("Disposition-Notification-To",adresseEmeteur);
message.setHeader("Return-Receipt-To",adresseEmeteur);


Ca ne fonctionnera pas avec tous les logiciels de messagerie
Commenter la réponse de cs_Julien39
Messages postés
30
Date d'inscription
lundi 21 novembre 2011
Dernière intervention
26 septembre 2012
- 16 févr. 2012 à 20:20
0
Merci
bonjour ,

merci pour ton réponse mais ça ne marche pas.j'ai ajouté le code qui tu as posté mais sans résultat
vraiment je suis bloqué !!!
Merci
Commenter la réponse de chhibiJAVA
Messages postés
30
Date d'inscription
lundi 21 novembre 2011
Dernière intervention
26 septembre 2012
- 16 févr. 2012 à 20:37
0
Merci
bonjour,
voici le nouveau code aprés l'ajout de
message.setHeader("Disposition-Notification-To",adresseEmeteur);
message.setHeader("Return-Receipt-To",adresseEmeteur); mais rien a changer!!


import java.util.Date;
import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
//import javax.mail.Address;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

public class EmailAttachmentDemo {

private String from, to, bodyText, subject;
private String smtp, filename;
private int port;









public String getFilename() {
return filename;
}

public void setFilename(String filename) {
this.filename = filename;
}

public String getFrom() {
return from;
}

public String getBodyText() {
return bodyText;
}

public void setBodyText(String bodyText) {
this.bodyText = bodyText;
}

public int getPort() {
return port;
}

public String getSmtp() {
return smtp;
}

public String getSubject() {
return subject;
}

public String getTo() {
return to;
}

public void setFrom(String from) {
this.from = from;
}

public void setPort(int port) {
this.port = port;
}

public void setSmtp(String smtp) {
this.smtp = smtp;
}

public void setSubject(String subject) {
this.subject = subject;
}

public void setTo(String to) {
this.to = to;
}

public EmailAttachmentDemo(String from, String to, String bodyText, String subject, String filename) {
this.from = from;
this.to = to;
this.bodyText = bodyText;
this.subject = subject;
this.filename = filename;
this.smtp = "smtp.topnet.tn";
this.port = 25;
}

public boolean validmail(String email) {
Pattern p = Pattern.compile("^[a-zA-Z]+[.]+[a-zA-Z]+@[a-zA-Z.]{2,}[.][a-zA-Z]{2,4}$");
Matcher m = p.matcher(email);
if (m.matches() == true) {
return true;
} else {
System.out.println("email non valider");
return false;
}
}

public boolean sendEmail() {
if (!validmail(getFrom())) {
return false;
}
if (!validmail(getTo())) {
return false;
}

Properties properties = new Properties();
properties.put("mail.smtp.host", getSmtp());
properties.put("mail.smtp.port", getPort());

Session session = Session.getDefaultInstance(properties, null);
try {
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(getFrom()));
message.setRecipient(Message.RecipientType.TO, new InternetAddress(getTo()));


message.setSubject(getSubject());
message.setSentDate(new Date());

/*/Accus de reception*/
message.setHeader("Disposition-Notification-To", getFrom());
message.setHeader("Return-Receipt-To", getFrom());
/* */

MimeBodyPart messagePart = new MimeBodyPart();
messagePart.setText(getBodyText());

MimeBodyPart attachmentPart = new MimeBodyPart();

FileDataSource fileDataSource = new FileDataSource(getFilename()) {

@Override
public String getContentType() {
return "application/octet-stream";
}
};

attachmentPart.setDataHandler(new DataHandler(fileDataSource));
attachmentPart.setFileName(getFilename());
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messagePart);
multipart.addBodyPart(attachmentPart);
message.setContent(multipart);


Transport.send(message);

System.out.println("mail envoyée");
return true;
} catch (MessagingException e) {
System.out.println("mail non envoyée");
// e.printStackTrace();
return false;

}

}

/**
* Ajoute un header dans le message mail demandant un accusé de réception au(x) destinataire(s).
*
* @throws MessagingException Classe de base de toutes les exceptions levées par l'API.
*/

public static void main(String[] args) {
String from = "Chhibi.Ahmed@yahoo.fr";
String des = "chhibi.ahmed@gmail.com";
String msg = "bonjour";
String subject = "mailattachment";
String filename = "test.xlsx";

EmailAttachmentDemo demo = new EmailAttachmentDemo(from, des, msg, subject, filename);
if (!demo.sendEmail()) {
System.out.println("email non envoyée");
}
}
}
Commenter la réponse de chhibiJAVA
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
- 17 févr. 2012 à 08:12
0
Merci
Le mail est ouvert avec quel logiciel ?
Commenter la réponse de cs_Julien39
Messages postés
30
Date d'inscription
lundi 21 novembre 2011
Dernière intervention
26 septembre 2012
- 17 févr. 2012 à 09:37
0
Merci
bonjour,
je utilise netbeans
Commenter la réponse de chhibiJAVA
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Dernière intervention
17 mai 2018
- 17 févr. 2012 à 10:05
0
Merci
Oui, mais une fois que le mail est reçu, quel logiciel l'ouvre ? Quel est le client de messagerie ?
Commenter la réponse de cs_Julien39
Messages postés
30
Date d'inscription
lundi 21 novembre 2011
Dernière intervention
26 septembre 2012
- 17 févr. 2012 à 11:52
0
Merci
Conformément au code ci dessus, j'utilise à la réception mon compte Gmail.
Commenter la réponse de chhibiJAVA
Messages postés
30
Date d'inscription
lundi 21 novembre 2011
Dernière intervention
26 septembre 2012
- 17 févr. 2012 à 12:00
0
Merci
Je vérifie sur @ et je précise que Gmail est mon WebMail.
Commenter la réponse de chhibiJAVA
Messages postés
30
Date d'inscription
lundi 21 novembre 2011
Dernière intervention
26 septembre 2012
- 17 févr. 2012 à 12:06
0
Merci
Je me permets de vs demander s'il y aurait une relation entre le clt de messagerie et la notif de réception. Je veux dire, est ce qu'il y aurait une config bien déterminée sous OutLook par exple étant un clt de messagerie pour envoyer les notifs de réception???
Commenter la réponse de chhibiJAVA
- 21 juin 2018 à 10:29
0
Merci
A ma connaissance, certain serveur SMTP comme GMAIL n'autorise pas d'envoyé d'accusée de reception cointrairement a Outlook par exemple
Il faudra que l'ensemble des relais SMTP utilisent le service DSN delivery status notification pour que cela fonctionne.
Commenter la réponse de solidleon

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.