Ik heb deze vraag al eens gesteld en heb toen even getest, maar er lukt iets nog niet helemaal bij mij..
Onderstaand mijn eerste script en daaronder een aangepast script wat Thijs X mij toen heeft gestuurd en daarbij ook een kleine uitleg wat de bedoeling is.
Aantal offertes te ontvangen:
0 1
0 2
0 3
0 4
0 5
0 6
De gebruiker kiest bv 3, dan is het de bedoeling dat op het moment dat het formulier verstuurd wordt er 3 emailadressen uit het lijstje rand() kehaald worden en verstuurd worden. Op dit moment haalt het formulier er gewoon 1 uit en wordt deze verstuurd, maar ik wil dat er dus gekeken wordt naar de vraag hoeveel offertes er terug moeten komen en dus hoeveel mailadressen er geselecteerd moeten worden om naar te versturen.
Het 2e scriptis wel wat ik wil, maar ik wil daarin ook nog het veld $to gebruiken en het lukt mij niet deze op de manier te plaatsen zoals hoe het in het eerste script staat en dat het dan ook werkt. Dit script staat namelijk een aantal keer achter elkaar in een ifelse met $to, $to2 enz en werkt op deze manier niet erg lekker. Iemand een idee hoe ik dit verder nog kan doen?
Ik heb nu onderstaande en dan krijg ik een http 500 error, verder geen handige melding eigenlijk. Ik doe vast iets verkeerd. Wat verder de bedoeling is, is dat erna nog een aantal elseif komen met hetzelfde alleen dan een ander postcodegebied...
Nu heb ik het als onderstaande geplaatst(shuffle ipv array_shuffle) en zegt de melding dat de emails worden verzonden, alleen verzend hij steeds maar 1 mail ipv het aantal dat ik opgeef. Dus het lijkt dat het al beter gaat, maar ergens snapt de code niet waarheen het gestuurd moet worden...
function formulier_mail($key, &$message, $params) {
$message['subject'] = "Aanvraag offerte via con";
$message['body'] = "
Via onze website is de volgende offerte aanvraag binnengekomen.
Ik was hem wat voor je aan het ombouwen maar er klop volgens mij veel meer niet aan. Onderstaande code zal waarschijnlijk nog niet naar behoren werken.
Je zult op deze manier altijd hetzelfde bericht versturen. "Het kan aan mij liggen maar dat lijkt niet de bedoeling."
Ik heb geen idee hoe gecontroleerd word of het bericht ook daadwerkelijk is verstuurd. Ik gok dat drupal_mail true of false terug geeft. Dat moet je even controleren.
Kun je meer keren drupal_set_message() doen of maar 1 keer? Dan moet je de emails die verzonden zijn tellen en kijken het aantal gelijk is aan het te verzenden E-mails en dan via drupal_set_message() het resultaat terug sturen.
Dit is het stuk dat jij gebruikt maar dit is geen lus dus het kan ook niet meer dan 1 E-mail versturen. Het lijkt alsof je een bestaand iets aan het ombouwen bent want dat me die postcodes komt verder niet voor in je script.
<?php
#| Settings | Het E-mail adres waarvan de E-mail berichten worden verstuurd.
$from = "[email protected]";
#| De lijst met alle E-mail adressen.
$email=array();
$email[0]="[email protected]";
$email[1]="[email protected]";
$email[2]="[email protected]";
$email[3]="[email protected]";
#| Functie voor het samenstellen van een E-mail bericht.
function formulier_mail($key, $message, $params){
$message['subject'] = "Aanvraag offerte via con";
$message['body'] = "
Via onze website is de volgende offerte aanvraag binnengekomen.
".$params['naam']."
".$params['postcode']."
Vriendelijke groet,
Offn
";
}
#| Parameters.
$params['naam'] = $form_values['submitted_tree']['naam'];
$params['postcode'] = $form_values['submitted_tree']['postcode'];
#| Het aantal te verzenden E-mails.
$aantalEmails = $form_values['submitted_tree']['aantal'];
#| De lijst met E-mail adressen door elkaar husselen.
shuffle($email);
#| De lijst met gekozen E-mail adressen aflopen.
for($i = 0; $i < $aantalEmails; $i++) {
#| Email verzenden.
drupal_mail('formulier', 'formulier_mail', $email[$i], '', $params, $from);
}
#| Bericht weergeven.
drupal_set_message('Formulier is verzonden naar de aanbieders');
?>