PHP Mailer en AddStingAttachment
http://phpmailer.worxware.com/index.php?pg=tutorial gelezen, maar het wil me maar niet lukken. Ik zal wel niet helemaal begrijpen wat er exact bedoeld wordt. Onderstaand de code zoals ik die tot nu toe heb opgesteld.
Weet iemand raad? Bij voorbaat dank.
Deze vraag heeft ook betrekking op mijn voorgaande. Voor dezelfde website moeten via PHP Mailer zo'n 75 persberichten verzonden worden die vergezeld gaan van afbeeldingen. Zowel persbericht als afbeeldingen staan in de databank. Hoe krijg ik nu de afbeeldingen met het persbericht verzonden? Ik heb de instructie op Weet iemand raad? Bij voorbaat dank.
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
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
<?php
$filter_id = $_GET['filter'];
$sql= "SELECT * FROM persberichten WHERE ID_persbericht = $filter_id";
$resultaat1 = mysql_query($sql);
$rij = mysql_fetch_array($resultaat1);
$inhoud = $rij['persbericht'];
$afb_1 = $rij['afb_1'];
$afb_2 = $rij['afb_2'];
$encoding = "base64";
$type = "application/octet-stream";
if (isset($_POST['Verzenden'])) {
$sql = "SELECT email, persbureau FROM persburo"; //email, persburo
$resultaat = mysql_query($sql);
if (mysql_num_rows($resultaat) > 0) {
echo "<h4><div>Verzonden e-mails</div></h4><br>";
require("phpmailer/class.phpmailer.php"); // pad naar phpmailer
$mail = new PHPMailer();
$mail->From = "[email protected]";
$mail->FromName = "Naam afzender";
$mail->Subject = $_POST['onderwerp'];
$mail->Host = "smtp.domeinnaam.nl";
$mail->Mailer = "smtp";
$mail->SetLanguage("nl", "/optional/path/to/language/directory/");
while (list($email, $persbureau) = mysql_fetch_row($resultaat)) {
$inhoud = $_POST['Persbericht_expositie'];
$inhoud = ereg_replace("{persbureau}", $persbureau, $inhoud);
$datum = date("d-m-Y", time());
$inhoud = ereg_replace("{datum}", $datum, $inhoud);
$body = "<html><head><title>".$_POST['onderwerp']."</title></head><body style=\"font-family:Arial, font-size: 10 pt\" color=\"#000000\">$inhoud <br/><br/>Hier komt een voetnoot.</body></html>";
$body = nl2br($body); // vervang de Enters door <br>
$mail->Body = $body;
$mail->AltBody = $inhoud;
$geadresseerde = $persbureau;
$mail->AddAddress($email, $geadresseerde);
$mail->AddStringAttachment($afb_1,'1.jpg',$encoding,$type);
$mail->AddStringAttachment($afb_2,'2.jpg',$encoding,$type);
if (!$mail-> Send()) { // Indien NIET goed verzonden
echo "<p>De e-mail naar ".$geadresseerde." is echter niet goed verzonden.<br/>";
echo "Controleer of het ingevoerde e-mailadres <b>".$email."</b> wel correct is.</p>";
}
$mail->ClearAddresses();
}
echo "<p>Er zijn ".mysql_num_rows($resultaat)." e-mails verzonden.</p>"; //Indien WEL goed verzonden, geeft het aantal verzonden e-mails aan
}
} else {
echo "<p>Persbericht van de expositie op <b>".$rij['expodagen']." ".$jaar_act.".</b></p>";
echo "<form method=\"POST\" action=\"".$_SERVER['PHP_SELF']."\">";
echo "<p valign=\"middle\">Onderwerp: <input type=\"text\" name=\"onderwerp\" class=\"nieuwsform\" size=\"50\">";
echo "<p><textarea rows=\"13\" cols=\"85\" name=\"Persbericht_expositie\" class=\"invulform\">Aan de redactie van: {persbureau}, <br><br>".ucfirst($rij['persbericht'])."</textarea></p>";
echo "<p><input type=\"submit\" name=\"Verzenden\" value=\"Verzenden\" title=\"Verzenden\"></p></form>";
}
mysql_close($db);
?>
$filter_id = $_GET['filter'];
$sql= "SELECT * FROM persberichten WHERE ID_persbericht = $filter_id";
$resultaat1 = mysql_query($sql);
$rij = mysql_fetch_array($resultaat1);
$inhoud = $rij['persbericht'];
$afb_1 = $rij['afb_1'];
$afb_2 = $rij['afb_2'];
$encoding = "base64";
$type = "application/octet-stream";
if (isset($_POST['Verzenden'])) {
$sql = "SELECT email, persbureau FROM persburo"; //email, persburo
$resultaat = mysql_query($sql);
if (mysql_num_rows($resultaat) > 0) {
echo "<h4><div>Verzonden e-mails</div></h4><br>";
require("phpmailer/class.phpmailer.php"); // pad naar phpmailer
$mail = new PHPMailer();
$mail->From = "[email protected]";
$mail->FromName = "Naam afzender";
$mail->Subject = $_POST['onderwerp'];
$mail->Host = "smtp.domeinnaam.nl";
$mail->Mailer = "smtp";
$mail->SetLanguage("nl", "/optional/path/to/language/directory/");
while (list($email, $persbureau) = mysql_fetch_row($resultaat)) {
$inhoud = $_POST['Persbericht_expositie'];
$inhoud = ereg_replace("{persbureau}", $persbureau, $inhoud);
$datum = date("d-m-Y", time());
$inhoud = ereg_replace("{datum}", $datum, $inhoud);
$body = "<html><head><title>".$_POST['onderwerp']."</title></head><body style=\"font-family:Arial, font-size: 10 pt\" color=\"#000000\">$inhoud <br/><br/>Hier komt een voetnoot.</body></html>";
$body = nl2br($body); // vervang de Enters door <br>
$mail->Body = $body;
$mail->AltBody = $inhoud;
$geadresseerde = $persbureau;
$mail->AddAddress($email, $geadresseerde);
$mail->AddStringAttachment($afb_1,'1.jpg',$encoding,$type);
$mail->AddStringAttachment($afb_2,'2.jpg',$encoding,$type);
if (!$mail-> Send()) { // Indien NIET goed verzonden
echo "<p>De e-mail naar ".$geadresseerde." is echter niet goed verzonden.<br/>";
echo "Controleer of het ingevoerde e-mailadres <b>".$email."</b> wel correct is.</p>";
}
$mail->ClearAddresses();
}
echo "<p>Er zijn ".mysql_num_rows($resultaat)." e-mails verzonden.</p>"; //Indien WEL goed verzonden, geeft het aantal verzonden e-mails aan
}
} else {
echo "<p>Persbericht van de expositie op <b>".$rij['expodagen']." ".$jaar_act.".</b></p>";
echo "<form method=\"POST\" action=\"".$_SERVER['PHP_SELF']."\">";
echo "<p valign=\"middle\">Onderwerp: <input type=\"text\" name=\"onderwerp\" class=\"nieuwsform\" size=\"50\">";
echo "<p><textarea rows=\"13\" cols=\"85\" name=\"Persbericht_expositie\" class=\"invulform\">Aan de redactie van: {persbureau}, <br><br>".ucfirst($rij['persbericht'])."</textarea></p>";
echo "<p><input type=\"submit\" name=\"Verzenden\" value=\"Verzenden\" title=\"Verzenden\"></p></form>";
}
mysql_close($db);
?>
Om het eventuele antwoord niet te verwarrend te maken, op deze manier zijn het afzonderlijke vragen. Overigens had ik gehoopt op een antwoord gehad waar ik iets mee kan ipv. deze vraag :-)
AddStringAttachment
AddAttachment
Toevoeging op 10/09/2010 19:36:10:
Lees die handleiding dan nog maar eens goed door!!
AddStringAttachment
AddAttachment
Toevoeging op 10/09/2010 19:37:00:
Noppes Homeland op 10/09/2010 19:35:48:
Lees die handleiding dan nog maar eens goed door!!
AddStringAttachment
AddAttachment
AddStringAttachment
AddAttachment
Met alle respect, dit is een antwoord waar ik dus niets aan heb. Ooit aan gedacht dat ik dat al tig keer gedaan zou kunnen hebben maar gewoon niet zie waar het probleem zit? Ik dacht dat het forum een ander doel diende dan dit soort opmerkingen.
Maar zolang jij het verschil tussen
- AddStringAttachment
- AddAttachment
niet weet te achterhalen, blijft het een gebed zonder einde.
daarnaast gebruik je ook nog eens functies welke gekenmerkt zijn met: DEPRECATED
en je gaat ook heel slordig om met je variabelen.
Misschien dat je de debug modes eens aan moet zetten.
set_time_limit() kun je aanroepen binnen je while. Op die manier zal alles verstuurd worden. Kan alleen als safe_mode niet aan staan:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
while (list($email, $persbureau) = mysql_fetch_row($resultaat)) {
$inhoud = $_POST['Persbericht_expositie'];
$inhoud = ereg_replace("{persbureau}", $persbureau, $inhoud);
$datum = date("d-m-Y", time());
$inhoud = ereg_replace("{datum}", $datum, $inhoud);
$body = "<html><head><title>".$_POST['onderwerp']."</title></head><body style=\"font-family:Arial, font-size: 10 pt\" color=\"#000000\">$inhoud <br/><br/>Hier komt een voetnoot.</body></html>";
$body = nl2br($body); // vervang de Enters door <br>
$mail->Body = $body;
$mail->AltBody = $inhoud;
$geadresseerde = $persbureau;
$mail->AddAddress($email, $geadresseerde);
$mail->AddStringAttachment($afb_1,'1.jpg',$encoding,$type);
$mail->AddStringAttachment($afb_2,'2.jpg',$encoding,$type);
if (!$mail-> Send()) { // Indien NIET goed verzonden
echo "<p>De e-mail naar ".$geadresseerde." is echter niet goed verzonden.<br/>";
echo "Controleer of het ingevoerde e-mailadres <b>".$email."</b> wel correct is.</p>";
set_time_limit(20); // nu kun je voor de volgende mail weer 20 gebruiken
}
?>
while (list($email, $persbureau) = mysql_fetch_row($resultaat)) {
$inhoud = $_POST['Persbericht_expositie'];
$inhoud = ereg_replace("{persbureau}", $persbureau, $inhoud);
$datum = date("d-m-Y", time());
$inhoud = ereg_replace("{datum}", $datum, $inhoud);
$body = "<html><head><title>".$_POST['onderwerp']."</title></head><body style=\"font-family:Arial, font-size: 10 pt\" color=\"#000000\">$inhoud <br/><br/>Hier komt een voetnoot.</body></html>";
$body = nl2br($body); // vervang de Enters door <br>
$mail->Body = $body;
$mail->AltBody = $inhoud;
$geadresseerde = $persbureau;
$mail->AddAddress($email, $geadresseerde);
$mail->AddStringAttachment($afb_1,'1.jpg',$encoding,$type);
$mail->AddStringAttachment($afb_2,'2.jpg',$encoding,$type);
if (!$mail-> Send()) { // Indien NIET goed verzonden
echo "<p>De e-mail naar ".$geadresseerde." is echter niet goed verzonden.<br/>";
echo "Controleer of het ingevoerde e-mailadres <b>".$email."</b> wel correct is.</p>";
set_time_limit(20); // nu kun je voor de volgende mail weer 20 gebruiken
}
?>
zie http://php.net/manual/en/function.set-time-limit.php
Gewijzigd op 11/09/2010 19:09:42 door Klaasjan Boven
Toevoeging op 12/09/2010 12:41:03:
Noppes Homeland op 11/09/2010 13:51:23:
Maar zolang jij het verschil tussen
- AddStringAttachment
- AddAttachment
niet weet te achterhalen, blijft het een gebed zonder einde.
daarnaast gebruik je ook nog eens functies welke gekenmerkt zijn met: DEPRECATED
en je gaat ook heel slordig om met je variabelen.
Misschien dat je de debug modes eens aan moet zetten.
Maar zolang jij het verschil tussen
- AddStringAttachment
- AddAttachment
niet weet te achterhalen, blijft het een gebed zonder einde.
daarnaast gebruik je ook nog eens functies welke gekenmerkt zijn met: DEPRECATED
en je gaat ook heel slordig om met je variabelen.
Misschien dat je de debug modes eens aan moet zetten.
Voor zover ik het althans "begrijp" haalt de AddStringAttachment de afbeeldingen uit de databank en AddAttachment het uit een map op de server.
Ik weet ook wel dat de variabelen nog wat bijgeschaafd moeten worden en ipv. ereg --> preg moet worden gebruikt, dat heb ik inmiddels aangepast. Ik ben nog niet zo lang met PHP bezig en aldoende lerende, dus daar vraag ik enig begrip voor. Als je inmiddels 66 jaar bent en je er toch mee bezig wilt zijn, wil het allemaal niet meer zo vlot gaan in de bovenkamer zoals bij de jeugdigen onder jullie.
Dus even terugkomend op mijn vraag: Wat ik nu nog steeds niet begrijp waarom de verzending wel aangeeft dat er bijlagen meegezonden, ze ook worden aangegeven in de ontvangen e-mail al bijlage, maar er geen afbeelding getoond wordt als er in de ontvangen e-mail op wordt geklikt. Het zou fijn zijn als ik daar een antwoord op zou kunnen krijgen.