CC bij e-mail werkt niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pim

Pim

15/11/2006 14:40:00
Quote Anchor link
Hallo allemaal,
voor een website in aanbouw heb ik een formulier gemaakt, waar men vragen kan stellen aan een advocaat.

De afhandeling ervan verloopt prima, zolang ik maar geen kopie wil laten versturen naar de afzender. Dat lukt me maar niet, ondanks vele uurtjes speuren.

Nu is het gekke (of niet?) dat het wel lukt als ik vanaf mijn eigen pc (via localhost) het formulier invul en verstuur.

Wie zou me willen helpen?

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
<?php
//HTML- en PHP-Tags uit de invoervelden verwijderen
$naam=$_POST['naam'];
$email=$_POST['email'];
$vraag=$_POST['vraag'];
strip_tags($naam);
strip_tags($email);
strip_tags($vraag);
                                                                                                     
if(strlen($naam)<3){
$error_msg="Typ s.v.p. uw naam.<br>";
    }

if(!ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$",$email)){
$error_msg="Het opgegeven e-mailadres is incorrect. Geef s.v.p. een geldig e-mailadres op.<br>";
     }

if(strlen($vraag)<3){
$error_msg="Stel s.v.p. uw vraag.<br>";
      }

if(isset($error_msg)){
//Een van de velden is niet juist ingevuld
echo "Helaas kan uw aanvraag om de volgende reden niet worden verwerkt:<br><br>";
echo $error_msg;
echo "<br>Klik op <a href=javascript:history.back(1)>vorige</a> en vul alle velden in.";
}
else {
//Alle velden ingevuld - eMail genereren - vul als testuw eigen e-mailadres in achter $recipient
                                                
$mailto="[email protected]";
$subject="Bericht verstuurd aan: [email protected]";
$headers="From:$email\r\n";
$mail_body ="Het aanvraagformulier is op " . date("d-m-Y") . " om " . date("H:i") . "uur verzonden.\n";
$mail_body.="Het bevat de volgende inhoud:\n\n";
$mail_body.="Naam: " . $naam . "\n";
$mail_body.="e-mailadres: " . $email . "\n\n";
$mail_body.="Vraag:\n";
$mail_body.=$vraag . "\n\n ---- Einde van de automatisch gegenereerde e-mail ----";
                                            
    if (mail($mailto,$subject,$mail_body,$headers) and mail($email,$subject,$mail_body,$headers)) {
    echo 'Uw e-mail is correct verzonden. Hartelijk dank voor uw opmerking, vraag en/of suggestie.<br>
    Indien daartoe aanleiding is, ontvangt u op korte termijn antwoord.'
;
    }
else {
    echo 'Fout bij het verzenden van de mail. Probeer het nogmaals';
    }
}

?>


Hier het html-formulier:
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
<form action="mailform2.php" method="post">
<tr>
                                    <td height="30">Naam:</td>
                                    <td height="30"><input type="text" name="naam" size="53" maxlength="40"></td>
                                </tr>                                

                                <tr>
                                    <td height="30">Uw e-mailadres:</td>
                                    <td height="30"><input type="text" name="email" size="53" maxlength="45"></td>
                                </tr>
                                
                                <tr>
                                    <td height="30">Uw vraag/reactie:</td>
                                    <td height="30"><textarea cols="50" rows="6" name="vraag"></textarea></td>
                                </tr>
                                
                                <tr>
                                    <td height="30">&nbsp;</td>
                                    <td height="30"><input type="submit" name="Submit" value="Verzenden"></td>
                                </tr>
                                </form>
[\code]
 
PHP hulp

PHP hulp

21/11/2024 15:45:55
 
Pim

Pim

15/11/2006 14:45:00
Quote Anchor link
Hierbij het html-formulier wat netter:

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
<form action="mailform2.php" method="post">
<tr>
    <td height="30">Naam:</td>
    <td height="30"><input type="text" name="naam" size="53" maxlength="40"></td>
</tr>                                

<tr>
    <td height="30">Uw e-mailadres:</td>
    <td height="30"><input type="text" name="email" size="53" maxlength="45"></td>
</tr>
                        
