PHP Mailer en AddStingAttachment

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Alexander Pushkin

Alexander Pushkin

10/09/2010 15:34:08
Quote Anchor link
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 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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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);
?>
 
PHP hulp

PHP hulp

29/03/2024 13:54:53
 
Dalando De Zuil

Dalando De Zuil

10/09/2010 17:41:28
 
Alexander Pushkin

Alexander Pushkin

10/09/2010 17:46:40
Quote Anchor link
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 :-)
 
Noppes Homeland

Noppes Homeland

10/09/2010 19:35:48
Quote Anchor link
Lees die handleiding dan nog maar eens goed door!!

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
 
Alexander Pushkin

Alexander Pushkin

11/09/2010 13:39:50
Quote Anchor link
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.
 
Noppes Homeland

Noppes Homeland

11/09/2010 13:51:23
Quote Anchor link
Dat is dan jouw intrepretatie, niet de mijne.

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.
 
Klaasjan Boven

Klaasjan Boven

11/09/2010 19:09:02
Quote Anchor link
Maar om antwoord te geven op je vraag:

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)
PHP script in nieuw venster Selecteer het PHP script
1
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
                            }
?>


zie http://php.net/manual/en/function.set-time-limit.php
Gewijzigd op 11/09/2010 19:09:42 door Klaasjan Boven
 
Alexander Pushkin

Alexander Pushkin

12/09/2010 12:28:39
Quote Anchor link
Bedankt Klaas-Jan. Ik ben nog niet zo'n ster in PHP, dus ben blij met je info. Ik zal het eens gaan proberen op die manier. Alleen zag ik in de link naar PHP-net volgend, dat de safe-mode DEPRECATED is vanaf PHP 5.3.0. Heeft dat dan nog invloed?

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.


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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.