[PHP] Stuur een mail met database velden erin

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo jongens,

Voor mijn pa ben ik bezig met een soort van applicatie in PHP, waarin hij verschillende dingen uit een database leest en er naartoe schrijft. Allemaal heel simpel. Maar nu zou ie graag willen, dat ie heel gemakkelijk mail zou kunnen versturen naar contacten. De mailtjes zouden dan opgeslagen moeten worden in de database, maar bijvoorbeeld de achternaam en de aanhef zou dan per keer anders zijn.

Ik weet dat dit zou moeten met een soort parser, zodat je [veld]Achternaam[/veld] zou kunnen omzetten met iets uit de dbase, maar ik heb geen IDEE hoe ik dit moet aanpakken.
Het meeste op Google gaat over dat je MySQL dingen in de content van je mail kunt stoppen, maar het gaat nergens over het vervangen van bepaalde dingen uit de mail met database velden.

Heeft iemand een idee waar ik hier meer informatie over vindt?
Alvast bedankt!

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
http://nl2.php.net/str_replace :?

Ik zou gewoon een .txt maken met daarin je "mail template" waarin je bepaalde velden noteert als (bijv.) {{achternaam}}. Daarna gewoon door de fields van je resultset loopen en {{fieldname}} vervangen door de value van het field.

Then again; ik ben meer ASP-er dan PHP-er en ik heb geen idee of er misschien mooiere/betere oplossingen zijn. Ik weet wél dat er ook complete template classes zijn voor PHP; misschien is dat ook wel wat voor je.

[ Voor 95% gewijzigd door RobIII op 30-06-2008 13:07 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • CRiMiNaL
  • Registratie: Mei 2002
  • Laatst online: 10-01-2024

CRiMiNaL

Witlof ^^

Ik denk dat je templates bedoeld, door midden van reguliere expressies kun je in een template #achternaam# vervangen door een achternaam uit je DB,

Kijk eens door de manual van http://nl2.php.net/manual/en/function.preg-match.php
Reguliere expressies zijn wel ingewikkeld, maar erg krachtig als je eenmaal de basis begrijpt.

... MMORPG Addict.


Acties:
  • 0 Henk 'm!

  • ik222
  • Registratie: Maart 2007
  • Niet online
Ik neem aan dat je in de database een aparte tabel hebt met je contacten. Dan is het toch gewoon een kwestie van met behulp van een loop telkens een andere naam om te halen uit de database, die stop je in een variabele.

Dan begin je eveneens met een loopt een mail constructie en echo je daarin de variabele die je uit de database hebt opgehaald... Of begrijp ik het nu verkeerd?

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
CRiMiNaL schreef op maandag 30 juni 2008 @ 13:07:
Ik denk dat je templates bedoeld, door midden van reguliere expressies kun je in een template #achternaam# vervangen door een achternaam uit je DB,

Kijk eens door de manual van http://nl2.php.net/manual/en/function.preg-match.php
Reguliere expressies zijn wel ingewikkeld, maar erg krachtig als je eenmaal de basis begrijpt.
daarvoor gebruik je geen regexes, zoals RobIII terecht zei : str_replace

Acties:
  • 0 Henk 'm!

Verwijderd

Ik weet niet of dit volledig antwoord aan je vraag maar dit gebruik ik :)

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
// query uitvoeren en variablen ophalen

$sendto_email = "jantje@example.ltd";
$sendto_name = "Jantje";

$subject = "test mailke";

$from_name = "Jefke";
$from_email = "jefke@example.ltd";

// bovenstaande variablen kan je invullen door waarden uit de database

$headers  = "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\n";
$headers .= "From: $from_name <$from_email>\n";

$mailtpl_title   = "Titel van Mail";
$mailtpl_message = "Hoi <strong>$sendto_name</strong><p>Hoe gaat het er mee?</p>";

ob_start();
include('mail-template.php');
$output = ob_get_contents();
ob_end_clean();

$message = $output;

mail($sendto_email,$subject, $message, $headers);


de mail-template.php ziet er dan zo uit
PHP:
1
2
3
4
5
6
7
8
<html>
<head>
<title><?php echo $mailtpl_title; ?></title>
</head>
<body>
<?php echo $mailtpl_message; ?>
</body>
</html>


Dit is simpel voorgesteld, je kan het aanpassen zoveel je wilt :)

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Ik heb zomaar het idee dat dit iets sneller en overzichtelijker is:

PHP:
1
2
3
4
5
6
7
8
9
// haal file op
$strTemplate = file_get_contents('template.html');

// vervang wat dingen
$strTemplate = str_replace('%VOORNAAM%', $strVoornaam, $strTemplate);
$strTemplate = str_replace('%ACHTERNAAM%', $strAchternaam, $strTemplate);

// echo, mail, iets anders...
echo $strTemplate;


Heb geen heel mail ding erin gezet want daar gaat t nu niet om. Je kunt dit in een loopje gooien en de uiteindelijke string meegeven als html-content. Lekker leesbaar en je kunt je html file door iemand anders laten maken zonder dat er php aan te pas hoeft te komen :)

edit: voor het mailen lekker PHPMailer of Zend_Mail (uit Zend Framework) gebruiken, scheelt een hoop gedoe met headers ed.

[ Voor 8% gewijzigd door Cartman! op 30-06-2008 13:40 ]


Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
str_(i)replace werkt gewoon met arrays hoor. Dat is vast iets sneller. :)

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
pedorus schreef op maandag 30 juni 2008 @ 13:46:
str_(i)replace werkt gewoon met arrays hoor. Dat is vast iets sneller. :)
zeker een optie, vind dit zelf altijd iets leesbaarder.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
He jongens, bedankt! Het is me allemaal een stuk duidelijker geworden. Ik kan dus nu gewoon mijn pa via een simpele textarea de inhoud van de mailtjes aan laten passen, en dan kan ie toch die variabelen gebruiken!

Bedankt!

Acties:
  • 0 Henk 'm!

  • steffex
  • Registratie: Augustus 2003
  • Laatst online: 12-08 00:24
kijk eens naar phpMailer! daar kun je heel makkelijk html emails mee sturen, doe dat in combinatie met een soort van fckeditor en je hele mooie mails sturen, je kunt dan zelfs attachments en inline images meesturen!

Acties:
  • 0 Henk 'm!

  • Cousin Boneless
  • Registratie: Juni 2008
  • Laatst online: 28-02 12:55
En nog een mogelijkheid: sprintf http://nl3.php.net/manual/en/function.sprintf.php
Edit: Mja.. niet zo handig als een eindgebruiker hierbij de teksten invoert..

[ Voor 29% gewijzigd door Cousin Boneless op 30-06-2008 18:36 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
stef-o schreef op maandag 30 juni 2008 @ 16:59:
kijk eens naar phpMailer! daar kun je heel makkelijk html emails mee sturen, doe dat in combinatie met een soort van fckeditor en je hele mooie mails sturen, je kunt dan zelfs attachments en inline images meesturen!
En hoe helpt dat TS bij zijn originele probleem :?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1