Xammp. Mail sturen door middel van localhost werkt niet(gmail)
Maar mijn localhost wil geen email sturen naar dat email adres wat ik invoer.
Ik krijg veder geen foutmeldingen.
Ik gebruik de volgende settings in mijn php.ini en sendmail.ini.
sendmail.ini:
[sendmail]
smtp_server=smtp.gmail.com
smtp_port=587
error_logfile=error.log
debug_logfile=debug.log
auth_username= [email protected]
auth_password= *********
[email protected]
php.ini:
[mail function]
SMTP = localhost
smtp_port= 587
sendmail_from = [email protected]
sendmail_path = sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t "
Kan iemand mij helpen met mij probleem?
Gewijzigd op 23/03/2017 21:06:59 door Jordi timmerman
Staat er ook niks in de log? En hoe mail je? Heb je daar relevante code van?
Register.php
Code (php)
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
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
<?php
$_SESSION['email'] = $_POST['email'];
$_SESSION['first_name'] = $_POST['firstname'];
$_SESSION['last_name'] = $_POST['lastname'];
$first_name = $mysqli->escape_string($_POST['firstname']);
$last_name = $mysqli->escape_string($_POST['lastname']);
$email = $mysqli->escape_string($_POST['email']);
$password = $mysqli->escape_string(password_hash($_POST['password'], PASSWORD_BCRYPT));
$hash = $mysqli->escape_string( md5( rand(0,1000) ) );
$result = $mysqli->query("SELECT * FROM users WHERE email='$email'") or die($mysqli->error());
if ( $result->num_rows > 0 ) {
$_SESSION['message'] = 'Gebruiker met die email bestaad al!';
header("location: error.php");
}
else {
$sql = "INSERT INTO users (first_name, last_name, email, password, hash) "
. "VALUES ('$first_name','$last_name','$email','$password', '$hash')";
if ( $mysqli->query($sql) ){
$_SESSION['active'] = 0;
$_SESSION['logged_in'] = true;
$_SESSION['message'] =
"Je hebt een mail ontvangen met een acctivatie link";
$to = $email;
$subject = 'Account acctivatie ';
$message_body = '
Hello '.$first_name.',
Dank je wel voor het aanmaken van een account.
Klik aub op de link hieronder om je account te acctiveren.
http://localhost/login-system/verify.php?email='.$email.'&hash='.$hash;
mail( $to, $subject, $message_body );
header("location: profile.php");
}
else {
$_SESSION['message'] = 'Registration failed!';
header("location: error.php");
}
}
verify.php:
[code]<?php
require 'db.php';
session_start();
if(isset($_GET['email']) && !empty($_GET['email']) AND isset($_GET['hash']) && !empty($_GET['hash']))
{
$email = $mysqli->escape_string($_GET['email']);
$hash = $mysqli->escape_string($_GET['hash']);
$result = $mysqli->query("SELECT * FROM users WHERE email='$email' AND hash='$hash' AND active='0'");
if ( $result->num_rows == 0 )
{
$_SESSION['message'] = "Account is al geactiveerd!";
header("location: error.php");
}
else {
$_SESSION['message'] = "Je account is geactiveerd";
$mysqli->query("UPDATE users SET active='1' WHERE email='$email'") or die($mysqli->error);
$_SESSION['active'] = 1;
header("location: success.php");
}
}
else {
$_SESSION['message'] = "";
header("location: error.php");
}
?>
Ik hoop dat je hier genoeg aan hebt.
$_SESSION['email'] = $_POST['email'];
$_SESSION['first_name'] = $_POST['firstname'];
$_SESSION['last_name'] = $_POST['lastname'];
$first_name = $mysqli->escape_string($_POST['firstname']);
$last_name = $mysqli->escape_string($_POST['lastname']);
$email = $mysqli->escape_string($_POST['email']);
$password = $mysqli->escape_string(password_hash($_POST['password'], PASSWORD_BCRYPT));
$hash = $mysqli->escape_string( md5( rand(0,1000) ) );
$result = $mysqli->query("SELECT * FROM users WHERE email='$email'") or die($mysqli->error());
if ( $result->num_rows > 0 ) {
$_SESSION['message'] = 'Gebruiker met die email bestaad al!';
header("location: error.php");
}
else {
$sql = "INSERT INTO users (first_name, last_name, email, password, hash) "
. "VALUES ('$first_name','$last_name','$email','$password', '$hash')";
if ( $mysqli->query($sql) ){
$_SESSION['active'] = 0;
$_SESSION['logged_in'] = true;
$_SESSION['message'] =
"Je hebt een mail ontvangen met een acctivatie link";
$to = $email;
$subject = 'Account acctivatie ';
$message_body = '
Hello '.$first_name.',
Dank je wel voor het aanmaken van een account.
Klik aub op de link hieronder om je account te acctiveren.
http://localhost/login-system/verify.php?email='.$email.'&hash='.$hash;
mail( $to, $subject, $message_body );
header("location: profile.php");
}
else {
$_SESSION['message'] = 'Registration failed!';
header("location: error.php");
}
}
verify.php:
[code]<?php
require 'db.php';
session_start();
if(isset($_GET['email']) && !empty($_GET['email']) AND isset($_GET['hash']) && !empty($_GET['hash']))
{
$email = $mysqli->escape_string($_GET['email']);
$hash = $mysqli->escape_string($_GET['hash']);
$result = $mysqli->query("SELECT * FROM users WHERE email='$email' AND hash='$hash' AND active='0'");
if ( $result->num_rows == 0 )
{
$_SESSION['message'] = "Account is al geactiveerd!";
header("location: error.php");
}
else {
$_SESSION['message'] = "Je account is geactiveerd";
$mysqli->query("UPDATE users SET active='1' WHERE email='$email'") or die($mysqli->error);
$_SESSION['active'] = 1;
header("location: success.php");
}
}
else {
$_SESSION['message'] = "";
header("location: error.php");
}
?>
Ik hoop dat je hier genoeg aan hebt.
https://www.phphulp.nl/php/forum/topic/de-juiste-mailheaders/84352/
Ikzelf gebruik bij voorkeur phpMailer.
Gebruik de juiste headers in je mail() functie: Ikzelf gebruik bij voorkeur phpMailer.
Kijk ook eens naar wat je ISP wel en niet toestaat; verkeer tussen mailservers dient te geschieden over poort 25, de submission poort (587) is niet voldoende om aflevering te bewerkstelligen wanneer het verkeer tussen je eigen mailserver en gmail plaatsvindt.
Dezelfde SMTP-server configureren in php.ini als sendmail.ini?