Formulier website komt aan in spam

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Davy janssens

davy janssens

10/12/2019 20:30:47
Quote Anchor link
Beste,

Aangezien ik van php zelf weinig snap en toch iemand me contacteerde met een probleem stel ik de vraag even hier.
Op de website van www.dilissenbvba.be staat op hun contactpagina een formulier dat moet verzonden worden naar [email protected]
Nu komt dit aan in hun spambox. Na navraag bij de webhoster kom ik te weten dat zei werken via office 365 en de host stuurde me onderstaande dat ik dit moest instellen als het formulier office 365 ondersteunde:
Ondersteund het formulier SMTP? Dan kan u daar de Office 365 gegevens ingeven:

Uitgaande mailserver: smtp.office365.com.
Gebruikersnaam: Uw Office 365 e-mail adres(e.g. [email protected])
Wachtwoord: Uw Office 365 wachtwoord.
Poort: 587 (Met TLS)
Authenticatie/aanmelden: Vereist

Nu weet ik niet of het formulier dit ondersteund. En dit moet zo snel mogelijk opgelost worden. Het mag ook met een ander formulier (wel kleuren zowat aanhouden) maar zou dit dus graag laten doen tegen een vergoeding. Als iemand me hier zo snel mogelijk mee kan helpen...

Alvast bedankt
 
PHP hulp

PHP hulp

19/04/2024 02:10:36
 
- Ariën  -
Beheerder

- Ariën -

10/12/2019 20:39:36
Quote Anchor link
Hoe wordt de informatie uit het contactformulier nu verstuurd?
 
- SanThe -

- SanThe -

10/12/2019 23:54:55
Quote Anchor link
Op een klein scherm is het formulier niet te zien.
Je zou naar beneden moeten scrollen maar dat is niet mogelijk.

http://wiki.phpbeginners.nl/index.php/De_juiste_mailheaders
 
Davy janssens

davy janssens

11/12/2019 10:33:02
Quote Anchor link
Via een php script. Maar die komen dus in spam terecht en
Volgens host zou dit verzonden moeten worden via smtp omdat zij gebruik maken van office 365.
Ik heb alle gegevens van de klant ik zoek gewoon iemand die dit snel in orde kan maken voor een schappelijke vergoeding
 
- Ariën  -
Beheerder

- Ariën -

11/12/2019 12:35:01
Quote Anchor link
Kan je de relevante code van het mail-proces hier delen? Met foute headers heeft je mail je ook kans op een enkekltje spam-box.
Gewijzigd op 11/12/2019 12:35:56 door - Ariën -
 
Davy janssens

davy janssens

