[PHPMailer] Dynamische mailing - juiste manier
Mijn probleem:
Wat is de beste manier om de class PHPMailer aan te roepen, ik verzend dus elke mail met een unieke titel, onderwerp, en ontvanger. 50 per minuut (1 keer per minuut wordt dus het script aangeroepen, waarna er 50 mails verzonden worden).
Ik kan elke keer de class opnieuw aanroepen ($mail = new PHPMailer();) en vervolgens bericht, onderwerp, ontvanger opgeven, en dan een $mail->Send() uitvoeren. Echter denk ik dat 50x per minuut de zelfde class laden niet erg bevorderlijk is voor de load..
Mijn originele idee is dus als volgt:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
while($email = mysql_fetch_assoc($result_1)){
$tijdelijkeVars = array('/%naam%/','/%email%/');
$mailVars = array(stripslashes($email['naar_naam']),$email['naar_adres']);
$onderwerp =preg_replace($tijdelijkeVars, $mailVars, $email['onderwerp']);
$bericht = preg_replace($tijdelijkeVars, $mailVars, $email['bericht']);
$mail = new PHPMailer();
$mail->ClearAddresses();
$mail->From = $email['van_adres'];
$mail->FromName = $email['van_naam'];
$mail->AddReplyTo = $email['van_adres'];
$mail->AddAddress($email['naar_adres'], $email['naar_naam']);
$mail->Subject = $onderwerp;
$mail->Body = $bericht;
$mail->AltBody = 'Er is geen plaintext equivalent van deze mailing.';
if ($mail->Send() == true){
mysql_query("UPDATE nd_ma SET nd_ma.status = 1, verzonden = NOW() WHERE nd_ma.id = '".$email['mail_id']."'");
}else{
mysql_query("UPDATE nd_ma SET nd_ma.status = 2, error = '".$mail->ErrorInfo."', verzonden = NOW() WHERE nd_ma.id = '".$email['mail_id']."'");
}
}
?>
while($email = mysql_fetch_assoc($result_1)){
$tijdelijkeVars = array('/%naam%/','/%email%/');
$mailVars = array(stripslashes($email['naar_naam']),$email['naar_adres']);
$onderwerp =preg_replace($tijdelijkeVars, $mailVars, $email['onderwerp']);
$bericht = preg_replace($tijdelijkeVars, $mailVars, $email['bericht']);
$mail = new PHPMailer();
$mail->ClearAddresses();
$mail->From = $email['van_adres'];
$mail->FromName = $email['van_naam'];
$mail->AddReplyTo = $email['van_adres'];
$mail->AddAddress($email['naar_adres'], $email['naar_naam']);
$mail->Subject = $onderwerp;
$mail->Body = $bericht;
$mail->AltBody = 'Er is geen plaintext equivalent van deze mailing.';
if ($mail->Send() == true){
mysql_query("UPDATE nd_ma SET nd_ma.status = 1, verzonden = NOW() WHERE nd_ma.id = '".$email['mail_id']."'");
}else{
mysql_query("UPDATE nd_ma SET nd_ma.status = 2, error = '".$mail->ErrorInfo."', verzonden = NOW() WHERE nd_ma.id = '".$email['mail_id']."'");
}
}
?>
Is er iemand met verstand van PHPMailer, die mij kan vertellen hoe ik dit beter kan doen? Ik moet dus voor elke mail alle variabelen opnieuw kunnen genereren/opgeven, maar wil niet de class 50x per minuut hoeven laden/oproepen.
Oplossingen met SMTP connecties openen zijn ook welkom (dus connectie openen, en vervolgens alle mails verzenden via die connectie), mits het maar via de PHPMailer class gaat.
Ik heb geen idee of dit bericht in PHP algemeen hoort, of in OOP.
phpmailer
eerste stukje zou je al moeten verder helpen.
new PHPMAILER()
while lus {
- vars toewijzen
- send
- clearAdresses()
- clearAttachements()
}
Gewoon even bij phpmailer kijken, binnen 10sec gevonden: eerste stukje zou je al moeten verder helpen.
new PHPMAILER()
while lus {
- vars toewijzen
- send
- clearAdresses()
- clearAttachements()
}
Edit:
was me al weer iemand voor
Gewijzigd op 01/01/1970 01:00:00 door Jan geen
En ik kan gewoon alle vars overschrijven? Dus ook de From?
ja