Page 1 of 1
(SOLVED) eCard - Formbuilder - UDT
Posted: Mon May 03, 2010 2:24 pm
by stijlXpres
Hallo,
Ben al een tijdje aan het stoeien om mbv een formulier (gemaakt met Formbuilder) een eCard module te maken. Wanneer het formulier is ingevuld en wordt verstuurd, wordt er een UDT aangeroepen, die er vervolgens voor zorgt dat er een bericht wordt gestuurd naar max. 5 adressen.
Belangrijk punt hierbij is dat de mails als BCC / of individueel wil versturen. Het formulier dient in de frontend, door bezoekers van de site ingevuld te kunnen worden.
Voor een groot deel heb ik het al werkend, maar het lukt me niet om de berichten als BCC te versturen. Hieronder de UDT die ik hiervoor gebruik:
Code: Select all
global $gCms;
$name =& $params['fld_44'];
$message =& $params['fld_41'];
$card =& $params['fld_45'];
$adres1 =& $params['email_ontvanger_1'];
$bodytext = '
Hallo,
Je hebt een persoonlijke eCard ontvangen van '.$name.':
Keuze kaart: '.$card.'
Persoonlijk bericht: '.$message.'';
$cmsmailer =& $gCms->modules['CMSMailer']['object'];
$cmsmailer->AddAddress($adres1);
$cmsmailer->SetBody($bodytext);
$cmsmailer->IsHTML(true);
$cmsmailer->SetSubject('Je hebt een SW4D-eCard ontvangen!');
$cmsmailer->Send();
Voor de volledigheid; de vars $card t/m $adres1 worden uitgelezen uit Formbuilder.
Iemand een idee wat ik zou moeten aanpassen om te realiseren dat het bericht naar minimaal 1, maar maximaal 5 adressen wordt gestuurd? En dan zodanig dat alle ontvangers alleen hun eigen adres zien?
Ik heb al verschillende dingen geprobeerd:
- AddAddress vervangen voor AddBCC; lijkt niet te werken
- meerdere adressen bij AddAddress invoegen: ($adres1,$adres2,...); lijkt niet te werken
- Meerdere UDT's aanroepen binnen Formbuilder (1 voor elk adres); elke ontvanger ontvangt de mail (soms) meerdere malen, maar ziet ook alle andere adressen.
Wie kan mij verder helpen?
Re: eCard - Formbuilder - UDT
Posted: Mon May 03, 2010 3:57 pm
by Jos
Volgens mij maakt cmsms gebruik van de phpmailer classe. Documentatie zal hier te vinden zijn
http://phpmailer.worxware.com/ (kon het zelf zo snel niet vinden overigens)
Ik gok dat je het simpel zou kunnen oplossen door de mailer 5x aan de gang te zetten als volgt:
Code: Select all
if ( !empty($adres1) {
$cmsmailer1 =& $gCms->modules['CMSMailer']['object'];
$cmsmailer1->AddAddress($adres1);
$cmsmailer1->SetBody($bodytext);
$cmsmailer1->IsHTML(true);
$cmsmailer1->SetSubject('Je hebt een SW4D-eCard ontvangen!');
$cmsmailer1->Send();
}
if ( !empty($adres2) {
$cmsmailer2 =& $gCms->modules['CMSMailer']['object'];
$cmsmailer2->AddAddress($adres2);
$cmsmailer2->SetBody($bodytext);
$cmsmailer2->IsHTML(true);
$cmsmailer2->SetSubject('Je hebt een SW4D-eCard ontvangen!');
$cmsmailer2->Send();
}
if ( !empty($adres3) {
$cmsmailer3 =& $gCms->modules['CMSMailer']['object'];
$cmsmailer3->AddAddress($adres3);
$cmsmailer3->SetBody($bodytext);
$cmsmailer3->IsHTML(true);
$cmsmailer3->SetSubject('Je hebt een SW4D-eCard ontvangen!');
$cmsmailer3->Send();
}
etc...
Dit is niet zo elegant natuurlijk...
Misschien dat het ook zo kan:
Code: Select all
$cmsmailer =& $gCms->modules['CMSMailer']['object'];
$cmsmailer->SetBody($bodytext);
$cmsmailer->IsHTML(true);
$cmsmailer->SetSubject('Je hebt een SW4D-eCard ontvangen!');
if ( !empty($adres1) {
$cmsmailer->AddAddress($adres1);
$cmsmailer->Send();
$cmsmailer->DeleteAddresses(); // bestaat deze functie???
}
if ( !empty($adres2) {
$cmsmailer->AddAddress($adres2);
$cmsmailer->Send();
$cmsmailer->DeleteAddresses(); // bestaat deze functie???
}
etc...
Maar ik weet dus niet of er een dergelijke deletefunctie bestaat.. Daarvoor zou je dan ff documentatie moeten opzoeken.
Re: eCard - Formbuilder - UDT
Posted: Mon May 03, 2010 4:19 pm
by Jos
Ik heb nog even verder gezocht op de phpmailer site... misschien dat je hier wat aan hebt
http://phpmailer.worxware.com/index.php?pg=methods
Ik zie daar ClearAddresses() 8)
Al ben ik er van overtuigd dat het nog simpeler moet kunnen, ik weet alleen niet hoe :-X
Re: eCard - Formbuilder - UDT
Posted: Mon May 03, 2010 4:24 pm
by deactivated010521
----------
Re: eCard - Formbuilder - UDT
Posted: Mon May 03, 2010 4:29 pm
by stijlXpres
Hallo Jos,
Dit lijkt half te werken. Het verzenden gaat goed bij het eerste adres, maar de naar de daaropvolgende adressen worden niets verstuurd.
Ik heb jouw verschillende opties geprobeerd.
Zie ik iets over het hoofd?
BTW1: DeleteAddress() moet volgens mij zijn: ClearAdresses() (en dat had jij ook al weer gemaild...

)
BTW2: Volgens mij was je nog een ')' vergeten in de eerste regel.
Re: eCard - Formbuilder - UDT
Posted: Mon May 03, 2010 4:38 pm
by stijlXpres
@Arnoud,
Gaat dat ook werken als je de adressen als variabelen invoegt?
Heb het nu zo gedaan, maar dat lijkt niet te werken...
Code: Select all
global $gCms;
$name =& $params['fld_44'];
$message =& $params['fld_41'];
$card =& $params['fld_45'];
$adres1 =& $params['email_ontvanger_1'];
$bodytext = '
Hallo,
Je hebt een persoonlijke eCard ontvangen van '.$name.':
Keuze kaart: '.$card.'
Persoonlijk bericht: '.$message.'';
$email_address_all = '$adres1, $adres2, $adres3, $adres4, $adres5';
$email_array = split(',', $email_address_all);
foreach ($email_array as $value) {
// remove white space
$email = preg_replace('/\s/', '', $value);
$cmsmailer =& $gCms->modules['CMSMailer']['object'];
$cmsmailer->SetBody($bodytext);
$cmsmailer->IsHTML(true);
$cmsmailer->SetSubject('Je hebt een SW4D-eCard ontvangen!');
$cmsmailer->AddAddress($email);
$cmsmailer->Send();
}
Re: eCard - Formbuilder - UDT
Posted: Mon May 03, 2010 4:50 pm
by Jos
Je moet mijn code effe niet te letterlijk nemen, het was bedoeld om je op een spoor te zetten. ;)
Ik ben er wel van overtuigd dat je voor iedere mail afzonderlijk send() moet gebruiken als ieder mailadres z'n eigen mailtje moet krijgen.
Anders kun je ook 5x addaddress gebruiken. Probeer maar eens:
Code: Select all
$cmsmailer->AddAddress($adres1);
$cmsmailer->AddAddress($adres2);
$cmsmailer->AddAddress($adres3);
$cmsmailer->AddAddress($adres4);
$cmsmailer->AddAddress($adres5);
$cmsmailer->Send();
Dan wordt er één mail naar alle adressen gestuurd. Als dat niet zo is en de mail maar gericht aan één adres binnenkomt, dan mankeert er wellicht wat aan het definieren van de $adres variabelen
edit: weer een tikkopieerfoutje:

$cmsmailer1->Send(); ipv $cmsmailer->Send();
Re: eCard - Formbuilder - UDT
Posted: Mon May 03, 2010 4:55 pm
by stijlXpres
Als dat niet zo is en de mail maar gericht aan één adres binnenkomt, dan mankeert er wellicht wat aan het definieren van de $adres variabelen Huh
Had ik idd ook gedacht, maar punt is dat telkens alleen het eerste adres wordt gebruikt, of, en dat maakt het een beetje vreemd, wanneer ik 3 adressen heb ingevuld, krijg ik het volgende binnen:
1x een mail aan adres 1, 2 en 3
1x een mail aan adres 1 en 2
1x een mail aan adres 1
En daar kan ik eerlijk gezegd geen touw aan vast knopen...
Re: eCard - Formbuilder - UDT
Posted: Mon May 03, 2010 4:58 pm
by Jos
stijlXpres wrote:
1x een mail aan adres 1, 2 en 3
1x een mail aan adres 1 en 2
1x een mail aan adres 1
En daar kan ik eerlijk gezegd geen touw aan vast knopen...
Wel logisch toch?
AddAddress doet wat de naam al doet vermoeden, het voegt een adres toe en laat de oude dus ook bestaan.
Als je tussen het verzenden van mails geen ClearAddresses() gebruikt, zullen het alleen maar meer mails worden
Re: eCard - Formbuilder - UDT
Posted: Mon May 03, 2010 5:00 pm
by Jos
ClearAddresses() wel goed gespeld?

let op de
dubbel d en
dubbel s
Re: eCard - Formbuilder - UDT
Posted: Mon May 03, 2010 5:10 pm
by stijlXpres
Okay, daar ga ik mee aan de slag!
edit: weer een tikkopieerfoutje: Undecided $cmsmailer1->Send(); ipv $cmsmailer->Send();
Waarom is die '1' toegevoegd?
Re: eCard - Formbuilder - UDT
Posted: Mon May 03, 2010 9:09 pm
by Jos
nee dat was dus het kopieerfoutje

Re: eCard - Formbuilder - UDT
Posted: Tue May 04, 2010 7:14 am
by deactivated010521
----------
(SOLVED) eCard - Formbuilder - UDT
Posted: Tue May 04, 2010 8:16 am
by stijlXpres
Het is opgelost!!
Met behulp van de code van Jos heb ik het toch werkend gekregen...
(In eerste instantie werd het bericht alleen naar het eerste adres gemaild, maar dat kwam doordat ik in het begin van de UDT ook alleen deze variabele had aangemaakt; eigen schuld dus...)
Onderstaand het werkende script; Wanneer ik de eCard-module helemaal werkend heb, zal ik deze wel even posten!
Code: Select all
global $gCms;
$name =& $params['fld_44'];
$message =& $params['fld_41'];
$card =& $params['fld_45'];
$adres1 =& $params['email_ontvanger_1'];
$adres2 =& $params['email_ontvanger_2'];
$adres3 =& $params['email_ontvanger_3'];
$adres4 =& $params['email_ontvanger_4'];
$adres5 =& $params['email_ontvanger_5'];
$bodytext = '
Hallo,
Je hebt een persoonlijke eCard ontvangen van '.$name.':
Keuze kaart: '.$card.'
Persoonlijk bericht: '.$message.'';
$cmsmailer =& $gCms->modules['CMSMailer']['object'];
$cmsmailer->SetBody($bodytext);
$cmsmailer->IsHTML(true);
$cmsmailer->SetSubject('Je hebt een SW4D-eCard ontvangen!');
if ( !empty($adres1)) {
$cmsmailer->AddAddress($adres1);
$cmsmailer->Send();
$cmsmailer->ClearAddresses();
}
if ( !empty($adres2)) {
$cmsmailer->AddAddress($adres2);
$cmsmailer->Send();
$cmsmailer->ClearAddresses();
}
if ( !empty($adres3)) {
$cmsmailer->AddAddress($adres3);
$cmsmailer->Send();
$cmsmailer->ClearAddresses();
}
if ( !empty($adres4)) {
$cmsmailer->AddAddress($adres4);
$cmsmailer->Send();
$cmsmailer->ClearAddresses();
}
if ( !empty($adres5)) {
$cmsmailer->AddAddress($adres5);
$cmsmailer->Send();
$cmsmailer->ClearAddresses();
}