11/12/2019 13:13:53
Quote Anchor link
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
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
<?php

    if (!isset($_SESSION)) session_start();
    if(!$_POST) exit;
    
    // Enter your name or company name below
    $receiver_name = "Aannemingen Dilissen bvba";
    
    // Enter email address below for receiving the form
    // All Contact messages will be sent there

    $receiver_email = "[email protected]";
    
    // Enter email subject below
    // This will be your message subject

    $msg_subject = "Bericht van dilissenbvba.be";  
    
    $sendername = strip_tags(trim($_POST["sendername"]));    
    $senderemail = strip_tags(trim($_POST["senderemail"]));
    $sendertel = strip_tags(trim($_POST["sendertel"]));
    $sendersubject = strip_tags(trim($_POST["sendersubject"]));
    $sendermessage = strip_tags(trim($_POST["sendermessage"]));
    $securitycode = strip_tags(trim($_POST["securitycode"]));
    
    /*
    ========================================
    Start server side validation
    ========================================
    */

    $errors = array();
     //validate name
    if(isset($_POST["sendername"])){
    
            if (!$sendername) {
                $errors[] = "Vul u naam in.";
            }
elseif(strlen($sendername) < 2)  {
                $errors[] = "Je naam moet minstens 2 karakters bevatten.";
            }
    
    }

    //validate email address
    if(isset($_POST["senderemail"])){
        if (!$senderemail) {
            $errors[] = "Vul uw email in.";
        }
else if (!validEmail($senderemail)) {
            $errors[] = "Vul een geldig emailadres in.";
        }
    }

    
    //validate tel
    if(isset($_POST["sendertel"])){
            if (!$sendertel) {
                $errors[] = "Vul je telefoonnr in.";
            }
elseif(strlen($sendertel) < 8)  {
                $errors[] = "Het onderwerp moet minstens 8 karakters bevatten.";
            }
    }

    
    
    //validate subject
    if(isset($_POST["sendersubject"])){
            if (!$sendersubject) {
                $errors[] = "Vul een onderwerp in.";
            }
elseif(strlen($sendersubject) < 4)  {
                $errors[] = "Het onderwerp moet minstens 4 karakters bevatten.";
            }
    }

    
    //validate message / comment
    if(isset($_POST["sendermessage"])){
        if (strlen($sendermessage) < 10) {
            if (!$sendermessage) {
                $errors[] = "Vul een bericht in.";
            }
else {
                $errors[] = "Het bericht moet minstens 10 karakters bevatten";
            }
        }
    }

    
    //validate security captcha
    if(isset($_POST["securitycode"])){
        if (!$securitycode) {
            $errors[] = "Vul de veiligheidscode in.";
        }
else if (md5($securitycode) != $_SESSION['smartCheck']['securitycode']) {
            $errors[] = "De code was niet juist!";
        }
    }

    
    if ($errors) {
        //Output errors in a list
        $errortext = "";
        foreach ($errors as $error) {
            $errortext .= '<li>'. $error . "</li>";
        }

    
        echo '<div class="alert notification alert-error">De volgende fouten hebben zich voorgedaan:<br><ul>'. $errortext .'</ul></div>';
    
    }
else{
    
        require "PHPMailerAutoload.php";
        require "smartmessage.php";
            
        $mail = new PHPMailer();
        //$mail->isSendmail();
        $mail->IsHTML(true);
        $mail->From = $senderemail;
        $mail->CharSet = "UTF-8";
        $mail->FromName = $sendername;
        $mail->Encoding = "base64";
        $mail->Timeout = 200;
        $mail->ContentType = "text/html";
        $mail->addAddress($receiver_email, $receiver_name);
        $mail->Subject = $msg_subject;    
        $mail->Body = $message;
        $mail->AltBody = "Gebruik een HTML compatibele email client";
                
        // For multiple email recepients from the form
        // Simply change recepients from false to true
        // Then enter the recipients email addresses
        // echo $message;

        $recipients = false;
        if($recipients == true){
            $recipients = array(
                "[email protected]" => "Recipient Name",
                "[email protected]" => "Recipient Name",
            );

            
            foreach($recipients as $email => $name){
                $mail->AddBCC($email, $name);
            }    
        }

        
        if($mail->Send()) {
          echo '<div class="alert notification alert-success">Bedankt, je bericht is succesvol verzonden.</div> ';
        }
else {
          echo '<div class="alert notification alert-error">Sorry! Er is iets fout gegaan. Probeer opnieuw.</div> ';
        }
    }

    // end error array if    
    // ultimate email validation function

    function validEmail($senderemail) {
        $isValid = true;
        $atIndex = strrpos($senderemail, "@");
        if (is_bool($atIndex) && !$atIndex) {
            $isValid = false;
        }
else {
            $domain = substr($senderemail, $atIndex + 1);
            $local = substr($senderemail, 0, $atIndex);
            $localLen = strlen($local);
            $domainLen = strlen($domain);
            if ($localLen < 1 || $localLen > 64) {
                // local part length exceeded
                $isValid = false;
            }
else if ($domainLen < 1 || $domainLen > 255) {
                // domain part length exceeded
                $isValid = false;
            }
else if ($local[0] == '.' || $local[$localLen - 1] == '.') {
                // local part starts or ends with '.'
                $isValid = false;
            }
else if (preg_match('/\\.\\./', $local)) {
                // local part has two consecutive dots
                $isValid = false;
            }
else if (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain)) {
                // character not valid in domain part
                $isValid = false;
            }
else if (preg_match('/\\.\\./', $domain)) {
                // domain part has two consecutive dots
                $isValid = false;
            }
else if (!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/', str_replace("\\\\", "", $local))) {
                // character not valid in local part unless
                // local part is quoted

                if (!preg_match('/^"(\\\\"|[^"])+"$/', str_replace("\\\\", "", $local))) {
                    $isValid = false;
                }
            }

            if ($isValid && !(checkdnsrr($domain, "MX") || checkdnsrr($domain, "A"))) {
                // domain not found in DNS
                $isValid = false;
            }
        }

        return $isValid;
    }

