PHP E-mail zenden werkt niet.

Pagina: 1
Acties:
  • 435 views

Acties:
  • 0 Henk 'm!

  • Bernhard1990
  • Registratie: November 2013
  • Laatst online: 04-12-2022
Beste,

Ik heb onderstaand formulier gemaakt ik wil graag dat ik een mail ontvang en dat er een mail naar degene gaat die het formulier heeft ingevuld. Ik krijg wel een mail maar degene die het invult niet. Iemand een idee wat er fout gaat?

code:
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
<?php

ini_set('display_errors', 1);
error_reporting(E_ALL);

if((isset($_GET['submit']) && $_GET['submit'] == '$_post')){ 


$onderwerp = 'Bevestigingsmail';
$webmaster = 'info@voorbeeld.nl';


$emailadres = $_POST['email']; 
$naam = $_POST['fullname'];
$telefoonnummer = $_POST['cellphone'];
$stad = $_POST['city'];
$opmerking = $_POST['comment'];


$body = <<<EOD
<br><hr><br>
E-mail: $email <br>
Naam: $fullname <br>
telefoonnummer: $cellphone <br>
Stad: $city <br>
Opmerking: $comment <br>
EOD;

$headers = "from: $email\r\n";
$headers .= "conntent-type: text/html\r\n";
$success =mail ($webmaster, $onderwerp, $body, $headers);

 }

// Set email variables
$email_to = 'info@voorbeeld.nl';
$email_subject = 'onderwerp mail';

// Set required fields
$required_fields = array('fullname','email','cellphone','city');

// set error messages
$error_messages = array(
    'fullname' => 'Vul je naam in.',
    'email' => 'Vul je e-mailadres in.',
    'cellphone' => 'Vul je telefoonnummer in.',
    'city' => 'Kies een stad.',
    
);

// Set form status
$form_complete = FALSE;

// configure validation array
$validation = array();

// check form submittal
if(!empty($_POST)) {
    // Sanitise POST array
    foreach($_POST as $key => $value) $_POST[$key] = remove_email_injection(trim($value));
    
    // Loop into required fields and make sure they match our needs
    foreach($required_fields as $field) {       
        // the field has been submitted?
        if(!array_key_exists($field, $_POST)) array_push($validation, $field);
        
        // check there is information in the field?
        if($_POST[$field] == '') array_push($validation, $field);
        
        // validate the email address supplied
        if($field == 'email') if(!validate_email_address($_POST[$field])) array_push($validation, $field);
    }
    
    // basic validation result
    if(count($validation) == 0) {
        // Prepare our content string
        $email_content = 'New Website Comment: ' . "\n\n";
        
        // simple email content
        foreach($_POST as $key => $value) {
            if($key != 'submit') $email_content .= $key . ': ' . $value . "\n";
        }
        
        // if validation passed ok then send the email
        mail($email_to, $email_subject, $email_content);
        
        // Update form switch
        $form_complete = TRUE;
    }
}

function validate_email_address($email = FALSE) {
    return (preg_match('/^[^@\s]+@([-a-z0-9]+\.)+[a-z]{2,}$/i', $email))? TRUE : FALSE;
}

function remove_email_injection($field = FALSE) {
   return (str_ireplace(array("\r", "\n", "%0a", "%0d", "Content-Type:", "bcc:","to:","cc:"), '', $field));
}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>



    <title>Contact Form</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <link href="contactform.css" rel="stylesheet" type="text/css" />
    
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/mootools/1.3.0/mootools-yui-compressed.js"></script>
    <script type="text/javascript" src="validation.js"></script>
    
    <script type="text/javascript">
        var nameError = '<?php echo $error_messages['fullname']; ?>';
        var emailError = '<?php echo $error_messages['email']; ?>';
        var cellphoneError = '<?php echo $error_messages['cellphone']; ?>';
        var cityError = '<?php echo $error_messages['city']; ?>';
    </script>

</head>

<body> 


<div id="formWrap">
<div id="form">
</div>

<form action="contact.php" method="post" id="comments_form">
<?php if($form_complete === FALSE): ?>
    <div class="row"> 
    <div class="label"> Voor en achternaam </div>
    <div class="input"> 
    <input type="text" id="fullname" class="detail" name="fullname" value="<?php echo isset($_POST['fullname'])? $_POST['fullname'] : ''; ?>" /><?php if(in_array('fullname', $validation)): ?><span class="error"><?php echo $error_messages['fullname']; ?></span><?php endif; ?>
    <div class="context"></div>
    </div> 
    </div>
    
    
    <div class="row"> 
    <div class="label"> E-mailadres </div>
    <div class="input"> 
    <input type="text" id="e-mail" class="detail" name="email" value="<?php echo isset($_POST['email'])? $_POST['email'] : ''; ?>" /><?php if(in_array('email', $validation)): ?><span class="error"><?php echo $error_messages['email']; ?></span><?php endif; ?>
    <div class="context"></div>
    </div> 
    </div>
    
    <div class="row"> 
    <div class="label"> Telefoonnummer </div>
    <div class="input"> 
    <input type="number" id="cellphone" class="detail" name="cellphone" value="<?php echo isset($_POST['cellphone'])? $_POST['cellphone'] : ''; ?>" /><?php if(in_array('cellphone', $validation)): ?><span class="error"><?php echo $error_messages['cellphone']; ?></span><?php endif; ?>
    <div class="context"></div>
    </div> 
    </div>
    
    <div class="row"> 
    <div class="label"> In welke stad? </div>
    <div class="input"> 
    <select>
  <option value="Utrecht">Utrecht</option>
