kalenderbestand verzenden per php mail
Ben al enkele dagen bezig een afsprakensysteen te voltooien.
Afspraak plannen en de bevestigingsmail sturen gaat goed, dus mijn volgende taak is het meesturen van de ical file maar hoe ik het ook probeer, de bevestigingsmail komt leeg binnen én komt zonder de ics file.
Dit is het script:
Code (php)
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
63
64
65
66
67
68
69
70
71
72
73
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
63
64
65
66
67
68
69
70
71
72
73
| SQL QUERY voor $afspraak staat hier en is voor deze vraag niet van toepassing |
$ical = new ICS("2023-04-10 09:00","2024-04-10 10:00","Test Event","This is an event","GU1 1AA");
$from = 'Bedrijfsnaam <[email protected]>';
$subject = "Bedrijfsnaam :: Afspraakbevestiging";
$to = "".$user['voornaam']." ".$user['tussenvoegsel']." ".$user['achternaam']." <".$user['email'].">";
// To send HTML mail, the Content-type header must be set
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= "Content-class: urn:content-classes:calendarmessage\n";
// Create email headers
$headers .= 'From: '.$from."\r\n".
'Reply-To: '.$from."\r\n" .
'X-Mailer: PHP/' . phpversion();
// Compose a simple HTML email message
$message = "
<!DOCTYPE html>
<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"nl\" lang=\"nl\">
<head>
<title>Bedrijfsnaam - E-mail</title>
<meta name=\"viewport\" content=\"width=device-width, height=device-height\" />
</head>
<body style='font-family:verdana;font-size:11px;margin:0px;'>
<table style='width:100%;' cellspacing='0'>
<tr><td style='border-bottom:1px solid #dedede;'>
<table style='width:100%;'>
<tr><td style='width:10%;'></td><td style='width:80%;padding:10px;'><img src='https://Bedrijfsnaam.nl/testsite/style/logo/standard_logo.png' alt='' /></td><td style='width:10%;'></td></tr>
</table>
</td>
</tr>
<tr><td style='background-color:#eeeeee;padding:5px;'>
<table style='width:100%;'>
<tr style='font-size:11px;'><td style='width:10%;'></td><td style='width:80%;padding:5px;background-color:#FFFFFF;border:1px solid #dedede;'>
<h4 style='color:#777777;'><span style='color:#000000;'>Uw ingeplande afspraak</span></h4>
Beste ".htmlspecialchars_decode(str_replace('V','mevrouw',str_replace('M','heer ',$user['geslacht'])))." ".htmlspecialchars_decode($user['achternaam'])." ".htmlspecialchars_decode($user['tussenvoegsel']).", ".htmlspecialchars_decode($user['voornaam'])."
<br />
<br />
Hierbij ontvangt u de bevestiging van uw afspraak.<br />Indien nodig kunnen afspraken tot uiterlijk 24 uur voor aanvang via het klantpaneel kosteloos geannuleerd worden.<br />
<br /><br />
<a href='https://Bedrijfsnaam.nl/klantpaneel/login.html' style='display:block;padding:5px;border:1px solid #CCCCCC;background-color:#CFCFCF;color:#000000;text-decoration:none;'>Ga naar het klantpaneel</a><br /><br />
<table style='font-size:11px;border:0px;padding:0px;'>
<tr><td style='width:100px;'>Afspraakdatum: </td><td style='font-style:italic;'>".daycheck($afspraakdag)." ".substr($afspraak['datum'],6,2)." ".month(substr($afspraak['datum'],4,2))." ".substr($afspraak['datum'],0,4)."</td></tr>
<tr><td style='width:100px;'>Afspraaktijd:</td><td style='font-style:italic;'>Aankomst tussen ".$afspraak['start']." en ".$afspraak['eind']."</td></tr>
<tr><td style='width:100px;'>Locatie:</td><td style='font-style:italic;'>".afspraak_locatiecheck($afspraak['locatie'])."</td></tr>
<tr><td style='width:100px;'>Toelichting:</td><td style='font-style:italic;'>".htmlspecialchars_decode($afspraak['toelichting'])."</td></tr>
</table>
</td><td style='width:10%;'></td></tr>
</table>
</td></tr>
<tr><td style='border-top:1px solid #dedede;'>
<table style='width:100%;font-size:11px;'>
<tr><td style='width:10%;'></td><td style='padding:10px;width:200px;' valign='top'><span style='color:#8b8a8a;'>Contact</span><br /><br />".$system['bedrijfsnaam']."<br />".$system['bedrijf_straatnaam']." ".$system['bedrijf_huisnummer']."<br />".$system['bedrijf_postcode']." ".$system['bedrijf_plaats']."<br /><br />".$system['bedrijf_telefoon_vast']."<br />".$system['bedrijf_telefoon']."<br />".$system['bedrijf_email']."</td><td style='width:10px;'></td><td style='padding:10px;width:150px;' valign='top'><span style='color:#8b8a8a;'>Bedrijfsinformatie</span><br /><br />KvK nummer: ".$system['bedrijf_kvk']."<br />KvK kantoor: ".$system['bedrijf_kvk_plaats']."<br />BTW nummer: ".$system['bedrijf_btw']."</td><td style='width:10px;'></td><td style='padding:10px;width:150px;' valign='top'><span style='color:#8b8a8a;'>Social media</span><br /><br /><a href='http://facebook.com/Bedrijfsnaam'>Facebook</a><br /><a href='http://twitter.com/Bedrijfsnaam'>Twitter</a></td><td style='width:10px;'></td></tr>
</table>
</td></tr>
<tr><td style='padding-left:10%;padding-top:50px;padding-right:10%;font-size:12px;'>
Bedrijfsnaam staat ingeschreven in het handelsregister onder het KvK nummer KVKNUM.
</td></tr>
</table>
</body>
</html>
";
$message .= 'Content-Type: text/calendar;name="afspraak.ics";method=REQUEST\n';
$message .= "Content-Transfer-Encoding: 8bit\n\n";
$message .= $ical;
mail($to, $subject, $message, $headers);
$ical = new ICS("2023-04-10 09:00","2024-04-10 10:00","Test Event","This is an event","GU1 1AA");
$from = 'Bedrijfsnaam <[email protected]>';
$subject = "Bedrijfsnaam :: Afspraakbevestiging";
$to = "".$user['voornaam']." ".$user['tussenvoegsel']." ".$user['achternaam']." <".$user['email'].">";
// To send HTML mail, the Content-type header must be set
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= "Content-class: urn:content-classes:calendarmessage\n";
// Create email headers
$headers .= 'From: '.$from."\r\n".
'Reply-To: '.$from."\r\n" .
'X-Mailer: PHP/' . phpversion();
// Compose a simple HTML email message
$message = "
<!DOCTYPE html>
<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"nl\" lang=\"nl\">
<head>
<title>Bedrijfsnaam - E-mail</title>
<meta name=\"viewport\" content=\"width=device-width, height=device-height\" />
</head>
<body style='font-family:verdana;font-size:11px;margin:0px;'>
<table style='width:100%;' cellspacing='0'>
<tr><td style='border-bottom:1px solid #dedede;'>
<table style='width:100%;'>
<tr><td style='width:10%;'></td><td style='width:80%;padding:10px;'><img src='https://Bedrijfsnaam.nl/testsite/style/logo/standard_logo.png' alt='' /></td><td style='width:10%;'></td></tr>
</table>
</td>
</tr>
<tr><td style='background-color:#eeeeee;padding:5px;'>
<table style='width:100%;'>
<tr style='font-size:11px;'><td style='width:10%;'></td><td style='width:80%;padding:5px;background-color:#FFFFFF;border:1px solid #dedede;'>
<h4 style='color:#777777;'><span style='color:#000000;'>Uw ingeplande afspraak</span></h4>
Beste ".htmlspecialchars_decode(str_replace('V','mevrouw',str_replace('M','heer ',$user['geslacht'])))." ".htmlspecialchars_decode($user['achternaam'])." ".htmlspecialchars_decode($user['tussenvoegsel']).", ".htmlspecialchars_decode($user['voornaam'])."
<br />
<br />
Hierbij ontvangt u de bevestiging van uw afspraak.<br />Indien nodig kunnen afspraken tot uiterlijk 24 uur voor aanvang via het klantpaneel kosteloos geannuleerd worden.<br />
<br /><br />
<a href='https://Bedrijfsnaam.nl/klantpaneel/login.html' style='display:block;padding:5px;border:1px solid #CCCCCC;background-color:#CFCFCF;color:#000000;text-decoration:none;'>Ga naar het klantpaneel</a><br /><br />
<table style='font-size:11px;border:0px;padding:0px;'>
<tr><td style='width:100px;'>Afspraakdatum: </td><td style='font-style:italic;'>".daycheck($afspraakdag)." ".substr($afspraak['datum'],6,2)." ".month(substr($afspraak['datum'],4,2))." ".substr($afspraak['datum'],0,4)."</td></tr>
<tr><td style='width:100px;'>Afspraaktijd:</td><td style='font-style:italic;'>Aankomst tussen ".$afspraak['start']." en ".$afspraak['eind']."</td></tr>
<tr><td style='width:100px;'>Locatie:</td><td style='font-style:italic;'>".afspraak_locatiecheck($afspraak['locatie'])."</td></tr>
<tr><td style='width:100px;'>Toelichting:</td><td style='font-style:italic;'>".htmlspecialchars_decode($afspraak['toelichting'])."</td></tr>
</table>
</td><td style='width:10%;'></td></tr>
</table>
</td></tr>
<tr><td style='border-top:1px solid #dedede;'>
<table style='width:100%;font-size:11px;'>
<tr><td style='width:10%;'></td><td style='padding:10px;width:200px;' valign='top'><span style='color:#8b8a8a;'>Contact</span><br /><br />".$system['bedrijfsnaam']."<br />".$system['bedrijf_straatnaam']." ".$system['bedrijf_huisnummer']."<br />".$system['bedrijf_postcode']." ".$system['bedrijf_plaats']."<br /><br />".$system['bedrijf_telefoon_vast']."<br />".$system['bedrijf_telefoon']."<br />".$system['bedrijf_email']."</td><td style='width:10px;'></td><td style='padding:10px;width:150px;' valign='top'><span style='color:#8b8a8a;'>Bedrijfsinformatie</span><br /><br />KvK nummer: ".$system['bedrijf_kvk']."<br />KvK kantoor: ".$system['bedrijf_kvk_plaats']."<br />BTW nummer: ".$system['bedrijf_btw']."</td><td style='width:10px;'></td><td style='padding:10px;width:150px;' valign='top'><span style='color:#8b8a8a;'>Social media</span><br /><br /><a href='http://facebook.com/Bedrijfsnaam'>Facebook</a><br /><a href='http://twitter.com/Bedrijfsnaam'>Twitter</a></td><td style='width:10px;'></td></tr>
</table>
</td></tr>
<tr><td style='padding-left:10%;padding-top:50px;padding-right:10%;font-size:12px;'>
Bedrijfsnaam staat ingeschreven in het handelsregister onder het KvK nummer KVKNUM.
</td></tr>
</table>
</body>
</html>
";
$message .= 'Content-Type: text/calendar;name="afspraak.ics";method=REQUEST\n';
$message .= "Content-Transfer-Encoding: 8bit\n\n";
$message .= $ical;
mail($to, $subject, $message, $headers);
Wie ziet er wat ik fout heb gedaan en weet hoe ik dit het beste aan kan pakken?
Alvast bedankt!
Dan kan je met een paar methods een mail samenstellen en een attachment toevoegen.
Het liefste gebruik ik het huidige script omdat hij eigenlijk in veel plekken in de site van mij zit ingebouwd.
Ik weet dat het mogelijk moet zijn maar hoe is dus de vraag ????
Ikzelf gebruik phpMailer wat veel compacter is, waarbij je niet steeds het wiel opnieuw uitvindt.
Als ik de header weghaal krijg ik ook een lege mail binnen.
Ik kwam uiteindelijk op deze link terecht: php ical verzenden
Die werkt wel alleen als ik de start en eindtijd wijzig blijf ik 12:00 - 13:00 krijgen dus heb het vermoeden dat dat script niet geschikt is.
Daarom is mijn advies om een kant en klaar pakket te gebruiken. :-)
Op regel 72 plak je dit object aan een string vast (de string $message).
Ik zou daar een naar tekst verwachten. Mogelijk met base64_encode() ge-encodeerd.
Het zou natuurlijk kunnen dat in ICS een _tostring() functie staat die dan op magische wijze de juiste output geeft. Maar ik twijfel.
Je kunt wel ipv mail(.....) ook eens proberen van
of je wijzer maakt.
Toevoeging op 02/07/2023 22:31:47:
daarnaast: ga niet zelf met mail-headers klieren, maar gebruik phpmailer() of een variant daarop.
Ook als je dit vaker aan moet spreken.
Vooral dan eigenlijk.
Dan kun je ook centraal de FROM headers aanpassen, als je opdrachtgever daar om vraagt.