Nieuwbrief met PDF als bijlage versturen

Status
Niet open voor verdere reacties.

henri2500

Gebruiker
Lid geworden
28 feb 2007
Berichten
265
Hallo allemaal,

Ik heb even een vraag. Ik ben bezig met het opzetten van een Nieuwsbrief en moet nu nog de code gaan schrijven voor het versturen van deze nieuwsbrief. De e-mailadress moeten uit de database worden gehaald. En de e-mail wordt verstuurd met phpmailer. Ik zou graag deze nieuwsbrief simpel houden en slechts 1 of 2 regels plain tekst invoeren en de rest meesturen als een PDF file?

Is dit mogelijk, en hoe pak ik dit alles aan?

Alvast bedankt,

Henri Zomer
 
Je zegt letterlijk dat de nieuwsbrief bestaat uit twee regels tekst
en dat het pdf-document slechts een bijlage is.
Lijkt me niet de bedoeling.

Ik vat het zo op:
  • de email is een aanbiedings-email
  • en het PDF-document is de eigenlijke nieuwsbrief

Is dan dus een kwestie van mailtjes genereren met steeds dezelfde bijlage.
Als je daar een apart programmatje voor hebt [phpmailer] dan mis ik even het probleem?
 
Het klopt idd dat dat de bedoeling is. Ik heb eerder een mail via phpmailer laten versturen maar ik weet niet de code en kam deze niet vinden om een bijlage aan de mail te hangen...
 
Het staat op deze pagina.

Deze regel voegt dus een bijlage toe:

Code:
$mail->AddAttachment("images/phpmailer.gif");      // attachment

En dit kan je dus vervangen door je pdf bestand.
 
Volgensmij gaat er iets niet goed. Ik krijg de foutmelding: Invalid address: You must provide at least one recipient email address.
Verder moet ik nog proberen een echo in te bouwen, zodat ik zeker weet dat de nieuwsbrief correct verstuurd is.

PHP:
<?php

#include PHPMailer class and database connection
include("phpmailer/class.phpmailer.php");
include("database.php");

#remove slashes from content
$html = stripslashes($_POST["html"]);
$plain = stripslashes($_POST["plain"]);

#initiate PHPMailer class
$mail = new PHPMailer();
#set the from e-mail address
$mail->From = "info@creations-of-nature.com, henri_zomer@*********";
#set the from name
$mail->FromName = "Creations of Nature";
#set the e-mail type to HTML
$mail->IsHTML(true);

#loop through e-mail addresses
$query = "SELECT emailadres FROM nieuwsbrief";
$result = @MYSQL_QUERY($query);
while ($myrow = mysql_fetch_array($result))

#the subject of the email
$mail->Subject = "Creations of Nature - Nieuwsbrief";
#the plain text version
$mail->AltBody = "Bij deze de nieuwste updates van Creations of Nature, u vind de nieuwsbrief in de bijlage!";
$mail->AddAttachment("nieuwsbrief.pdf");   

{
#add subscribers address as the recipient
$mail->AddAddress($row["emailadres"]);
#sends the newsletter
$mail->Send();
#clears the recipient address
$mail->ClearAddresses();

}

?>
 
Volgensmij gaat er iets niet goed. Ik krijg de foutmelding: Invalid address: You must provide at least one recipient email address.

Je hebt een paar fouten.
- De loop word niet gebruikt
- Midden in het script open je onnodig {





Verder moet ik nog proberen een echo in te bouwen, zodat ik zeker weet dat de nieuwsbrief correct verstuurd is.

PHP:
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}

Probeer dit eens

PHP:
<?php

include("phpmailer/class.phpmailer.php");
include("database.php");

$html = stripslashes($_POST["html"]);
$plain = stripslashes($_POST["plain"]);
 
$mail = new PHPMailer();
$mail->From = "info@creations-of-nature.com, henri_zomer@*********";
$mail->FromName = "Creations of Nature";
$mail->IsHTML(true);


$mail->Subject = "Creations of Nature - Nieuwsbrief";

$mail->AltBody = "Bij deze de nieuwste updates van Creations of Nature, u vind de nieuwsbrief in de bijlage!";
$mail->AddAttachment("nieuwsbrief.pdf");   

$query = "SELECT emailadres FROM nieuwsbrief";
$result = @MYSQL_QUERY($query);
while ($myrow = mysql_fetch_array($result)) {
	$mail->AddAddress($myrow["emailadres"]);
}
 
if(!$mail->Send()) {
	echo "Mailer Error: " . $mail->ErrorInfo;
} else {
	echo "Message sent!";
}


 
?>
 
Laatst bewerkt:
Bedankt! Nu hoort het te werken, ik snap de fouten, maar deze fouten niet. Komt dit nu puur omdat ik geen echte HTML body opgeef maar alleen een plain tekst?



Deprecated: Function set_magic_quotes_runtime() is deprecated in /public/sites/www.creations-of-nature.com/ne/phpscripts/phpmailer/class.phpmailer.php on line 1471

Deprecated: Function set_magic_quotes_runtime() is deprecated in /public/sites/www.creations-of-nature.com/ne/phpscripts/phpmailer/class.phpmailer.php on line 1475
Message body empty Mailer Error: Message body empty
 
Deprecated: Function set_magic_quotes_runtime() is deprecated in /public/sites/www.creations-of-nature.com/ne/phpscripts/phpmailer/class.phpmailer.php on line 1471

