Hallo,

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.

<?php
$email=array();
$email[0]="[email protected]";
$email[1]="[email protected]";
$email[2]="[email protected]";
$email[3]="[email protected]";
$email[4]="[email protected]";
$email[5]="[email protected]";
$to = $email[rand(0, count($email))];
?>

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.

<?php
$aantalEmails = 3;


$email=array();
$email[]="[email protected]";
$email[]="[email protected]";
$email[]="[email protected]";
$email[]="[email protected]";
$email[]="[email protected]";
$email[]="[email protected]";

// Array shuffelen
array_shuffle($email);

for($i = 0; $i < $aantalEmails; $i++) {
// Stuur mail
}
?>


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?
Je kan toch gewoon onderstaande in je for loop stoppen?


<?php

	$to = $email[$i];

?>


Dit script staat namelijk een aantal keer achter elkaar in een ifelse met $to, $to2 enz en werkt op deze manier niet erg lekker.


Je bent toch niet het stuk met de shuffle en de for loop aan het herhalen of wel?
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...

if( ($mynumber>1000) && ($mynumber<1119) ){
$email=array();
$email[]="[email protected]";
$email[]="[email protected]";
$email[]="[email protected]";
$email[]="[email protected]";
array_shuffle($email);

for($i = 0; $i < $aantalEmails; $i++) {
drupal_mail('formulier', 'formulier_mail', $i, '', $params, $from);
}



}


Hoe kan ik dat nou het beste aanpakken??
array_shuffle?
bedoel je niet [php]shuffle[/php]?

En je krijgt een 500 Internal Server error?
Lijkt me niet dat dat aan de code ligt.. ergens een .htaccess file staan die niet werkt?
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...


<?php
$params['naam'] = $form_values['submitted_tree']['naam'];
$params['postcode'] = $form_values['submitted_tree']['postcode'];

$aantalEmails = $form_values['submitted_tree']['aantal'];

// Vanaf hier de gegevens per postcode gebied aanpassen

//1000-1119 Amsterdam
$email=array();
$email[0]="[email protected]";
$email[1]="[email protected]";
$email[2]="[email protected]";
$email[3]="[email protected]";
shuffle($email);

for($i = 0; $i < $aantalEmails; $i++) {
$to = $email[$i];
}



$from = "[email protected]";
drupal_set_message('Formulier is verzonden naar de aanbieders');

$mynumber=$form_values['submitted_tree']['postcode'];

if( ($mynumber>1000) && ($mynumber<1119) ){
drupal_mail('formulier', 'formulier_mail', $to, '', $params, $from);
}

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
";
}
?>
Hij stuurt nu wel met bovenstaand script, maar steeds maar naar 1, niet naar meerdere als ik er naar bv 2 wil sturen...

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.



if( ($mynumber>1000) && ($mynumber<1119) ){
drupal_mail('formulier', 'formulier_mail', $to, '', $params, $from);
}


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');

?> 
Ik had inderdaad een tip gekregen over dat ik het deel na array shuffle, vanaf for($i = 0..... in het deel van

<?
if( ($mynumber>1000) && ($mynumber<1119) ){
drupal_mail('formulier', 'formulier_mail', $to, '', $params, $from);
}
?>

moet plaatsen, daarmee ben ik nu aan het stoeien. Ik zal zo ook even naar jouw script kijken, want we komen wel in de buurt in ieder geval...


Als ik het werkend heb, zal ik het script even online zetten in zijn geheel...

Bedankt zover.. :)

Reageren