Opslagen fout bij mail verzenden

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Davey

Davey

28/01/2004 11:14:00
Quote Anchor link
Ik heb een mailfuntie in een gastenboek dat ik heb geplaatst (mail word verstuurd naar de admins), maar ik heb door dat de server niet altijd de mailtjes doorstuurt.
Nu zou ik graag telkens dat er een mail niet verzonden word, dit wordt opgeslagen in de databse.
De mail word verzonden rechtstreeks uit de schrijf pagina die hieronder te vinden is.


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

include("inc_connect.php");

if (empty($_POST)){
    //bekijk of de pagina net geopend word,
    // of er al bericht is gepost

 /* heel de html met de invulvakjes */

 
}else{
    $query="INSERT INTO gastenboek1 (voornaam, achternaam, email, site, bijdrage, datum) ";
    $query .= "VALUES ('";
    $query .= $_POST["voornaam"] ."', '" ;
    $query .= $_POST["achternaam"] ."', '" ;
    $query .= $_POST["email"] ."', '" ;
    $query .= $_POST["site"] ."', '" ;
    $query .= $_POST["bijdrage"] ."', '";
    $query .= $_POST["datum"] . "');" ;
    $result = mysql_query($query) or die ("FOUT: " . mysql_error());

/*Emailadressen uit db halen */

    $resultaat = mysql_query("SELECT email FROM users1") or die ("FOUT: ".mysql_error());

/* emailadressen in 1 variabele zetten gescheiden door komma's */
    $i = 0 ;
    while ($row = mysql_fetch_array($resultaat)){
        if ($i == 0){
            $emailadressen = $row['email'];
        }
else {
            $emailadressen .= ", ".$row['email'];
        }

        $i++;
    }


/* mailtje versturen */

    $checkmail = mail("".$emailadressen."","Bericht in Gastenboek geplaatst door: ".$_POST['voornaam']." ".$_POST['achternaam']."","".$_POST['bijdrage']."");
    if (!$checkmail){
        echo "Fout bij versturen van een email...";
    }

    echo("<h2>Bedankt voor uw bijdrage!</h2>\n");
    echo("De volgende gegevens zijn ingevoegd:<br>\n");
    echo("Voornaam: <b>".  $_POST["voornaam"] . "</b><br>");
    echo("Achternaam: <b>".  $_POST["achternaam"] . "</b><br>");
    echo("E-mailadres: <b>".  $_POST["email"] . "</b><br>");
    echo("Site: <b>".  $_POST["site"] . "</b><br>");
    echo("Uw bijdrage: <b>".  $_POST["bijdrage"] . "</b><br>");
    echo("<hr><a href=\"gastenboek_schrijf.php\">Nog een bijdrage schrijven</a> |
        <a href=\"gastenboek_lees.php\">Overzicht van alle bijdragen</a>"
);
}

?>



Ik heb al een tabel gemaakt:

CREATE TABLE `fout` (
`id` int( 10 ) NOT NULL AUTO_INCREMENT ,
`datum` date NOT NULL default '',
`reden` varchar( 100 ) NOT NULL default '',
PRIMARY KEY ( `id` )
) TYPE = MYISAM AUTO_INCREMENT =8;

Maar nu heb ik er eigenlijk geen idee van hoe ik dat in die tabel moet posten als er een mail niet word verzonden.
Gewijzigd op 28/01/2004 11:19:00 door Davey
 
PHP hulp

PHP hulp

26/11/2024 06:58:48
 
Elwin - Fratsloos

Elwin - Fratsloos

28/01/2004 11:42:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
if (!$checkmail)
{

   echo "Fout bij versturen van een email...";
}

?>


Daar zie je dat het fout gaat... Daar moet je dus ook iets met je DB gaan doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
if (!$checkmail)
{

   echo "Fout bij versturen van een email...";

   // Fout in de DB zetten
   $query = mysql_query("INSERT INTO fout (datum, reden) VALUES ('$datum', '$reden')");
   echo "De foutmelding staat in de database!";
}

?>


En dan moet je je variabelen in de query natuurlijk wel even eerst maken...

Elwin
 
Davey

Davey

28/01/2004 11:51:00
Quote Anchor link
Dit had ik zelf al ongeveer bedacht, maar het net die query dat het probleem is.
Ik zou niet weten hoe ik die variablen moet initialiseren, dit moet met waarschijnlijk $query .= "VALUES ('";
$query .= $_POST["id"] ."', '" ;
$query .= $_POST["datum"] ."', '" ;
$query .= $_POST["reden"] . "');" ;
$result = mysql_query

maar hoe moet ik die posten?
 
Elwin - Fratsloos

Elwin - Fratsloos

28/01/2004 12:19:00
Quote Anchor link
Oké.. uhm... je gaat al fout in jouw query.. Je zegt het volgende bij het maken van je tabel:
'id` int( 10 ) NOT NULL AUTO_INCREMENT ,
En vervolgens ga je $_POST['id'] ergens inzetten... Hij is auto_increment, hij maakt hem dus zelf... Laat hem dan lekker met rust.. ;)

$datum kan je idd de datum van het bericht van het gasten boek zetten..

En $reden.. tsjah... je zal de foutmelding waarom die niet wilt mailen in een variabele moeten vangen.

Maak er anders een kolom 'inhoud' van en zet de inhoud van het niet verzonden mailtje in die kolom.. dan gaat er helemaal geen data verloren. Overigens denk ik dat je er slimmer aan doet om aan de beheerder van de server te vragen hoe het komt dat die af en toe geen mail verstuurd... Ben je zelf de beheerder.. ga dan eens wat logfiles doorlezen.. of de mailque..

Elwin

[Edit: Typo]
Gewijzigd op 28/01/2004 12:19:00 door Elwin - Fratsloos
 
Davey

Davey

28/01/2004 12:27:00
Quote Anchor link
Ik kan niet rechtstreeks aan de beheerder iets vragen. Ik gebruik mee iemand zijn webspace.
Maar na een crach van de server gaat hij nu opzoek naar een nieuwe host.

Maar er kan natuurlijk nog altijd wat mis gaan.
De data zelf opslaan heeft geen nut. Zoals in mijn eerste bericht stond, is het een gastenboek, het word dus sowieso opgeslagen.

Ik wil dit eigelijk om te kunnen melden in het admin gedeelte dat er berichten zijn die niet doorgemaild zijn en dan door de id er al zeker een aantal bij te zetten.
 



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.