Swiftmailer en MYsql
Dus in dit stukje:
Code (php)
1
2
3
2
3
<?
if ($swift->send($message, new Swift_Address("[email protected]", "Marco"), new Swift_Address("[email protected]", "Mijn site")))
?>
if ($swift->send($message, new Swift_Address("[email protected]", "Marco"), new Swift_Address("[email protected]", "Mijn site")))
?>
Iets als?:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?
$result = mysql_query("SELECT * FROM mailing_test");
while ($row = mysql_fetch_assoc ($query)) {
$mailer->addBCC($row['email']);
$mail->SMTPAuth = true;
}
?>
$result = mysql_query("SELECT * FROM mailing_test");
while ($row = mysql_fetch_assoc ($query)) {
$mailer->addBCC($row['email']);
$mail->SMTPAuth = true;
}
?>
Dit stukje komt uit mijn phpmailer, maar dit werkt niet meer.
Is dit dan in swiftmailer te plaatsen???
Als iemand mij hiermee kan helpen...graag...
Alvast bedankt...
Dank je, k heb het nu werkend!
Is het ook mogelijk dat het script elke keer 25 of 50 stuks mailt en dan even wacht voordat hij weer verder mailt?
Ik heb het script deels hieronder :
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
26
27
28
29
30
31
32
33
34
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?
require_once "lib/Swift.php";
require_once "lib/Swift/Connection/SMTP.php";
$smtp =& new Swift_Connection_SMTP("smtp1.servage.net", 25);
$smtp->setUsername("********");
$smtp->setpassword("********");
$swift =& new Swift($smtp);
$bericht = new Swift_Message("Mailing", "$htmlbody", "text/html");
//mailadressen ophalen
$mailQuery = "SELECT email FROM mailing";
$mailResult = mysql_query($mailQuery);
if(!$mailResult)
{
echo 'Het ophalen van de mailadressen is mislukt! Error:' . mysql_error();
}
else
{
$ontvangers =& new Swift_RecipientList();
$ontvangers->addTo("[email protected]", "Mailing");
while($row = mysql_fetch_assoc($mailResult))
{
$ontvangers->addBcc($row['email']);
}
//Het aantal dat verzonden is opvragen
$number_sent = $swift->send($bericht, $ontvangers, "[email protected]", "Mailing");
echo 'Het bericht is verzonden naar ' . $number_sent . ' ontvangers.';
}
?>
require_once "lib/Swift.php";
require_once "lib/Swift/Connection/SMTP.php";
$smtp =& new Swift_Connection_SMTP("smtp1.servage.net", 25);
$smtp->setUsername("********");
$smtp->setpassword("********");
$swift =& new Swift($smtp);
$bericht = new Swift_Message("Mailing", "$htmlbody", "text/html");
//mailadressen ophalen
$mailQuery = "SELECT email FROM mailing";
$mailResult = mysql_query($mailQuery);
if(!$mailResult)
{
echo 'Het ophalen van de mailadressen is mislukt! Error:' . mysql_error();
}
else
{
$ontvangers =& new Swift_RecipientList();
$ontvangers->addTo("[email protected]", "Mailing");
while($row = mysql_fetch_assoc($mailResult))
{
$ontvangers->addBcc($row['email']);
}
//Het aantal dat verzonden is opvragen
$number_sent = $swift->send($bericht, $ontvangers, "[email protected]", "Mailing");
echo 'Het bericht is verzonden naar ' . $number_sent . ' ontvangers.';
}
?>
Ik weet dat het kan, alleen kom ik er niet uit hoe ik dat moet doen, hopelijk wil iemand mij hiermee helpen.
Niet Bumpen::
Gewijzigd op 01/01/1970 01:00:00 door Marco
Marco schreef op 11.01.2009 15:44:
Welke error? Het zou in principe gewoon moeten werken...Ik dacht dat ik het werkend had. Als ik een mailing van 250 verstuur krijg ik een error.
Dit is de melding:
Fatal error: Uncaught exception 'Swift_BadResponseException' with message 'Expected response code(s) [250] but got response [421 smtp1.servage.net Error: too many errors]' in /mounted-storage/home114a/sub008/sc22098-IKIW/www/site/admin/mailing/swift/lib/Swift.php:250 Stack trace: #0 /mounted-storage/home114a/sub008/sc22098-IKIW/www/site/admin/mailing/swift/lib/Swift.php(310): Swift->assertCorrectResponse(Object(Swift_Events_ResponseEvent), 250) #1 /mounted-storage/home114a/sub008/sc22098-IKIW/www/site/admin/mailing/swift/lib/Swift.php(319): Swift->command('RSET', 250) #2 /mounted-storage/home114a/sub008/sc22098-IKIW/www/site/admin/mailing/swift/lib/Swift.php(455): Swift->reset() #3 /mounted-storage/home114a/sub008/sc22098-IKIW/www/site/admin/mailing/swift/update-mailing.php(139): Swift->send(Object(Swift_Message), Object(Swift_RecipientList), 'noreply@derodeh...', 'De Rode Haan') #4 {main} thrown in /mounted-storage/home114a/sub008/sc22098-IKIW/www/site/admin/mailing/swift/lib/Swift.php on line 250
Quote:
Hmm, de smtp server geeft aan dat er teveel fouten opgetreden zijn?421 smtp1.servage.net Error: too many errors
Misschien eens googlen naar deze foutmelding om te zien wat daar de oorzaak van zou kunnen zijn? Wellicht email adressen die niet kloppen, alhoewel ik dat niet zou verwachten. Andere mogelijkheid die ik kan bedenken is dat de server het als spam ziet dat je 250 mailtjes achter elkaar verzendt. Maar goed, wellicht dat google een antwoord heeft...
Ik heb dat batch mailen bekeken,maar snap niet hoe ik dat moet opzetten.
Dit kan worden veroorzaakt door te veel mailtjes tegelijk.
Op de site kan ik nergens voorbeelden vinden hoe dat werkt met een mysql database...
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
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?
require_once "lib/Swift.php";
require_once "lib/Swift/Connection/SMTP.php";
$smtp =& new Swift_Connection_SMTP("smtp1.servage.net", 25);
$smtp->setUsername("********");
$smtp->setpassword("********");
$swift =& new Swift($smtp);
$bericht = new Swift_Message("Mailing", $htmlbody, "text/html");
//mailadressen ophalen
$mailQuery = "SELECT email FROM mailing";
$mailResult = mysql_query($mailQuery);
if(!$mailResult)
{
echo 'Het ophalen van de mailadressen is mislukt! Error:' . mysql_error();
}
else
{
$ontvangers =& new Swift_RecipientList();
$ontvangers->addTo("[email protected]", "Mailing");
while($row = mysql_fetch_assoc($mailResult))
{
$ontvangers->addTo($row['mail']);
}
//Het aantal dat verzonden is opvragen
$swift->batchSend($message, $recipients, new Swift_Address("[email protected]", "Mailing");
}
?>
require_once "lib/Swift.php";
require_once "lib/Swift/Connection/SMTP.php";
$smtp =& new Swift_Connection_SMTP("smtp1.servage.net", 25);
$smtp->setUsername("********");
$smtp->setpassword("********");
$swift =& new Swift($smtp);
$bericht = new Swift_Message("Mailing", $htmlbody, "text/html");
//mailadressen ophalen
$mailQuery = "SELECT email FROM mailing";
$mailResult = mysql_query($mailQuery);
if(!$mailResult)
{
echo 'Het ophalen van de mailadressen is mislukt! Error:' . mysql_error();
}
else
{
$ontvangers =& new Swift_RecipientList();
$ontvangers->addTo("[email protected]", "Mailing");
while($row = mysql_fetch_assoc($mailResult))
{
$ontvangers->addTo($row['mail']);
}
//Het aantal dat verzonden is opvragen
$swift->batchSend($message, $recipients, new Swift_Address("[email protected]", "Mailing");
}
?>
Ik moet er nog een deel van een plain mail inzetten, en de verwijzing naar welke tabel moet er nog in...
Mijn vraag is nu:
Kan ik de plain tekst mail net zo erin zetten als de html?
Waar geef ik aan dat het script in tabal 'mailing' moet kijken naar de rijen email en naam?
En mijn laatste vraag...
Klopt dit script? of ben ik nog iets vergeten ???
Ik hoor graag jullie mening...Alvast bedankt !
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?
$hostname = '********';
$username = '********';
$password = '********';
$database = '********';
mysql_connect("$hostname","$username","$password");
mysql_select_db("$database");
// An HTML email through Swiftmailer (http://www.swiftmailer.org).
/************ Set up the HTML body. *******************/
// Below the $htmlbody variable contains all the HTML content of my email.
$htmlbody = ' Hier mijn htmlcontent '
require('lib/Swift.php');
require('lib/Swift/Connection/SMTP.php');
/* this handles the throttling */
require('lib/Swift/Plugin/AntiFlood.php');
/* this holds all of your addresses */
$recipients = new Swift_RecipientList();
/* Grab the addresses from the DB (this is using MDB2) */
$result = "SELECT email FROM mailing";
while ($row = $result->fetchRow())
{
$recipients->addTo($row['email'], $row['naam']);
}
@$result->free();
try
{
$smtp =& new Swift_Connection_SMTP("smtp1.********.net", 25);
$smtp->setUsername("********");
$smtp->setpassword("********");
set_time_limit(0);
$swift->log->enable();
/* 100 mails per batch with a 60 second pause between batches */
$swift->attachPlugin(new Swift_Plugin_AntiFlood(100, 60),
'anti-flood');
flush();
$message = new Swift_Message('Mailing');
$message->setCharset('utf-8');
$message->setReplyTo(noreply@site.com);
$message->setReturnPath(noreply@site.com);
$message->headers->set('Errors-To', noreply@site.com);
$message->attach(new Swift_Message_Part($plain_content));
$message->attach(new Swift_Message_Part($htmlbody, 'text/html'));
$num_sent = $swift->batchSend($message, $recipients, new Swift_Address(noreply@site.com, 'Update'));
$swift->disconnect();
?>
$hostname = '********';
$username = '********';
$password = '********';
$database = '********';
mysql_connect("$hostname","$username","$password");
mysql_select_db("$database");
// An HTML email through Swiftmailer (http://www.swiftmailer.org).
/************ Set up the HTML body. *******************/
// Below the $htmlbody variable contains all the HTML content of my email.
$htmlbody = ' Hier mijn htmlcontent '
require('lib/Swift.php');
require('lib/Swift/Connection/SMTP.php');
/* this handles the throttling */
require('lib/Swift/Plugin/AntiFlood.php');
/* this holds all of your addresses */
$recipients = new Swift_RecipientList();
/* Grab the addresses from the DB (this is using MDB2) */
$result = "SELECT email FROM mailing";
while ($row = $result->fetchRow())
{
$recipients->addTo($row['email'], $row['naam']);
}
@$result->free();
try
{
$smtp =& new Swift_Connection_SMTP("smtp1.********.net", 25);
$smtp->setUsername("********");
$smtp->setpassword("********");
set_time_limit(0);
$swift->log->enable();
/* 100 mails per batch with a 60 second pause between batches */
$swift->attachPlugin(new Swift_Plugin_AntiFlood(100, 60),
'anti-flood');
flush();
$message = new Swift_Message('Mailing');
$message->setCharset('utf-8');
$message->setReplyTo(noreply@site.com);
$message->setReturnPath(noreply@site.com);
$message->headers->set('Errors-To', noreply@site.com);
$message->attach(new Swift_Message_Part($plain_content));
$message->attach(new Swift_Message_Part($htmlbody, 'text/html'));
$num_sent = $swift->batchSend($message, $recipients, new Swift_Address(noreply@site.com, 'Update'));
$swift->disconnect();
?>
Gewijzigd op 01/01/1970 01:00:00 door Marco
Om adressen uit een database te halen kan je die gewoon net als altijd met een SQL query ophalen, bedoel je dat?
Er staat op regel 28 /* Grab the addresses from the DB
Echter zie ik niet dat hij naar de database verwijst...
Wat moet ik daar dan neerzetten?
Een SELECT query om de adressen uit de database te selecteren misschien?
Heb de missende quote en de query aangepast in bovenstaand script...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$sql = "SELECT email FROM mailing";
if(!$result = mysql_query($sql))
{
trigger_error(mysql_error().' In query: '.$sql);
}
else
{
while($row = mysql_fetch_assoc($result))
{
// Rest van script...
}
}
?>
$sql = "SELECT email FROM mailing";
if(!$result = mysql_query($sql))
{
trigger_error(mysql_error().' In query: '.$sql);
}
else
{
while($row = mysql_fetch_assoc($result))
{
// Rest van script...
}
}
?>
Kijk eens of je ook een error krijgt als je online mailtjes verstuurd.
...mail dan wel alleen jezelf, als test dan...
Navraag bij de hosting leert dat ik maximaal 20 mailtjes per keer en max 300 mails per uur mag versturen.
Ik moet dus een batch maken die dat kan.
Ik hoop dat iemand mij kan helpen met het maken van de batch aangezien ik daar echt niet uitkom...
Echter wil ik nu nog dat het script de mailadressen 'email' uit de database 'mailing_test' haalt en omdat ik de decorator er ook in heb moet ook de naam uit de rij 'naam' gehaald worden.
Ik heb het script geprobeert te maken met mysql,maar het werkt niet.
Wie kan mij helpen...
Deel van het script:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?
$mailQuery = "SELECT email, naam FROM mailing_test";
$mailResult = mysql_query($mailQuery);
if(!$mailResult)
{
echo 'Het ophalen van de mailadressen is mislukt! Error:' . mysql_error();
}
else
{
$recipients =& new Swift_RecipientList();
while($row = mysql_fetch_assoc($mailResult))
{
$to->addBcc($row['email']);
}
$msg = new Swift_Message ($subj, $body, 'text/html');
$to = array (
new Swift_Address ($row['email'], $row['naam']),
);
$replacements = array (
$row['email'] => array ('{naam}' => $row['naam']),
);
$swift->attachPlugin(new Swift_Plugin_Decorator($replacements), "decorator");
foreach ($to as $address) {
$recipients->addTo ($address);
}
$number_sent = $swift->batchSend ($msg, $recipients, $from);
$swift->disconnect ();
echo 'De mailing is niet verstuurd naar de volgende e-mail adressen:';
echo '<pre>';
print_r ($log->getFailedRecipients());
echo '</pre>';
echo 'Het bericht is verzonden naar ' . $number_sent . ' ontvangers.';
?>
$mailQuery = "SELECT email, naam FROM mailing_test";
$mailResult = mysql_query($mailQuery);
if(!$mailResult)
{
echo 'Het ophalen van de mailadressen is mislukt! Error:' . mysql_error();
}
else
{
$recipients =& new Swift_RecipientList();
while($row = mysql_fetch_assoc($mailResult))
{
$to->addBcc($row['email']);
}
$msg = new Swift_Message ($subj, $body, 'text/html');
$to = array (
new Swift_Address ($row['email'], $row['naam']),
);
$replacements = array (
$row['email'] => array ('{naam}' => $row['naam']),
);
$swift->attachPlugin(new Swift_Plugin_Decorator($replacements), "decorator");
foreach ($to as $address) {
$recipients->addTo ($address);
}
$number_sent = $swift->batchSend ($msg, $recipients, $from);
$swift->disconnect ();
echo 'De mailing is niet verstuurd naar de volgende e-mail adressen:';
echo '<pre>';
print_r ($log->getFailedRecipients());
echo '</pre>';
echo 'Het bericht is verzonden naar ' . $number_sent . ' ontvangers.';
?>
Alvast bedankt voor de hulp...
Gewijzigd op 01/01/1970 01:00:00 door Marco