webForumDet fria alternativet

Anpassade mail

5 svar · 444 visningar · startad av Qimen

QimenMedlem sedan juni 20013 568 inlägg
#1

Hej

Har fastnat rejält nu och vet inte hur jag ska lösa detta. Jag vill loopa 50 mail åt gången för att inte sidan ska göra timeout, inget svårt med det. Mitt problem är dock att jag måste anpassa varje mail nu med.

Har en tabell med en kolumn för e-postadresser samt en för län. Vill att det ska skrivas i ut i varje mail vilket län just den mailadressen har, till en början iaf. Senare när jag fått det att fungera så ska jag hämta mer data beroende på vilket län man har. Men kommer jag så långt att rätt län skrivs ut så fixar jag nog resten.

Först försökte jag med bcc, dvs skicka till 50 stycken med samma mail men då går det ju inte anpassa varje. Men om man plockar ut 50 poster, loopar igenom dem och gör så tills det tar slut?

Kom gärna med förslag, står helt stilla nu. :)

MungoMedlem sedan jan. 2000376 inlägg
#2

Du får göra det i två omgångar, först loopa igenom alla län och sen för varje iteration i den loopen skicka ett mail med BCC till alla som bor i det länet?

QimenMedlem sedan juni 20013 568 inlägg
#3

Mungo skrev:

Du får göra det i två omgångar, först loopa igenom alla län och sen för varje iteration i den loopen skicka ett mail med BCC till alla som bor i det länet?

Jag försökte så först, men fick det inte att fungera (lite mer pulande så hade det nog gått) men trodde det skulle ta för mycket kraft. Så borde gå att göra så utan problem?

/r Kan tillägga att funktionen är tänkt att köras som ett cronjobb (utskick en gång i veckan).

MungoMedlem sedan jan. 2000376 inlägg
#4

Hur många mail handlar det om? Se till att du har tagit bort timeoutfunktionen bara.

QimenMedlem sedan juni 20013 568 inlägg
#5

Löste det nu,
Kanske inte på det smidigaste sättet men det fungerar iaf. Kom gärna med förbättringar, ändringar.

function jobbevakaren_cron($sql_lan)
{
	$count 			= 0;
	$recepient 		= "";

	$sql = "SELECT * FROM je_bevaka WHERE lan = '$sql_lan'";
	$result = mysql_query($sql);

	while ($row = mysql_fetch_array($result)){
		
		$recepient .= ",".$row['epost'];
		$count++;
		
		if ($count == 50){
		
			$recepient = substr($recepient, 1);
			$lan = $this->editlan($sql_lan);
			
			/* Meddelande START */
		
			$headers .= "MIME-Version: 1.0\r \n";				
			$headers .= "From: \"huvud@adress.net\" <huvud@adress.net>\r \n";
			$headers .= "Reply-To: [email]huvud@adress.net[/email]\r \n";
			$headers .= "X-Priority: 3\r \n";
			$headers .= "X-MSMail-Priority: High\r \n";
			$headers .= "X-Mailer: PHP \n";
			$headers .= "X-Sender: <huvud@adress.net>\n"; 
			$headers .= "bcc:" . $recepient . "\n";
										
			$subject = "Jobbevakaren";
			$message .= "Ni bevakar " . $lan . ".\n\n";
						
			mail("huvud@adress.net",$subject,"$message","$headers");
			
			/* Meddelande SLUT */
			
			$count = 0;
			$recepient = "";
			
		}
	}
	
	if ($count > 0){
		
		$recepient = substr($recepient, 1);
		$lan = $this->editlan($sql_lan);
		
		/* Meddelande START */
	
		$headers .= "MIME-Version: 1.0\r \n";				
		$headers .= "From: \"huvud@adress.net\" <huvud@adress.net>\r \n";
		$headers .= "Reply-To: [email]huvud@adress.net[/email]\r \n";
		$headers .= "X-Priority: 3\r \n";
		$headers .= "X-MSMail-Priority: High\r \n";
		$headers .= "X-Mailer: PHP \n";
		$headers .= "X-Sender: <huvud@adress.net>\n"; 
		$headers .= "bcc:" . $recepient . "\n";
									
		$subject = "Jobbevakaren";
		$message .= "Ni bevakar " . $lan . ".\n\n";

					
		mail("huvud@adress.net",$subject,"$message","$headers");
		
		/* Meddelande SLUT */
	}
}
QimenMedlem sedan juni 20013 568 inlägg
#6

Mungo skrev:

Hur många mail handlar det om? Se till att du har tagit bort timeoutfunktionen bara.

Har ingen aning om det just nu. Det kommer användas till en ungdomsportal för unga som söker sommarjobb så jag tror inte det handlar om 100 000+ precis. Kan tänka mig runt 1000.

Genererad på 373 ms · cache AV · v20260730165559-full.f96bc7eb