<tr>
    <td height="30">Uw vraag/reactie:</td>
    <td height="30"><textarea cols="50" rows="6" name="vraag"></textarea></td>
</tr>
                                
<tr>
    <td height="30">&nbsp;</td>
    <td height="30"><input type="submit" name="Submit" value="Verzenden"></td>
</tr>
</form>
[\code]
 
- SanThe -

- SanThe -

15/11/2006 14:51:00
Quote Anchor link
Pim schreef op 15.11.2006 14:40:
Nu is het gekke (of niet?) dat het wel lukt als ik vanaf mijn eigen pc (via localhost) het formulier invul en verstuur.

En van waar dan niet?
 
Dion

Dion

15/11/2006 14:53:00
Quote Anchor link
bij een ander?
 
Pim

Pim

15/11/2006 15:32:00
Quote Anchor link
het werkt niet als ik het formulier vanaf internet invul.
het werkt wel lokaal, voa localhost.

ik heb zelf het idee dat het script op (internet) op een of andere manier de naam van de afzender niet wil herkennen, anders gezegd 'hij' weet niet wat de inhoud is van $email. En dat terwijl dat lokaal wel zo is.

Zou het met de instellingen van de php.ini te maken kunnen hebben. Daar staat nu (onder Windows XP):

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
SMTP = smtp.home.nl ; for Win32 only
smtp_port = 25
sendmail_from = [email protected] ; for Win32 only
Gewijzigd op 01/01/1970 01:00:00 door Pim
 
- SanThe -

- SanThe -

15/11/2006 16:32:00
Quote Anchor link
Dus als ik het goed begrijp heb jij thuis een servertje en als je die vanaf internet benadert werkt het niet, maar vanuit thuis wel.

Zet de error_reporting(E_ALL) eens aan. Misschien zie je dan wat errors.
Heb je alle path's enzo wel goed staan en niet naar localhost.
 
Pim

Pim

15/11/2006 16:54:00
Quote Anchor link
@ SanThe, dank voor je reactie.