</select>
    <input type="dropdown" id="city" class="" name="city" value="<?php echo isset($_POST['city'])? $_POST['city'] : ''; ?>" /><?php if(in_array('city', $validation)): ?><span class="error"><?php echo $error_messages['city']; ?></span><?php endif; ?>
    </div> 
    </div>
    
    
    <div class="row"> 
    <div class="label"> Opmerkingen </div>
    <div class="input"> 
    <textarea id= "comment" name="comment" class="mess"><?php echo isset($_POST['comment'])? $_POST['comment'] : ''; ?></textarea><?php if(in_array('comment', $validation)): ?><span class="error"><?php echo $error_messages['comment']; ?></span><?php endif; ?>
    </div> 
    </div>
    

    <div class="submit"> 
    <input type= "submit" id="submit" name="submit" value="send message" />
    </div>
    </form> 
<?php else: ?>
<p>Thank you for your Message!</p>

<script type="text-javascript">


window.setTimeout("location=('index.html');",5000)

</script>

<?php endif; ?>

</div> 
</body> 

</html>

Acties:
  • 0 Henk 'm!

  • azerty
  • Registratie: Maart 2009
  • Laatst online: 21:54
Ja. Als je je logica eens goed bekijkt in de code zou je het ook zelf moeten kunnen zien ;)

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Is het niet makkelijker om de PHPMailer class te gebruiken? :) Dan kun je heel simpel je headers zetten middels methods, zie ook de simple example. :)

[ Voor 7% gewijzigd door CH4OS op 06-09-2015 20:50 ]


Acties:
  • 0 Henk 'm!

  • Bernhard1990
  • Registratie: November 2013
  • Laatst online: 04-12-2022
Dat is juist waarom ik het hier vraag ;-)

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Bernhard1990 schreef op zondag 06 september 2015 @ 21:07:
Dat is juist waarom ik het hier vraag ;-)
Er wordt echter wel verwacht, dat je zelf ook wat van je eigen code debugged, als je ervoor kiest om je eigen code te gebruiken en dat is wat azerty zegt. ;) Je fout is niet moeilijk. Wellicht vergeet je bijvoorbeeld iets.

Overigens heeft PHP tegenwoordig ook zelf al filters, waarmee bijvoorbeeld e-mailadressen worden gevalideerd. Lijkt me een stuk betrouwbaarder dan regular expressions.

[ Voor 32% gewijzigd door CH4OS op 06-09-2015 21:15 ]


Acties:
  • 0 Henk 'm!

  • Compizfox
  • Registratie: Januari 2009
  • Laatst online: 21:24

Compizfox

Bait for wenchmarks

CptChaos schreef op zondag 06 september 2015 @ 20:49:
Is het niet makkelijker om de PHPMailer class te gebruiken? :) Dan kun je heel simpel je headers zetten middels methods, zie ook de simple example. :)
Dit, ja.

Uit bovengelinkte pagina:
Formatting email correctly is surprisingly difficult. There are myriad overlapping RFCs, requiring tight adherence to horribly complicated formatting and encoding rules - the vast majority of code that you'll find online that uses the mail() function directly is just plain wrong! Please don't be tempted to do it yourself.
Zodra je iets gaat doen dat ingewikkelder wordt dan een plain text email verzenden naar één ontvanger, zou ik gewoon naar PHPMailer grijpen.

Gewoon een heel grote verzameling snoertjes


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Sorry, maar ik ga ook dit topic weer sluiten, nogmaals wijzend op De Quickstart, net zoals ik dat eerder deed. Ik zie totaal geen zelfredzaamheid of eigen inzet terug in dit topic: je dumpt ~200 regels code, zegt dat het niet werkt en hoopt dat wij wel even voor je gaan debuggen.

Het antwoord op dit topic is hierboven al gegeven en daarmee exact hetzelfde als bij all andere tientallen topics hierover: tenzij je diepgaande kennis hebt over alles rondom e-mail kom je er niet door domweg de mail-functie te gebruiken, en zelfs als je die kennis wél hebt is het duizenden keren makkelijker om PHPMailer of een vergelijkbare tool te implementeren die je al dat werk uit handen neemt.

Aangezien je niet gezocht lijkt te hebben noch eigen inzet toont om je eigen probleem op te lossen doe ik ook dit topic op slot.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.