Automatisch email verzenden als er nieuw nieuwtje is (Opgelost)
SimonDW - 30/03/2012 23:49
Nieuw lid
Ik heb op mijn website een mailinglist. E-mail adressen zitten in een database.
Verder plaats ik regelmatig nieuws op m'n site. Zit uiteraard ook in een database. Nu zou ik graag de mensen automatisch een mailtje sturen als ik een nieuwsitem online zet.
Hoe kan ik mijn database 'email' koppelen aan de database 'nieuws' en vervolgens de laatste gegevens uitlezen (nl. het id en nieuwstitel).
Wie helpt me op weg?
Tnx!
7 antwoorden
Gesponsorde links
icemar - 31/03/2012 09:14
Lid
Je kan bv na het online zetten een functie maken die er voor zorgt als je je artikel online zet de mailijst aan roept met de link naar het artikel.
Momenteel weet ik niet hoe en wat je gebruikt daarvoor.
SimonDW - 31/03/2012 14:14 (laatste wijziging 31/03/2012 14:15)
Nieuw lid
Dit gebruik ik, maar probleem is dat de mail 3x verzonden wordt met daarin elke keer één nieuwsitem ipv 1 mail met 3 nieuwsitems...
<?php
include("database.php");
if ($submit) {
$server = mysql_connect("$host","$login","$pass");
mysql_select_db("$database", $server);
$sql = "SELECT * FROM mailing";
$resultaat = mysql_query($sql);
while ($record = mysql_fetch_object($resultaat))
{
$query = "SELECT * FROM nieuws ORDER BY id DESC limit 0,3";
$result = mysql_query($query);
while ($row = mysql_fetch_array($result))
{
$headers = "MIME-Version: 1.0\n";
$headers .= "Content-Type: text/html; charset=utf-8\n";
$headers .= "From: Nieuwsbrief <mijn@emailadres.be>\n";
$message = "
<html>
<body>
<font face=\"verdana\" size=\"2\">
<p>Recentste nieuwtjes:</p>
<p>$row[titel]</p>
".$bericht."
<p> </p>
</font>
<font face=\"verdana\" size=\"1\">
<a href=\"#\">Klik hier om u uit te schrijven.</a>
</font>
</body>
</html>
";
mail($record->email, $onderwerp, $message, $headers);
}}
echo "<center>";
echo "<p>Mailing werd succesvol verzonden.<br>";
echo "<a href=\"index.php?module=mailing\">Keer terug naar het overzicht</a>.</p>";
echo "</center>";
}
else {
?>
<?php
include ( "database.php" ) ;
if ( $submit ) {
$sql = "SELECT * FROM mailing" ;
{
$query = "SELECT * FROM nieuws ORDER BY id DESC limit 0,3" ;
{
$headers = "MIME-Version: 1.0\n " ;
$headers .= "Content-Type: text/html; charset=utf-8\n " ;
$headers .= "From: Nieuwsbrief <mijn@emailadres.be>\n " ;
$message = "
<html>
<body>
<font face=\" verdana\" size=\" 2\" >
<p>Recentste nieuwtjes:</p>
<p>$row[titel] </p>
" . $bericht . "
<p> </p>
</font>
<font face=\" verdana\" size=\" 1\" >
<a href=\" #\" >Klik hier om u uit te schrijven.</a>
</font>
</body>
</html>
" ;
mail ( $record -> email , $onderwerp , $message , $headers ) ; } }
echo "<p>Mailing werd succesvol verzonden.<br>" ; echo "<a href=\" index.php?module=mailing\" >Keer terug naar het overzicht</a>.</p>" ; }
else {
?>
christophe195 - 31/03/2012 20:01 (laatste wijziging 31/03/2012 20:05)
Lid
het is beter om net na het invoegen van gegevens in de database de mail te versturen
anders worden
hoe?
zet dit bovenaan of in een instellinge bestand
// Geef GELDIGE adressen op
// Een korte benaming voor jouw website
$website_naam = 'Mijn Site';
// Jouw eigen geldige emailadres
$eigen_emailadres = 'mijn_emailadres@mijn_domein.nl';
// Een geldig emailadres voor errors
$error_emailadres = 'mijn_emailadres@mijn_domein.nl';
// Een geldig emailadres of helemaal leeg laten
$bcc_emailadres = 'geldig_emailadres@geldig_domein.nl';
// HTML mail? True/False
$html = true;
// Geef GELDIGE adressen op
// Een korte benaming voor jouw website
$website_naam = 'Mijn Site' ;
// Jouw eigen geldige emailadres
$eigen_emailadres = 'mijn_emailadres@mijn_domein.nl' ;
// Een geldig emailadres voor errors
$error_emailadres = 'mijn_emailadres@mijn_domein.nl' ;
// Een geldig emailadres of helemaal leeg laten
$bcc_emailadres = 'geldig_emailadres@geldig_domein.nl' ;
// HTML mail? True/False
$html = true ;
zet dit in het bestand
if($_SERVER['REQUEST_METHOD'] == "POST") {
// gegevens invoegen
$invoegen_sql = "
INSERT INTO werknemers // dit is een voorbeeld dit moet je zelf nog aanpassen
(
voornaam,
tussenvoegsel,
achternaam,
geboortedatum,
salaris_schaal
)
VALUES
(
'Nico',
'de',
'Boer',
'1958-03-24',
18
)
";
if(!$invoegen_uitvoer = mysql_query($invoegen_sql))
{
echo 'Oeps een error,<br><hr>'.mysql_error().'<br />In query: '.$invoegen_sql;
}
else
{
echo 'Gegevens zijn toegevoegd<br>';
// gegevens naar waar de mail verstuurt moet worden ophalen
$mailergegevens_ophalen = "
SELECT
voornaam
FROM
werknemers
";
if(!$mailergegevens = mysql_query($mailergegevens_ophalen))
{
echo 'Oeps er was een foutje<br><hr>'.mysql_error().'<br />In query: '.$mailergegevens_ophalen;
}
elseif(mysql_num_rows($mailergegevens) == 0)
{
echo 'Geen resultaten gevonden';
}
else
{
while($mailergegeven = mysql_fetch_assoc($mailergegevens))
{ // mailtjes versturen.
//verstuurder in orde brengen
// De naam van de verzender
$naam_verzender = 'Afzender';
// Het geldige emailadres van de afzender
$email_verzender = 'emailadres_van_verzender@zijn_domein.nl';
// De headers samenstellen
$headers = 'From: ' . $website_naam . ' <' . $eigen_emailadres . '>' . PHP_EOL;
$headers .= 'Reply-To: ' . $naam_verzender . ' <' . $email_verzender . '>' . PHP_EOL;
$headers .= 'Return-Path: Mail-Error <' . $error_emailadres . '>' . PHP_EOL;
$headers .= ($bcc_emailadres != '') ? 'Bcc: ' . $bcc_emailadres . PHP_EOL : '';
$headers .= 'X-Mailer: PHP/' . phpversion() . PHP_EOL;
$headers .= 'X-Priority: Normal' . PHP_EOL;
$headers .= ($html) ? 'MIME-Version: 1.0' . PHP_EOL : '';
$headers .= ($html) ? 'Content-type: text/html; charset=iso-8859-1' . PHP_EOL : '';
}
}
}
} else {
//form
}
if ( $_SERVER [ 'REQUEST_METHOD' ] == "POST" ) {
// gegevens invoegen
$invoegen_sql = "
INSERT INTO werknemers // dit is een voorbeeld dit moet je zelf nog aanpassen
(
voornaam,
tussenvoegsel,
achternaam,
geboortedatum,
salaris_schaal
)
VALUES
(
'Nico',
'de',
'Boer',
'1958-03-24',
18
)
" ;
{
echo 'Oeps een error,<br><hr>' . mysql_error ( ) . '<br />In query: ' . $invoegen_sql ; }
else
{
echo 'Gegevens zijn toegevoegd<br>' ; // gegevens naar waar de mail verstuurt moet worden ophalen
$mailergegevens_ophalen = "
SELECT
voornaam
FROM
werknemers
" ;
if ( ! $mailergegevens = mysql_query ( $mailergegevens_ophalen ) ) {
echo 'Oeps er was een foutje<br><hr>' . mysql_error ( ) . '<br />In query: ' . $mailergegevens_ophalen ; }
{
echo 'Geen resultaten gevonden' ; }
else
{
{ // mailtjes versturen.
//verstuurder in orde brengen
// De naam van de verzender
$naam_verzender = 'Afzender' ;
// Het geldige emailadres van de afzender
$email_verzender = 'emailadres_van_verzender@zijn_domein.nl' ;
// De headers samenstellen
$headers = 'From: ' . $website_naam . ' <' . $eigen_emailadres . '>' . PHP_EOL;
$headers .= 'Reply-To: ' . $naam_verzender . ' <' . $email_verzender . '>' . PHP_EOL;
$headers .= 'Return-Path: Mail-Error <' . $error_emailadres . '>' . PHP_EOL;
$headers .= ( $bcc_emailadres != '' ) ? 'Bcc: ' . $bcc_emailadres . PHP_EOL : '' ;
$headers .= 'X-Mailer: PHP/' . phpversion ( ) . PHP_EOL
; $headers .= 'X-Priority: Normal' . PHP_EOL;
$headers .= ( $html ) ? 'MIME-Version: 1.0' . PHP_EOL : '' ;
$headers .= ( $html ) ? 'Content-type: text/html; charset=iso-8859-1' . PHP_EOL : '' ;
}
}
}
} else {
//form
}
dit kan je gebruiken voor 1 item de keer
( sorry had verkeert gelezen )
SimonDW - 31/03/2012 22:58 (laatste wijziging 01/04/2012 12:55)
Nieuw lid
Pieter schreef:
Je moet dan ook geen mail in die while zetten hé... Per nieuwsitem wordt zo een mail verstuurd.
Die mail() zet je beter buiten je 2e while.
Als ik dat doe Pieter dan wordt er helemaal geen mail verzonden...
Update: ik heb de gegevens m.b.t. nieuws in het formulier gezet. Werkt perfect :-) Dus case closed.
SimonDW - 01/04/2012 16:08 (laatste wijziging 03/04/2012 09:33)
Nieuw lid
Ik zal de volledige code eens posten.
met de if ($submit) kon je vermoeden dat er een formulier oid bij hoorde
Ivm eigen antwoord en oplossing: wou gewoon forum overzichtelijk houden zonder mezelf credits te geven
[update] bij deze de code. Hopelijk is iemand hier iets mee
<?php
include("database.php");
if ($submit) {
$server = mysql_connect("$host","$login","$pass");
mysql_select_db("$database", $server);
$sql = "SELECT * FROM mailing";
$resultaat = mysql_query($sql);
while ($record = mysql_fetch_object($resultaat))
{
$headers = "MIME-Version: 1.0\n";
$headers .= "Content-Type: text/html; charset=utf-8\n";
$headers .= "From: Nieuwtjes van vandaag <mijn@mailadres.be>\n";
$message = "
<html>
<body>
<font face=\"verdana\" size=\"2\">
".$nieuwtjes."
".$bericht."
<p> </p>
</font>
<font face=\"verdana\" size=\"1\">
<a href=\"#\">Klik hier om u uit te schrijven.</a>
</font>
</body>
</html>
";
mail($record->email, $onderwerp, $message, $headers);
}
echo "<center>";
echo "<p>Mailing werd succesvol verzonden.<br>";
echo "<a href=\"#\">Keer terug naar het overzicht</a>.</p>";
echo "</center>";
}
else {
?>
<p>Hiermee worden de 3 recentste items via e-mail naar de website adressenlijst verzonden.</p>
<p>Desgewenst kan u nog tekst typen, bijvoorbeeld <em>'verwacht morgen extra nieuws ivm nieuwe programmatie VT4'</em>,...</p>
<p>De zelf bijgevoegde tekst komt onderaan het mailbericht (dus onder de 3 recentste items) te staan.</p>
<p> </p>
<form action="#" method="post" name="FormName">
<table border="0" cellspacing="2" cellpadding="0" align="center">
<tr>
<td width="150">Onderwerp:</td>
<td width="350"><input type="text" name="onderwerp" size="30" border="0" value="Recente nieuwtjes"></td>
</tr>
<tr>
<td width="150" valign="top">Bericht:</td>
<td width="350"><textarea name="bericht" rows="15" cols="150"></textarea>
<?
$query = "SELECT * FROM nieuws ORDER BY id DESC limit 0,3";
$result = mysql_query($query);
?>
<textarea name="nieuwtjes" rows="10" cols="150" style="display: none;">
<? while ($row = mysql_fetch_array($result))
{
if ($row[cat]=='nws') {print("<p>Nieuws: $row[titel]. <a href=#>Klik hier voor het artikel</a>.</p>");}
else if ($row[cat]=='upd') {print("<p>Update: $row[titel]. <a href=#>Klik hier voor het artikel</a>.</p>");}
else {print(""); }
}
?>
</textarea></td>
</tr>
<tr>
<td colspan="2" valign="top"><div align="center">
<input type="hidden" name="submit" value="yes" border="0">
<input type="submit" name="verzenden" class="input" value="Versturen" border="0">
</div></td>
</tr>
</table>
</form>
<?
}
?>
<?php
include ( "database.php" ) ;
if ( $submit ) {
$sql = "SELECT * FROM mailing" ;
{
$headers = "MIME-Version: 1.0\n " ;
$headers .= "Content-Type: text/html; charset=utf-8\n " ;
$headers .= "From: Nieuwtjes van vandaag <mijn@mailadres.be>\n " ;
$message = "
<html>
<body>
<font face=\" verdana\" size=\" 2\" >
" . $nieuwtjes . "
" . $bericht . "
<p> </p>
</font>
<font face=\" verdana\" size=\" 1\" >
<a href=\" #\" >Klik hier om u uit te schrijven.</a>
</font>
</body>
</html>
" ;
mail ( $record -> email , $onderwerp , $message , $headers ) ; }
echo "<p>Mailing werd succesvol verzonden.<br>" ; echo "<a href=\" #\" >Keer terug naar het overzicht</a>.</p>" ; }
else {
?>
<p>Hiermee worden de 3 recentste items via e-mail naar de website adressenlijst verzonden.</p>
<p>Desgewenst kan u nog tekst typen, bijvoorbeeld <em>'verwacht morgen extra nieuws ivm nieuwe programmatie VT4'</em>,...</p>
<p>De zelf bijgevoegde tekst komt onderaan het mailbericht (dus onder de 3 recentste items) te staan.</p>
<p> </p>
<form action="#" method="post" name="FormName">
<table border="0" cellspacing="2" cellpadding="0" align="center">
<tr>
<td width="150">Onderwerp:</td>
<td width="350"><input type="text" name="onderwerp" size="30" border="0" value="Recente nieuwtjes"></td>
</tr>
<tr>
<td width="150" valign="top">Bericht:</td>
<td width="350"><textarea name="bericht" rows="15" cols="150"></textarea>
<?
$query = "SELECT * FROM nieuws ORDER BY id DESC limit 0,3" ;
?>
<textarea name="nieuwtjes" rows="10" cols="150" style="display: none;">
{
if ( $row [ cat
] == 'nws' ) { print ( "<p>Nieuws: $row[titel] . <a href=#>Klik hier voor het artikel</a>.</p>" ) ; } else if ( $row [ cat
] == 'upd' ) { print ( "<p>Update: $row[titel] . <a href=#>Klik hier voor het artikel</a>.</p>" ) ; } }
?>
</textarea></td>
</tr>
<tr>
<td colspan="2" valign="top"><div align="center">
<input type="hidden" name="submit" value="yes" border="0">
<input type="submit" name="verzenden" class="input" value="Versturen" border="0">
</div></td>
</tr>
</table>
</form>
<?
}
?>
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.