kalenderbestand verzenden per php mail

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Christian Snijders

Christian Snijders

01/07/2023 20:29:52
Quote Anchor link
Beste PHPhulpers,

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)
PHP script in nieuw venster Selecteer het PHP script
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
| 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);


Wie ziet er wat ik fout heb gedaan en weet hoe ik dit het beste aan kan pakken?

Alvast bedankt!
 
PHP hulp

PHP hulp

28/04/2024 14:30:51
 
- Ariën  -
Beheerder

- Ariën -

01/07/2023 23:40:39
Quote Anchor link
Is phpMailer of SwiftMailer geen betere optie?
Dan kan je met een paar methods een mail samenstellen en een attachment toevoegen.
 
Christian Snijders

Christian Snijders

02/07/2023 09:07:18
Quote Anchor link
Hoi Ariën,

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 ????
 
- Ariën  -
Beheerder

- Ariën -

02/07/2023 09:33:24
Quote Anchor link
Probeer het eens zonder de headers voor de bijlage. Het is een kwestie van isoleren.

Ikzelf gebruik phpMailer wat veel compacter is, waarbij je niet steeds het wiel opnieuw uitvindt.
 
Christian Snijders

Christian Snijders

02/07/2023 12:16:21
Quote Anchor link
Hoi Ariën,

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.
 
- Ariën  -
Beheerder

- Ariën -

02/07/2023 12:26:14
Quote Anchor link
Daarom is mijn advies om een kant en klaar pakket te gebruiken. :-)
 
Ivo P

Ivo P

02/07/2023 22:29:55
Quote Anchor link
op regel 3 is $ical een object. van type ICS).

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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo nl2br(htmlspecialchars($message)); ?>


of
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php var_dump($message); ?>
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.