2012-12-28 3 views
2

J'essaye d'implémenter le courrier de demande de calendrier par mon code de php. Mon code est comme:envoyer la demande de calendrier par courrier électronique

$to = "[email protected]"; 
$subject = "Training Registration"; 
$message = "Thank you for participating in the Technical Certification training program."; 
$location = "Conf"; 
//================== 
$headers = "Content-Type:text/calendar; Content-Disposition: inline; charset=utf-8;"; 
$headers .= "Content-Type: text/plain;charset=utf-8"; 
$messaje = "BEGIN:VCALENDAR"; 
$messaje .= "VERSION:2.0"; 
$messaje .= "PRODID:PHP"; 
$messaje .= "METHOD:REQUEST"; 
$messaje .= "BEGIN:VEVENT"; 
$messaje .= "DTSTART:20121223T171010Z"; 
$messaje .= "DTEND:20121223T191010Z"; 
$messaje . "DESCRIPTION: You have registered for the class"; 
$messaje .= "SUMMARY:Technical Training"; 
$messaje .= "ORGANIZER; CN=\"Corporate\":mailto:[email protected]"; 
$messaje .= "Location:" . $location . ""; 
$messaje .= "UID:040000008200E00074C5B7101A82E00800000006FC30E6 C39DC004CA782E0C002E01A81\n"; 
$messaje .= "SEQUENCE:0\n"; 
$messaje .= "DTSTAMP:".date('Ymd').'T'.date('His')."\n"; 
$messaje .= "END:VEVENT\n"; 
$messaje .= "END:VCALENDAR\n"; 
$headers .= $messaje; 
mail($to, $subject, $message, $headers); 

Par ce code j'ai reçu le courrier mais pas en termes de format de demande de calendrier. Le courrier a également été envoyé avec un fichier joint "Training Registration.ics". J'ai besoin de l'option Accepter, Provisoire, Refuser, Proposer une nouvelle heure, Calendrier avec le courrier. S'il vous plaît me guider comment faire cela. Merci.

+0

Je ne suis pas sûr que je publierais ce qui semble être des adresses e-mail valides dans votre code ici. – PeterJ

+0

Envisagez d'utiliser une bibliothèque de diffusion PHP moderne, telle que PHPMailer ou SwiftMailer, pour gérer les pièces jointes pour vous. Comme vous le voyez maintenant, rouler votre propre MIME est une * douleur *. – Charles

Répondre

2
$headers = 'Content-Type:text/calendar; Content-Disposition: inline; charset=utf-8;\r\n'; 

Ici, essayez de changer guillemet simple à guillemet ('=> ")

Il est parce que citation dingle échappera \ r \ n
Reference

Mise à jour
Enfin, je fais la suggestion ci-dessous et changez votre en-tête et, au moins, cela fonctionne de mon côté

$to = "[email protected]"; 
$subject = "Training Registration"; 
$message = "Thank you for participating in the Technical Certification training program.\r\n\r\n"; 
$location = "Conf"; 
//================== 
$headers .= "MIME-version: 1.0\r\n"; 
$headers .= "Content-class: urn:content-classes:calendarmessage\r\n"; 
$headers .= "Content-type: text/calendar; method=REQUEST; charset=UTF-8\r\n"; 
$messaje = "BEGIN:VCALENDAR\r\n"; 
$messaje .= "VERSION:2.0\r\n"; 
$messaje .= "PRODID:PHP\r\n"; 
$messaje .= "METHOD:REQUEST\r\n"; 
$messaje .= "BEGIN:VEVENT\r\n"; 
$messaje .= "DTSTART:20121223T171010Z\r\n"; 
$messaje .= "DTEND:20121223T191010Z\r\n"; 
$messaje .= "DESCRIPTION: You have registered for the class\r\n"; 
$messaje .= "SUMMARY:Technical Training\r\n"; 
$messaje .= "ORGANIZER; CN=\"Corporate\":mailto:[email protected]\r\n"; 
$messaje .= "Location:" . $location . "\r\n"; 
$messaje .= "UID:040000008200E00074C5B7101A82E00800000006FC30E6 C39DC004CA782E0C002E01A81\r\n"; 
$messaje .= "SEQUENCE:0\r\n"; 
$messaje .= "DTSTAMP:".date('Ymd').'T'.date('His')."\r\n"; 
$messaje .= "END:VEVENT\r\n"; 
$messaje .= "END:VCALENDAR\r\n"; 
$message .= $messaje; 
mail($to, $subject, $message, $headers); 
+0

en fait, la réponse ci-dessus suppose que le code pourrait envoyer calender ~ _ ~ Je n'ai aucune idée sur la façon d'envoyer le calendrier par courriel @@ a –

+0

Après avoir changé cette citation unique à double citation j'ai eu le numéro suivant: ORGANIZER; CN = "entreprise": mailto: [email protected] Lieu: UID: 040000008200E00074C5B7101A82E00800000006FC30E6 C39DC004CA782E0C002E01A81 SEQUENCE: 0 DTSTAMP: 20121228T002344 FIN: VEVENT END: VCALENDAR Nous vous remercions d'avoir participé au programme de formation de certification technique. Également dans la section d'en-tête j'ai reçu un autre message du genre "Les sauts de ligne supplémentaires dans ce message ont été supprimés". Et je n'ai reçu aucun lien Accepter ou lien Tentavive pour cet e-mail. – phpdeveloper

+0

D'où vient votre code? Je ne sais pas comment envoyer le calendrier par courriel et je n'ai pas le temps de faire des recherches maintenant que je suis au bureau :-) Cependant, ma prochaine suggestion est de vérifier si vous devez mettre $ messaje dans les entêtes $ –

Questions connexes