Deprecated: Function set_magic_quotes_runtime() is deprecated in /public/sites/www.creations-of-nature.com/ne/phpscripts/phpmailer/class.phpmailer.php on line 1475

Dit geeft aan dat PHPMailer een verourderde functie gebruikt, je kan deze melding uitschakelen of de nieuwste phpmailer gebruiken (als je die nog niet had)

Message body empty Mailer Error: Message body empty

Je hebt alleen een alternative body ingesteld, deze wordt getoont aan de ontvanger van de email als zijn client geen HTML mails ondersteunt.
Je moet dus nog een HTML opgebouwde body instellen.

Voorbeeld

PHP:
$mail->Body     = "Hello, <b>my friend</b>! \n\n This message uses HTML entities!";
 
Ik snap niet helemaal wat je bedoeld met de conclusie dat PHPmailer een oudere functie gebruikt? Hoe doe ik dat anders, of hoe schakel ik dit uit?? (ik heb ook de nieuwste PHPmailer net geprobeerd, maar die geeft dezelfde melding).

*Verder wordt de mail nu idd netjes met bijlage en tekst verstuurd, hartelijk dank!!!*
 
Laatst bewerkt:
Ik snap niet helemaal wat je bedoeld met de conclusie dat PHPmailer een oudere functie gebruikt? Hoe doe ik dat anders, of hoe schakel ik dit uit?? (ik heb ook de nieuwste PHPmailer net geprobeerd, maar die geeft dezelfde melding).

Heb je de body al ingesteld?
Dan zou je geen waarschuwing meer moeten krijgen.

Als je de foutmelding nog steeds krijgt kan je die uitschakelen met deze code
PHP:
error_reporting(E_ALL ^ E_DEPRECATED);


Als een functie deprecated is betekent dat het een verouderde functie is en dat het in de volgende php versies verwijderd zal worden.
 
Laatst bewerkt:
Hij geeft enkel nog de deprecated foutmelding, die over de lege body is weg, en daar staat nu netjes: Message sent. Bedankt voor alle hulp, nu kom ik er helemaal mee rond!
 
Hij geeft enkel nog de deprecated foutmelding, die over de lege body is weg, en daar staat nu netjes: Message sent. Bedankt voor alle hulp, nu kom ik er helemaal mee rond!

Mooizo :)
Je kunt eventueel het deprecated gedeelte oplossen, hier staat een oplossing.
 
Toch nog een laatste vraag, en ik wou er geen nieuw topic voor maken. Alle e-mailadressen zijn naar het versturen van de nieuwsbrief zichtbaar voor iedereen. Ik zou dit graag wegwerken en normaal doe je dit door deze e-mailadress als bcc toe te voegen. Kan dat ook met phpmailer en hoe doe ik dat?
 
PHP:
$mail->AddBCC($emailadres);

Of de mail 1 voor 1 sturen

PHP:
$query = "SELECT emailadres FROM nieuwsbrief";
$result = @MYSQL_QUERY($query);
while ($myrow = mysql_fetch_array($result)) {
    $mail->ClearAddresses(); 
    $mail->AddAddress($myrow["emailadres"]);
    $mail->Send(); 
}
 
Bedankt! Het laatste script spreekt mij het meest aan, maar meteen schiet mij de vraag te binnen: Hoe werkt deze loop en weet het script dat hij na het eerste e-mailadres de tweede moet pakken?
 
Bedankt! Het laatste script spreekt mij het meest aan, maar meteen schiet mij de vraag te binnen: Hoe werkt deze loop en weet het script dat hij na het eerste e-mailadres de tweede moet pakken?

De loop moet je onderaan je script plakken en het andere $mail->Send(); gedeelte weghalen. De loop maakt de adressen lijst leeg voordat ie een address toevoegt, daarna wordt de mail verzonden.
Eventuel nog even controlen of de mail verzonden is.

PHP:
$query = "SELECT emailadres FROM nieuwsbrief";
$result = @MYSQL_QUERY($query);
while ($myrow = mysql_fetch_array($result)) {
    $mail->ClearAddresses(); 
    $mail->AddAddress($myrow["emailadres"]);
    if($mail->Send()) {
                echo("Mail succesvol verzonden naar: " . $myrow["emailadres"]);
    } else {
                echo("Verzenden mislukt.");
    }
}
 
Nu snap ik hem! En als ik je goed begrijp wordt dit dan de nieuwe code?

PHP:
<?php
 
include("phpmailer/class.phpmailer.php");
include("database.php");
 
$html = stripslashes($_POST["html"]);
$plain = stripslashes($_POST["plain"]);
 
$mail = new PHPMailer();
$mail->From = "info@creations-of-nature.com";
$mail->FromName = "Creations of Nature";
$mail->IsHTML(true);
 
 
$mail->Subject = "Creations of Nature - Nieuwsbrief";
$mail->Body     = "Bij deze de nieuwste updates van Creations of Nature, u vind de nieuwsbrief in de bijlage!";
$mail->AltBody = "Bij deze de nieuwste updates van Creations of Nature, u vind de nieuwsbrief in de bijlage!";
$mail->AddAttachment("nieuwsbrief.pdf");   
 
$query = "SELECT emailadres FROM nieuwsbrief";
$result = @MYSQL_QUERY($query);
while ($myrow = mysql_fetch_array($result)) {
    $mail->ClearAddresses(); 
    $mail->AddAddress($myrow["emailadres"]);
    $mail->Send(); 
}
 
 if(!$mail->Send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
} else {
    echo "Message sent!";
}
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan