In ical.php (Plaatscode: 142360) genereer ik een .ics-bestand. Dit gaat helemaal goed en naar wens. De volgende stap is echter om dit bestand als bijlage te mailen.
Ik moet dit uiteindelijk via een filter doen (is een uitbreiding voor een WordPress plugin - WooCommerce). Zie ook; Plaatscode: 142361.
Voor nu zou ik graag weten hoe ik dat realiseer d.m.v. van de mail() functie (tenzij jullie al meer weten m.b.t. de filter hierboven).
Natuurlijk heb ik al gezocht, maar krijg vaak antwoorden als: gebruik phpmailer want dat werkt beter. Zoals je ziet heb ik met de filter beperkte mogelijkheden.
Hopende op een reactie.
5 antwoorden
Gesponsorde links
Thomas - 17/07/2014 15:55 (laatste wijziging 17/07/2014 15:55)
Moderator
Je kunt dit misschien wel via de headers regelen, maar dit lijkt mij niet de goede plaats. Ik weet niet of je ooit van MIME-mail hebt gehoord? Hiermee kun je een e-mailbericht meer structuur geven en opdelen in partjes met elke een eigen Content-Type en -encoding. In je headers zet je de meta-data die een e-mailbericht markeert als een MIME-bericht, in de body zet je vervolgens je stukjes content. Je headers zijn dus bedoeld om e-mailapplicaties te instrueren hoe deze met de mailbody om zouden moeten gaan.
Je kunt wel gebruik maken van de "hack" dat je in je headers zowel je headers ALS je body zet, en de daadwerkelijke body zelf leeg laat, maar dat lijkt mij niet de bedoeling.
Classes/libraries zoals PHPMailer maken je leven wel eenvoudiger in die zin dat die (waarschijnlijk) voorgeprepareerde stukjes code hebben die je helpen bij het bouwen van een MIME e-mailbericht.
Als je toch (en misschien tegen beter weten in) zelf zo'n mail wilt bouwen... Je bent vast niet de eerste die dit probeert. Ik zie trouwens ook dat Wordpress zijn eigen mailfunctie heeft waarmee attachments verstuurd kunnen worden?
Ik heb zeker van de wp_mail() functie gehoord. Echter, dit is een aanpassing/toevoeging op een plugin genaamd WooCommerce - ik weet niet zeker (denk het wel) of de plugin van wp_mail() gebruik maakt.
Er zijn wel actions en filters toe te voegen, maar ik kwam tot nu niet verder dan deze filter. Ik dacht daarom misschien via de headers de ics toe te kunnen voegen.
Toch heb ik al aardig wat afgezocht, maar kom maar niet bij een correct antwoord.
In je headers vertel je hoe je e-mailbericht er uit gaat zien. In je body vertel je wat er in zit. Je stopt een attachment dus normaliter niet in je headers.
Ik kan wel een voorbeeld in elkaar zetten waarin ik laat zien hoe een MIME e-mailbericht opgebouwd is (of doe eens View Source in een e-mailbericht van Thunderbird of doe View Original Message (of iets dergelijks) in GMail), maar dan ben je haast op (MIME) protocol-niveau bezig met het opstellen van je e-mail. Het kan wel, maar als je dat dan vervolgens een beetje gaat structureren zodat het herbruikbaar wordt ben je dus al min of meer bezig met het bouwen van een MIME-mail lib, waar er al tig van zijn. Het is natuurlijk wel leerzaam .
Als je wilt zet ik een eenvoudig voorbeeld in elkaar. Anders/daarnaast zou ik gewoon in eerste instantie wp_mail proberen, en anders eens kijken naar bestaande libs zoals phpmailer.
Ik heb inmiddels gezien dat WooCommerce wp_mail gebruikt. Hoe ik daar een filter op kan toepassen is nog even de vraag.
Het zien van een voorbeeld MIME, voor text/calender zou dat dan zijn denk ik, zou ik zeer waarderen.
--
Edit:
Na wat grasduinen heb ik een filter gevonden om een attachment toe te voegen aan de email. Nu moet ik nog zorgen dat ik die ics kan toevoegen i.p.v. een statisch attachment.
Er komen ontzettend veel regels kijken bij MIME. Zo heb ik in onderstaand voorbeeld geen rekening gehouden met de regel dat de regellengtes van het e-mailbericht eigenlijk niet een zeker aantal karakters mag overschrijden (70 geloof ik). Meestal zit heel veel van deze kennis verwerkt in je library. Reden temeer (wellicht) om van een lib gebruik te maken.
Daarnaast kan een verkeerd gebruik van het opstellen van (MIME) mail leiden tot het markeren als spam van dergelijke berichten.
Tot slot is de mail() functie niet geschikt voor het versturen van bulkmail. Je moet dan gaan denken aan oplossingen die gebruik maken van SMTP. Meestal (je raad het misschien al) heeft een library een implementatie met SMTP.