J'essaie d'envoyer un ical à une Outlook, à l'aide de Java Mail Library, j'ai déjà lu le question , et j'ai déjà un exemple de code mais son être envoyé comme pièce jointe à l'Outlook 2007 et Outlook 2003, et même si je clique sur la pièce jointe à visualiser et à accepter, je ne reçois pas la réponse, qui est le but de l'application d'avoir une fonctionnalité similaire comme Outlook. P> existe-t-il une procédure dont j'ai besoin de savoir, ou est-ce l'identifiant d'invitation qui fait de la chose rugueuse? p> p>
5 Réponses :
Il n'y a aucun signe que vous définissez jamais l'adresse de l'adresse à une adresse réelle. Il n'y a donc nulle part que la réponse à venir. p>
Ce n'est peut-être pas le problème dans votre code EM> em>, mais cela ressemble à un problème ici ... P>
En fait, mon code de production est spécifié et répondant à la réponse.
Outre Message.setfrom (Nouvelle InternetAddress (expéditeur)); spécifié le de, seulement son vide dans cet exemple!
J'ai donc résolu le problème, et voici ce que j'ai trouvé:
1 - Vous devez mettre à jour l'API Java Mail 1.4.2 pour que tout fonctionne bien p>
2 - Écrivez le texte / Calendrier une partie de votre message comme suit: p> 3 - Remplacez votre variable et vous êtes prêt à partir! P> P>
Bonjour Amr, je travaille avec le même projet de projet pour mon académique, j'ai besoin d'élever les alertes et les restes d'une réunion, j'utilise Java pour développer tout mon design est à la hauteur de la marque, mais l'API ICALL à une perspective Est difficile à faire pourriez-vous m'aider à faire cela!.
Hi @ user2561626 Si vous avez utilisé le code ici, vous devriez être capable d'augmenter l'alerte et le rappel est simplement fonction pour Outlook lui-même, il n'y a donc aucun contrôle sur celui-ci.
J'ai le téléchargé ICAL4J, devrais-je modifier les méthodes qui y sont, pour que ce code soit ici, travaillez ici pour augmenter les alertes et les restes.
J'ai téléchargé le fichier de Ce lien . Je suis nouveau dans l'utilisation de l'API iCal, veuillez m'aider.
Vérifiez les exemples ici: wiki.modularity.net.au/ical4j/ index.php? Titre = Exemples
Merci pour ce soutien.Si tout doute que je vais vous envoyer un texto :-)
Bonjour, Amr Je suis capable d'envoyer l'invitation à la réunion, mais je ne peux pas coder pour l'acceptation, il clique sur! (qu'ils acceptent / rejettent / provisoire). Comment dois-je résoudre ce problème!
L'ICAL4J ne supporte pas cela.
Alors y a-t-il une autre façon de le faire. Amus
La confirmation vient sur le courrier de l'expéditeur, vous devez utiliser l'API du courrier pour lire les mails reçus par l'expéditeur afin d'obtenir les confirmations.
@Amrgawish Merci beaucoup pour votre code, cela m'a sauvé beaucoup de temps. Que Dieu te bénisse.
@ 09Q71AO534 Il appartient au client IMIP de choisir si vous souhaitez offrir ou non la possibilité de "importer" cet événement ou de montrer une action "RSVP" pour cela. Mais, le protocole de l'ITIP / IMIP ne couvre pas le scénario de "inviter l'organisateur" par courrier électronique. Signification, les boutons d'action ne seront pas affichés sur la plupart des clients IMIP, lorsque l'organisateur reçoit la réunion par courrier électronique. Voir
Vous pouvez utiliser bibliothèque iCAL4J en plus de JavaMail pour construire le corps du message (au lieu d'utiliser un Stringbuffer Code>).
Exemple: P>
Calendar calendar = new Calendar(); PropertyList calendarProperties = calendar.getProperties(); calendarProperties.add(Version.VERSION_2_0); calendarProperties.add(Method.REQUEST); // other properties ... VEvent vEvent = new VEvent(/*startDate, endDate*/); PropertyList vEventProperties = vEvent.getProperties(); vEventProperties.add(Priority.MEDIUM); vEventProperties.add(Clazz.PUBLIC); // other properties ... calendar.getComponents().add(vEvent); messageBodyPart.setDataHandler(new DataHandler(new ByteArrayDataSource(calendar.toString(), "text/calendar")));
j'avais essayé avec AMR réponse mais j'ai eu une erreur dans
SESSION SESSION = SESSION.GETDEFAULLINSTANCETANCE (PROP, NULL) EM>,
N'oubliez pas que vous devez ajouter Javax.mail Library à votre projet P> import java.util.Properties;
import javax.activation.DataHandler;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.util.ByteArrayDataSource;
public class Email {
public Email() {
}
public static void main(String[] args) {
try {
Email email = new Email();
email.send();
} catch (Exception e) {
e.printStackTrace();
}
}
public void send() throws Exception {
try {
String from = "FromExample@gmail.com";
String to = "ToExample@gmail.do";
Properties prop = new Properties();
prop.put("mail.smtp.auth", "true");
prop.put("mail.smtp.starttls.enable", "true");
prop.put("mail.smtp.host", "smtp.gmail.com");
prop.put("mail.smtp.port", "587");
final String username = "FromExample@gmail.com";
final String password = "123456789";
Session session = Session.getInstance(prop,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
// Define message
MimeMessage message = new MimeMessage(session);
message.addHeaderLine("method=REQUEST");
message.addHeaderLine("charset=UTF-8");
message.addHeaderLine("component=VEVENT");
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject("Outlook Meeting Request Using JavaMail");
StringBuffer sb = new StringBuffer();
StringBuffer buffer = sb.append("BEGIN:VCALENDAR\n" +
"PRODID:-//Microsoft Corporation//Outlook 9.0 MIMEDIR//EN\n" +
"VERSION:2.0\n" +
"METHOD:REQUEST\n" +
"BEGIN:VEVENT\n" +
"ATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=TRUE:MAILTO:xxx@xx.com\n" +
"ORGANIZER:MAILTO:xx@xx.com\n" +
"DTSTART:20180922T053000Z\n" +
"DTEND:20180927T060000Z\n" +
"LOCATION:Conference room\n" +
"TRANSP:OPAQUE\n" +
"SEQUENCE:0\n" +
"UID:040000008200E00074C5B7101A82E00800000000002FF466CE3AC5010000000000000000100\n" +
" 000004377FE5C37984842BF9440448399EB02\n" +
"DTSTAMP:20180922T120102Z\n" +
"CATEGORIES:Meeting\n" +
"DESCRIPTION:This the description of the meeting.\n\n" +
"SUMMARY:Test meeting request\n" +
"PRIORITY:5\n" +
"CLASS:PUBLIC\n" +
"BEGIN:VALARM\n" +
"TRIGGER:PT1440M\n" +
"ACTION:DISPLAY\n" +
"DESCRIPTION:Reminder\n" +
"END:VALARM\n" +
"END:VEVENT\n" +
"END:VCALENDAR");
// Create the message part
BodyPart messageBodyPart = new MimeBodyPart();
// Fill the message
messageBodyPart.setHeader("Content-Class", "urn:content- classes:calendarmessage");
messageBodyPart.setHeader("Content-ID", "calendar_message");
messageBodyPart.setDataHandler(new DataHandler(
new ByteArrayDataSource(buffer.toString(), "text/calendar")));// very important
// Create a Multipart
Multipart multipart = new MimeMultipart();
// Add part one
multipart.addBodyPart(messageBodyPart);
// Put parts in message
message.setContent(multipart);
// send message
Transport.send(message);
System.out.println("Success");
} catch (MessagingException me) {
me.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
ici,
1 - JAR de téléchargement à partir de ici (JavaMail API »1.6.2) . P>
2 - Copiez et collez le code suivant (modifier les valeurs de variable) p>
import java.util.Properties; import javax.activation.DataHandler; import javax.mail.*; import javax.mail.internet.*; import javax.mail.util.ByteArrayDataSource; public class Index { public static void main(String[] args) { try { final String username = "sender@mail.com"; final String password = "xxxxx"; String from = "sender@mail.com"; String to = "attendee@mail.com"; String subject = "Meeting Subject"; String startDate = "20201208"; // Date Formate: YYYYMMDD String endDate = "20201208"; // Date Formate: YYYYMMDD String startTime = "0400"; // Time Formate: HHMM String endTime = "0600"; // Time Formate: HHMM String emailBody = "Hi Team, This is meeting description. Thanks"; Properties prop = new Properties(); prop.put("mail.smtp.auth", "true"); prop.put("mail.smtp.starttls.enable", "true"); prop.put("mail.smtp.host", "smtp.gmail.com"); prop.put("mail.smtp.port", "25"); Session session = Session.getDefaultInstance(prop, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } }); MimeMessage message = new MimeMessage(session); message.addHeaderLine("method=REQUEST"); message.addHeaderLine("charset=UTF-8"); message.addHeaderLine("component=VEVENT"); message.setFrom(new InternetAddress(from, "New Outlook Event")); message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); message.setSubject(subject); StringBuffer sb = new StringBuffer(); StringBuffer buffer = sb.append("BEGIN:VCALENDAR\n" + "PRODID:-//Microsoft Corporation//Outlook 9.0 MIMEDIR//EN\n" + "VERSION:2.0\n" + "METHOD:REQUEST\n" + "BEGIN:VEVENT\n" + "ATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=TRUE:MAILTO:"+ to +"\n" + "DTSTART:"+ startDate +"T"+ startTime +"00Z\n" + "DTEND:"+ endDate +"T"+ endTime +"00Z\n" + "LOCATION:Conference room\n" + "TRANSP:OPAQUE\n" + "SEQUENCE:0\n" + "UID:040000008200E00074C5B7101A82E00800000000002FF466CE3AC5010000000000000000100\n" + " 000004377FE5C37984842BF9440448399EB02\n" + "CATEGORIES:Meeting\n" + "DESCRIPTION:"+ emailBody +"\n\n" + "SUMMARY:Test meeting request\n" + "PRIORITY:5\n" + "CLASS:PUBLIC\n" + "BEGIN:VALARM\n" + "TRIGGER:PT1440M\n" + "ACTION:DISPLAY\n" + "DESCRIPTION:Reminder\n" + "END:VALARM\n" + "END:VEVENT\n" + "END:VCALENDAR"); // Create the message part BodyPart messageBodyPart = new MimeBodyPart(); // Fill the message messageBodyPart.setHeader("Content-Class", "urn:content- classes:calendarmessage"); messageBodyPart.setHeader("Content-ID", "calendar_message"); messageBodyPart.setDataHandler(new DataHandler( new ByteArrayDataSource(buffer.toString(), "text/calendar")));// very important // Create a Multipart Multipart multipart = new MimeMultipart(); // Add part one multipart.addBodyPart(messageBodyPart); // Put parts in message message.setContent(multipart); // send message Transport.send(message); System.out.println("Email sent!"); } catch (MessagingException me) { me.printStackTrace(); } catch (Exception ex) { ex.printStackTrace(); } } }