de volgende foutmeldingen krijg ik bij het debuggen (line-nummers komen overeen met 't bovenste scriptje).

line 3 - Undefined index: naam
line 4 - Undefined index: email
line 5 - Undefined index: vraag

over 'het servertje'. Ik ben hier allemaal niet zo'n held in. echte beginner dus. Als server gebruik ik Apache2, destijds heeft Arjan Kapteijn me geholpen met de installatie, zodanig dat ik meerdere sites kan draaien, die elders op de vaste schijf worden opgeslagen, onder meer door aanpassingen in httpd.conf, hosts en php.ini. Ik geloof niet dat dit alles onder het begrip thuis-servertje valt.

Maar hoe het ook zij. Vanaf mijn laptop (waar WAMPP op staat geïnstalleerd) draait alles prima. Als ik daar het formulier invul met als afzender één van mijn andere emailaccouts, dan krijg ik precies wat ik wil. Namelijk één maitje aan de webmaster (zoals gevraagd in regel 27 van het bovenstaande script) en één op mijn andere emailadres.

Als ik echter de site vanaf een andere pc benader, het formulier invul met een emailaccount van bijvoorbeeld mijn vrouw, dan krijgt ik alleen als webmaster een mailtje, maar het bewuste kopietje komt nooit aan.

Kun je me uitleggen wat je bedoelt met 'dat het path (welk path?)niet naar localhost verwijst'. Daar zou hem misschien de kneep kunnen zitten.

Ra ra, wat doe ik fout?
Alvast vriendelijk dank voor het meedenken, Pim
 
- SanThe -

- SanThe -

15/11/2006 17:11:00
Quote Anchor link
Pim schreef op 15.11.2006 16:54:
de volgende foutmeldingen krijg ik bij het debuggen (line-nummers komen overeen met 't bovenste scriptje).

line 3 - Undefined index: naam
line 4 - Undefined index: email
line 5 - Undefined index: vraag

Dat klopt want je checkt niet of ze wel bestaan en of er al gepost is. Daar hoor je even op te checken.
Quote:
over 'het servertje'. Ik ben hier allemaal niet zo'n held in. echte beginner dus. Als server gebruik ik Apache2, destijds heeft Arjan Kapteijn me geholpen met de installatie, zodanig dat ik meerdere sites kan draaien, die elders op de vaste schijf worden opgeslagen, onder meer door aanpassingen in httpd.conf, hosts en php.ini. Ik geloof niet dat dit alles onder het begrip thuis-servertje valt.

Was niet verkeerd bedoeld. Meer om te kijken of je thuis of bij een provider/hosting je server/site hebt staan.
Quote:
Vanaf mijn laptop (waar WAMPP op staat geïnstalleerd) draait alles prima. Als ik daar het formulier invul met als afzender één van mijn andere emailaccouts, dan krijg ik precies wat ik wil. Namelijk één maitje aan de webmaster (zoals gevraagd in regel 27 van het bovenstaande script) en één op mijn andere emailadres.

Is de laptop dan tevens de server?
Quote:
Als ik echter de site vanaf een andere pc benader, het formulier invul met een emailaccount van bijvoorbeeld mijn vrouw, dan krijgt ik alleen als webmaster een mailtje, maar het bewuste kopietje komt nooit aan.

Klinkt misschien vreemd, maar als je het op die computer invult met exact dezelfde gegevens als die je op de laptop ingeeft, gaat het dan ook mis?
Quote:
Kun je me uitleggen wat je bedoelt met 'dat het path (welk path?)niet naar localhost verwijst'. Daar zou hem misschien de kneep kunnen zitten.

Heel simpel voorbeeldje is: Stel je hebt een plaatje op je site en die wijst naar de C:\plaatjes directory, dan zal niemand het plaatje zien, alleen jij.
 
Pim

Pim

15/11/2006 18:41:00
Quote Anchor link
Hoi The San (vanwaar die naam?)

- met welk commando kan ik checken of die variabelen bestaan en gepost zijn. wordt dat zoiets if(isset($_POST['$email']==0)

- de site wordt gehost bij Hosting2Go. De naam van de site (in aanbouw) is www.medischadvocatenkantoordekort.nl

- mijn laptop is dus niet de server; alleen ontwikkelomgeving.

- de laatste vraag van je, moet ik met 'ja' beantwoorden. Op de laptop en de gewone pc typ ik exact hetzelfde in. De laptop geeft het goede resultaat (kopietje komt aan), de gewone pc niet. Verschil is natuurlijk wel dat ik vanaf de gewone pc de 'echte' (gehoste) site op internet benaderd, terwijl de laptop de ontwikkelomgeving is.
Als ik de wifi-kaart mijn laptop loskoppel, krijg ik keurig netjes een foutmelding, dat de berichten niet verzonden kunnen worden. De afhandeling vind dus niet alleen op de laptop plaats.

Vandaar dat ik dacht aan een euvel met php.ini, httpd.conf of hosts of aan de voglende scriptregel:

$headers="From:$email\r\n";

Ik zal trouwens nog even die From in FROM veranderen, wie weet helpt dat, ergens las ik dat je het beste hoofdletters kunt gebuiken.

Vooralsnog snap ik er geen sikkepitje van. Jij wel?

gr. Pim
 
Pim

Pim

17/11/2006 17:49:00
Quote Anchor link
fout zelf gevonden. Script werkt nu goed, de kopie-mail wordt ontvangen.

code had - ter hoogte van regel 27 van bovenste script - moeten zijn:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$headers= "FROM: $email" ."\r\n";
$headers.= "CC: $email" ."\r\n";


De code juist voor \r\n"; was verkeerd.

Verder blijft er nog iets vreemds aan de hand. Als ik naar een andere pc in mijn netwerk ga (anders dan mijn laptop, waarop de site in kwestie ontwikkeld wordt) en ik ga internet op, roep de gemaakt site op, vul het formulier in, met een e-mail adres van mijn eigen provider (@Home), dan komt de kopie-email niet aan. Als je bijvoorbeeld een hotmail-e-mailadres invult, dan lukt het wel.

Pim
 
- SanThe -

- SanThe -

17/11/2006 23:13:00
Quote Anchor link
Het kan zijn dat de mail als spam wordt weggefilterd. Dit kan je vaak voorkomen door de 'headers' zo compleet mogelijk te maken. Zie onder andere mail().
 



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.