?>
 
- Ariën  -
Beheerder

- Ariën -

11/12/2019 13:26:38
Quote Anchor link
Ah, je gebruikt al phpMailer. Dat scheelt al.

Kijk eens naar deze URL over hoe je SMTP inbouwt:
https://github.com/PHPMailer/PHPMailer/blob/master/examples/smtp.phps
 
Davy janssens

davy janssens

11/12/2019 13:34:35
Quote Anchor link
Maar het is daarom dat ik stuur. Dat is allemaal chinees voor mij :)
Kijk ik doe normaal alleen webdesign en met een CMS-systeem. Ga nu wel starten met een opleiding php maar is nog maar begin. Maar iemand vroeg me om eens naar dit probleem te kijken maar kom er gewoon niet uit.
 
- Ariën  -
Beheerder

- Ariën -

11/12/2019 13:51:45
Quote Anchor link
Ik kan vanmiddag wel een voorbeeld uittypen.

Toevoeging op 11/12/2019 18:37:32:

Pas lijn 102 en 103 aan in:

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
$mail = new PHPMailer();
$mail->isSMTP();
//Enable SMTP debugging
// SMTP::DEBUG_OFF = off (for production use)
// SMTP::DEBUG_CLIENT = client messages
// SMTP::DEBUG_SERVER = client and server messages

$mail->SMTPDebug = SMTP::DEBUG_SERVER;

//Set the hostname of the mail server
$mail->Host = 'mail.example.com';

//Set the SMTP port number - likely to be 25, 465 or 587
$mail->Port = 25;
//Whether to use SMTP authentication
$mail->SMTPAuth = true;

//Username to use for SMTP authentication
$mail->Username = '[email protected]';

//Password to use for SMTP authentication
$mail->Password = 'yourpassword';


En vul de juiste SMTP-gegevens in.

Plaats ook even: $mail->ErrorInfo; in je "Sorry...."-melding op lijn 135.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
echo '<div class="alert notification alert-error">Sorry! Er is iets fout gegaan. Probeer opnieuw!</div>';
echo '<div class="alert notification alert-error">Error: '.$mail->ErrorInfo.'</div>';
Gewijzigd op 11/12/2019 20:42:00 door - Ariën -
 
Davy janssens

davy janssens

