(SOLVED) eCard - Formbuilder - UDT

Nederlandse ondersteuning voor CMS Made Simple

Moderator: velden

Post Reply
User avatar
stijlXpres
Forum Members
Forum Members
Posts: 137
Joined: Tue May 05, 2009 12:10 pm
Location: Raalte, the Netherlands

(SOLVED) eCard - Formbuilder - UDT

Post 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?
Last edited by stijlXpres on Tue May 04, 2010 8:17 am, edited 1 time in total.
Jos
Support Guru
Support Guru
Posts: 4019
Joined: Wed Sep 05, 2007 8:03 pm
Location: The Netherlands

Re: eCard - Formbuilder - UDT

Post 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.
Jos
Support Guru
Support Guru
Posts: 4019
Joined: Wed Sep 05, 2007 8:03 pm
Location: The Netherlands

Re: eCard - Formbuilder - UDT

Post 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
deactivated010521

Re: eCard - Formbuilder - UDT

Post by deactivated010521 »

----------
Last edited by deactivated010521 on Tue Mar 12, 2013 3:19 pm, edited 1 time in total.
User avatar
stijlXpres
Forum Members
Forum Members
Posts: 137
Joined: Tue May 05, 2009 12:10 pm
Location: Raalte, the Netherlands

Re: eCard - Formbuilder - UDT

Post 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.
User avatar
stijlXpres
Forum Members
Forum Members
Posts: 137
Joined: Tue May 05, 2009 12:10 pm
Location: Raalte, the Netherlands

Re: eCard - Formbuilder - UDT

Post 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();
}
Jos
Support Guru
Support Guru
Posts: 4019
Joined: Wed Sep 05, 2007 8:03 pm
Location: The Netherlands

Re: eCard - Formbuilder - UDT

Post 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();
Last edited by Jos on Mon May 03, 2010 4:54 pm, edited 1 time in total.
User avatar
stijlXpres
Forum Members
Forum Members
Posts: 137
Joined: Tue May 05, 2009 12:10 pm
Location: Raalte, the Netherlands

Re: eCard - Formbuilder - UDT

Post 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...
Jos
Support Guru
Support Guru
Posts: 4019
Joined: Wed Sep 05, 2007 8:03 pm
Location: The Netherlands

Re: eCard - Formbuilder - UDT

Post 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
Jos
Support Guru
Support Guru
Posts: 4019
Joined: Wed Sep 05, 2007 8:03 pm
Location: The Netherlands

Re: eCard - Formbuilder - UDT

Post by Jos »

ClearAddresses() wel goed gespeld?  ;)  let op de dubbel d en dubbel s
User avatar
stijlXpres
Forum Members
Forum Members
Posts: 137
Joined: Tue May 05, 2009 12:10 pm
Location: Raalte, the Netherlands

Re: eCard - Formbuilder - UDT

Post 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?
Jos
Support Guru
Support Guru
Posts: 4019
Joined: Wed Sep 05, 2007 8:03 pm
Location: The Netherlands

Re: eCard - Formbuilder - UDT

Post by Jos »

nee dat was dus het kopieerfoutje  :-X
deactivated010521

Re: eCard - Formbuilder - UDT

Post by deactivated010521 »

----------
Last edited by deactivated010521 on Tue Mar 12, 2013 3:19 pm, edited 1 time in total.
User avatar
stijlXpres
Forum Members
Forum Members
Posts: 137
Joined: Tue May 05, 2009 12:10 pm
Location: Raalte, the Netherlands

(SOLVED) eCard - Formbuilder - UDT

Post 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();
}
Post Reply

Return to “Dutch - Nederlands”