11/12/2019 21:15:30
Quote Anchor link
Denk dat ik ergens toch niet goed heb overgenomen. Dit is nu het volledige script:

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
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
197
198
199
200
201
202
203
204
205
206
<?php

    if (!isset($_SESSION)) session_start();
    if(!$_POST) exit;
    
    // Enter your name or company name below
    $receiver_name = "Aannemingen Dilissen bvba";
    
    // Enter email address below for receiving the form
    // All Contact messages will be sent there

    $receiver_email = "[email protected]";
    
    // Enter email subject below
    // This will be your message subject

    $msg_subject = "Bericht van dilissenbvba.be";  
    
    $sendername = strip_tags(trim($_POST["sendername"]));    
    $senderemail = strip_tags(trim($_POST["senderemail"]));
    $sendertel = strip_tags(trim($_POST["sendertel"]));
    $sendersubject = strip_tags(trim($_POST["sendersubject"]));
    $sendermessage = strip_tags(trim($_POST["sendermessage"]));
    $securitycode = strip_tags(trim($_POST["securitycode"]));
    
    /*
    ========================================
    Start server side validation
    ========================================
    */

    $errors = array();
     //validate name
    if(isset($_POST["sendername"])){
    
            if (!$sendername) {
                $errors[] = "Vul u naam in.";
            }
elseif(strlen($sendername) < 2)  {
                $errors[] = "Je naam moet minstens 2 karakters bevatten.";
            }
    
    }

    //validate email address
    if(isset($_POST["senderemail"])){
        if (!$senderemail) {
            $errors[] = "Vul uw email in.";
        }
else if (!validEmail($senderemail)) {
            $errors[] = "Vul een geldig emailadres in.";
        }
    }

    
    //validate tel
    if(isset($_POST["sendertel"])){
            if (!$sendertel) {
                $errors[] = "Vul je telefoonnr in.";
            }
elseif(strlen($sendertel) < 8)  {
                $errors[] = "Het onderwerp moet minstens 8 karakters bevatten.";
            }
    }

    
    
    //validate subject
    if(isset($_POST["sendersubject"])){
            if (!$sendersubject) {
                $errors[] = "Vul een onderwerp in.";
            }
elseif(strlen($sendersubject) < 4)  {
                $errors[] = "Het onderwerp moet minstens 4 karakters bevatten.";
            }
    }

    
    //validate message / comment
    if(isset($_POST["sendermessage"])){
        if (strlen($sendermessage) < 10) {
            if (!$sendermessage) {
                $errors[] = "Vul een bericht in.";
            }
else {
                $errors[] = "Het bericht moet minstens 10 karakters bevatten";
            }
        }
    }

    
    //validate security captcha
    if(isset($_POST["securitycode"])){
        if (!$securitycode) {
            $errors[] = "Vul de veiligheidscode in.";
        }
else if (md5($securitycode) != $_SESSION['smartCheck']['securitycode']) {
            $errors[] = "De code was niet juist!";
        }
    }

    
    if ($errors) {
        //Output errors in a list
        $errortext = "";
        foreach ($errors as $error) {
            $errortext .= '<li>'. $error . "</li>";
        }

    
        echo '<div class="alert notification alert-error">De volgende fouten hebben zich voorgedaan:<br><ul>'. $errortext .'</ul></div>';
    
    }
else{
    
        require "PHPMailerAutoload.php";
        require "smartmessage.php";
            
        $mail = new PHPMailer();
        $mail->isSMTP();
        //Enable SMTP debugging
        // SMTP::DEBUG_OFF = off (for production use)
        // SMTP::DEBUG_CLIENT = client messages
        // SMTP::DEBUG_SERVER = client and server messages


        $mail->SMTPDebug = SMTP::DEBUG_SERVER;

        //Set the hostname of the mail server
        $mail->Host = 'smtp.office365.com';

        //Set the SMTP port number - likely to be 25, 465 or 587
        $mail->Port = 587;
        $mail->SMTPSecure = 'tls';
        //Whether to use SMTP authentication
        $mail->SMTPAuth = true;

        //Username to use for SMTP authentication
        $mail->Username = '***************';

        //Password to use for SMTP authentication
        $mail->Password = '*************';
        $mail->IsHTML(true);
        $mail->From = $senderemail;
        $mail->CharSet = "UTF-8";
        $mail->FromName = $sendername;
        $mail->Encoding = "base64";
        $mail->Timeout = 200;
        $mail->ContentType = "text/html";
        $mail->addAddress($receiver_email, $receiver_name);
        $mail->Subject = $msg_subject;    
        $mail->Body = $message;
        $mail->AltBody = "Gebruik een HTML compatibele email client";
        
        echo '<div class="alert notification alert-error">Sorry! Er is iets fout gegaan. Probeer opnieuw!</div>';
        echo '<div class="alert notification alert-error">Error: '.$mail->ErrorInfo.'</div>';
                
        // For multiple email recepients from the form
        // Simply change recepients from false to true
        // Then enter the recipients email addresses
        // echo $message;

        $recipients = false;
        if($recipients == true){
            $recipients = array(
                "[email protected]" => "Recipient Name",
                "[email protected]" => "Recipient Name",
            );

            
            foreach($recipients as $email => $name){
                $mail->AddBCC($email, $name);
            }    
        }

        
        if($mail->Send()) {
          echo '<div class="alert notification alert-success">Bedankt, je bericht is succesvol verzonden.</div> ';
        }
else {
          echo '<div class="alert notification alert-error">Sorry! Er is iets fout gegaan. Probeer opnieuw.</div> ';
        }
    }

    // end error array if    
    // ultimate email validation function

    function validEmail($senderemail) {
        $isValid = true;
        $atIndex = strrpos($senderemail, "@");
        if (is_bool($atIndex) && !$atIndex) {
            $isValid = false;
        }
else {
            $domain = substr($senderemail, $atIndex + 1);
            $local = substr($senderemail, 0, $atIndex);
            $localLen = strlen($local);
            $domainLen = strlen($domain);
            if ($localLen < 1 || $localLen > 64) {
                // local part length exceeded
                $isValid = false;
            }
else if ($domainLen < 1 || $domainLen > 255) {
                // domain part length exceeded
                $isValid = false;
            }
else if ($local[0] == '.' || $local[$localLen - 1] == '.') {
                // local part starts or ends with '.'
                $isValid = false;
            }
else if (preg_match('/\\.\\./', $local)) {
                // local part has two consecutive dots
                $isValid = false;
            }
else if (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain)) {
                // character not valid in domain part
                $isValid = false;
            }
else if (preg_match('/\\.\\./', $domain)) {
                // domain part has two consecutive dots
                $isValid = false;
            }
else if (!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/', str_replace("\\\\", "", $local))) {
                // character not valid in local part unless
                // local part is quoted

                if (!preg_match('/^"(\\\\"|[^"])+"$/', str_replace("\\\\", "", $local))) {
                    $isValid = false;
                }
            }

            if ($isValid && !(checkdnsrr($domain, "MX") || checkdnsrr($domain, "A"))) {
                // domain not found in DNS
                $isValid = false;
            }
        }

        return $isValid;
    }

?>


Toevoeging op 11/12/2019 21:16:05:

Het formulier verzend dus niet
Gewijzigd op 11/12/2019 21:29:57 door - Ariën -
 
- Ariën  -
Beheerder

- Ariën -

11/12/2019 21:18:41
Quote Anchor link
De syntax van het script is goed.
Wat meldt de error_log?

Wat doet lijn 137 en 138 daar?
Controleren doe je vanaf lijn 156, waar de send() functie wordt aangeroepen.
Gewijzigd op 11/12/2019 21:22:11 door - Ariën -
 
Davy janssens

davy janssens

11/12/2019 21:23:50
Quote Anchor link
Sorry, ik ben een leek, hoe kan ik de error_log zien?
 
- Ariën  -
Beheerder

- Ariën -

11/12/2019 21:29:07
Quote Anchor link
Ik weet niet hoe je webhosting is ingericht.
Maar vaak via je controlpanel van je hosting, of buiten de public-map van je FTP.


Ik raad wel aan om lijn 137 en 138 te moven naar lijn 159... ;-)

Programmeren is logisch kijken ;-)
Gewijzigd op 11/12/2019 21:34:31 door - Ariën -
 
Davy janssens

davy janssens

11/12/2019 21:38:06
Quote Anchor link
ik zie iets van error in CP maar daar zie ik alleen dit
[Wed Dec 11 21:29:57 2019] [error] [client 141.134.109.92] File does not exist: /home/dilbvba/public_html/404.shtml
[Wed Dec 11 21:29:57 2019] [error] [client 141.134.109.92] File does not exist: /home/dilbvba/public_html/img/ico/favicon.png
 
- Ariën  -
Beheerder

- Ariën -

11/12/2019 21:40:27
Quote Anchor link
Dat is niet echt relevant. Gewoon een browser die een 404 vanuit de webserver niet kan ophalen, en een favicon.

Je moet echt naar errors zoeken op het moment dat je de fout triggert.
Op jouw site levert dit een Error 500 (Internal server error) op. Dus volg eerst eens mijn advies op om die regels op de juiste plek te zetten.

Test anders dit script eens los uit:
https://github.com/PHPMailer/PHPMailer/blob/master/examples/smtp.phps

Dan kan je eenvoudig even kijken welke settings prima werken, en daarna je eigen script erop aanpassen. Dan heb je meteen wat meer overzicht.
Gewijzigd op 11/12/2019 21:48:40 door - Ariën -
 



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.