PHP wachtwoord vergeten email doet het niet.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3

Jin vanTongeren

Jin vanTongeren

06/03/2019 17:00:08
Quote Anchor link
Ik heb alle code (behalve de verzend mail) weggehaald, en ben erachter gekomen dat de veiligheid niet goed is. Ik weet niet hoe streng de spam filter van gmail is, maar met mijn eigen mail van @mijndomein.nl, kwam de email wel aan. En bij mijn gmail adres kwam de email niet aan. Maar de rest van de code werkte wel goed. (de validatie werkte, er werden tokens aangemaakt voor het wachtwoord vergeten etc.)
Dus ik ga ervan uit dat de spam filter van microsoft / yahoo / andere mail providers even streng zijn als gmail. (of misschien nog wel strenger)
En via phpmailer wordt de email die dan verzonden wordt, goedgekeurd. (heb ik gelezen op internet).
 
PHP hulp

PHP hulp

19/04/2024 01:45:26
 
- Ariën  -
Beheerder

- Ariën -

06/03/2019 17:01:55
Quote Anchor link
Het is makkelijker te debuggen dan mail() vooral omdat je dan zelf meer vrijheid in mailservers hebt. En omdat je niet het wiel opnieuw uitvindt met headers.

Maar het is altijd fijn om te weten wat er misgaat met mail(). Bij sommige providers moet je aan bepaalde vereisten voldoen, zoals een bestaand mailadres die je hebt aangemaakt in je From-header.
Gewijzigd op 06/03/2019 17:03:19 door - Ariën -
 
Jin vanTongeren

Jin vanTongeren

06/03/2019 17:05:28
Quote Anchor link
In de From header heb ik een bestaand email adres. (no-reply adres bestaat echt).
Maar denkt u dat dit een goed idee of niet is?
 
- Ariën  -
Beheerder

- Ariën -

06/03/2019 17:06:56
Quote Anchor link
Ja, maar als het bij Gmail niet aankomt zal het aan een SPF/DKIM record liggen. Informeer eventueel eens bij je hostingprovider.
Gewijzigd op 06/03/2019 17:07:42 door - Ariën -
 
Jin vanTongeren

Jin vanTongeren

06/03/2019 17:19:09
Quote Anchor link
Ik ben nu bezig met PHPMailer en er zijn (natuurlijk) weer problemen.
PHPMailer heeft een vendor/autoload.php. En die moet ik in het script zetten als een require 'vendor/autoload.php';
Nu krijg ik de opmerking: Warning: require(vendor/autoload.php): failed to open stream: No such file or directory in .....
Waar kan ik dit bestand vinden?
Ik weet dat het iets met composer.json te maken heeft, maar ik heb bijna geen ervaring met composer, noch met .json bestanden.
Ik heb op internet gezocht en daar staat iets vaags over dat het bestand in een composer zit ofzo.
Weet u wat er aan de hand is en hoe ik dit op kan lossen?
 
- Ariën  -
Beheerder

- Ariën -

06/03/2019 18:08:36
Quote Anchor link
Heb je bij Github de zip gedownloadt?

Het handigste is om Composer in je ontwikkelomgeving te installeren. Hiermee kan je in een handomdraai diverse PHP-software downloaden, zoals PHPmailer, Smarty, ZendFramework etc....

Via het configuratiebestand composer.json kan je bepalen wat je allemaal wilt installeren, en zelf nog uitgebreider voor welke versies. Uiteindelijk als je Composer gedownloadt hebt, kan je in je command-line composer install uitvoeren, en dan downloadt hij alle pakketten om die in de vendor map te plaatsen.

Lees ook dit eens:
https://getcomposer.org/doc/00-intro.md#dependency-management

Het zal het programmeren juist makkelijker maken doordat je één distributiesysteem hebt die alles binnenhengelt.
Gewijzigd op 06/03/2019 19:03:48 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

06/03/2019 19:16:08
Quote Anchor link
Of gewoon zorgen dat de paden goed zijn.
 
- Ariën  -
Beheerder

- Ariën -

06/03/2019 19:19:59
Quote Anchor link
Blijkbaar leveren ze standaard geen autoloader mee....
Dus dan moet je Composer gebruiken, of gewoon handmatig met include() verwijzen naar de juiste classes. Maar het voordeel van een Autoloader is dat je niet een hele waslijst aan classes hoeft te includeren.
Gewijzigd op 06/03/2019 19:20:43 door - Ariën -
 
Jin vanTongeren

Jin vanTongeren

06/03/2019 21:09:25
Quote Anchor link
- Ariën - op 06/03/2019 18:08:36:
Heb je bij Github de zip gedownloadt?


Ja, ik heb de zip gedownload.
Ik heb via ssh access, de composer geïnstalleerd.
Vanuit ssh, heb ik dan weer " composer require PHPMailer/PHPMailer" gedaan, waarna de phpmailer werd geinstalleerd. Maar nu weet ik niet hoe ik bij autoload include kan doen.
Want dan krijg je dus die error message.



Toevoeging op 06/03/2019 21:10:55:

Maar zou dit stukje code ook werken voor PHPMailer? (zonder composer)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'path/to/PHPMailer/src/Exception.php';
require 'path/to/PHPMailer/src/PHPMailer.php';
require 'path/to/PHPMailer/src/SMTP.php';
?>
 
- Ariën  -
Beheerder

- Ariën -

06/03/2019 21:13:57
Quote Anchor link
Het is geen autoloader, maar het werkt wel.

Maar als je de boel updated, en er is een nieuwe class, dan heb je kans dat de boel 'breekt'. Maar daar moet dan opvallen in het development-proces.

maar volgens mij moet je met composer juist wél een autoloader krijgen als index.php
Gewijzigd op 06/03/2019 21:14:35 door - Ariën -
 
Jin vanTongeren

Jin vanTongeren

06/03/2019 21:15:03
Quote Anchor link
Oke.
Moet ik dan phpmail weer verwijderen van mijn server via ssh?
En zoja, hoe doe ik dat dan?

Toevoeging op 06/03/2019 21:17:06:

Jin vanTongeren op 06/03/2019 21:09:25:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'path/to/PHPMailer/src/Exception.php';
require 'path/to/PHPMailer/src/PHPMailer.php';
require 'path/to/PHPMailer/src/SMTP.php';
?>


Waar moet ik dit dan neerzetten?
Vlak voor de mail wordt verzonden, of juist aan het begin?
 
- Ariën  -
Beheerder

- Ariën -

06/03/2019 21:29:27
Quote Anchor link
Ik zeg niks over verwijderen hoor, maar met rm -rf phpmailer kan je een directory verwijderen. Je kan ook de 'f' weghalen, zodat je een bevestiging moet geven. Die 'r' is een parameter die het recursief uitvoert.
Anyway, op Google kan je genoeg vinden over Linux commando's. En met man functienaam kan je de manual van een functie lezen.

Maar ik neem aan dat je bekend bent met PHP? Dan is het logisch dat je classes of autoloaders altijd vooral inlaadt. Voordat je mailt maak je ook wat methods aan met instellingen, zoals de From, de Subject, de Body etc...
En ook daarbij moet je de classe al kenbaar hebben gemaakt.
Gewijzigd op 06/03/2019 21:34:15 door - Ariën -
 
Jin vanTongeren

Jin vanTongeren

06/03/2019 21:36:03
Quote Anchor link
Ik ben bekend met de procedural style van PHP. Niet met PDO / OOP.
Ik heb wel gehoord over "classes" en de OOP style, maar heb me er nooit echt in verdiept.
Maar goed. Zegt u maar of het leren van PDO / OOP het waard is.
Ik heb de code nu iets veranderd:
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
<?php
            $mail
= new PHPMailer(true);
            try {
                $mail->SMTPDebug = 2;
                $mail->isSMTP();                                      // Set mailer to use SMTP
                $mail->SMTPAuth = true;                               // Enable SMTP authentication
                $mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted            
                $mail->Host = 'mail.axc.nl';  // Specify main and backup SMTP servers
                $mail->Port = 465;                                    // TCP port to connect to
                $mail->isHTML(true);                                  // Set email format to HTML            
                $mail->Username = '[email protected]';                 // SMTP username
                $mail->Password = 'mijn wachtwoord';                           // SMTP password
                //Recipients

                $mail->setFrom('[email protected]');
                $mail->addAddress($userEmail);     // Add a recipient
                $mail->addReplyTo('[email protected]');
                //Content
                $mail->Subject = 'Wachtwoord jinvantongeren.nl herstellen';
                $mail->Body    = "<p>Er is een verzoek binnengekomen om uw wachtwoord te herstellen. Als u dat niet was, kan u deze e-mail gewoon negeren.</p> <br>
                                De link is: <br> <a href='"
.$url."'>".$url."</a><br>Met vriendelijke groeten, <br> Jin van Tongeren";
                $mail->AltBody = 'Er is een verzoek binnengekomen om uw wachtwoord te herstellen. Als u dat niet was, kan u deze e-mail gewoon negeren. \r\n. De link is: \r\n '.$url.' \r\n Met vriendelijke groeten, \r\n Jin van Tongeren ';    
                header('Location: ../reset-password.php?reset=success&request=valid');
                exit();                
        }

        catch (Exception $e)  {
            header('Location: ../reset-password.php?reset=mailfail&request=valid');
            exit();              
        }

?>

En op het begin van dit script heb ik dit neergezet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'PHPMailer-master/src/Exception.php';
require 'PHPMailer-master/src/PHPMailer.php';
require 'PHPMailer-master/src/SMTP.php';
?>


Nu krijg ik te zien dat de email is verzonden (hier kom ik uit: reset=success&request=valid), maar ik krijg niets binnen. Moet ik nu de servers van gmail gebruiken, of de servers van mijn provider (versio)?
 
- Ariën  -
Beheerder

- Ariën -

06/03/2019 21:40:50
Quote Anchor link
Je stuurt niks...
Waar is je $mail->send() (die true/false terug geeft)?
Nu maak je alleen maar wat waardes aan, waar je uiteindelijk nog niks mee doet.
Gewijzigd op 06/03/2019 21:41:29 door - Ariën -
 
Jin vanTongeren

Jin vanTongeren

06/03/2019 21:57:55
Quote Anchor link
Ik heb nu na de $mail->Altbody, $mail->send() neergezet.
Nu moet ik 1 á 2 minuten wachten en na het wachten wordt ik omgeleid naar: ?reset=mailfail&request=valid.
Hoe kan dit?
Of is het uiteindelijk toch een beter idee om of de php mail() functie te gebruiken of een andere library, (Zend bijvoorbeeld) te gebruiken?
Want dit schiet ook niet echt op...
 
- Ariën  -
Beheerder

- Ariën -

06/03/2019 22:02:26
Quote Anchor link
Als je zolang moet wachten is er toch een trage mailserver op het pad.
Als je nou even geen headers gebruikt, dan zou je een debug-bericht moeten zien.

Eigenlijk raad ik om deze reden geen redirect headers aan. Je kan prima in hetzelfde bestand aangeven of iets gelukt is, en ook met een reden erbij.
Gewijzigd op 06/03/2019 22:03:23 door - Ariën -
 
Jin vanTongeren

Jin vanTongeren

07/03/2019 14:42:32
Quote Anchor link
Ik heb nu de redirect header weggehaald en een echo error_get_last() neergezet.
Ik krijg nu deze errors:
2019-03-07 13:35:32 SERVER -> CLIENT:
2019-03-07 13:35:32 SMTP NOTICE: EOF caught while checking if connected
SMTP Error: Could not connect to SMTP host.
SMTP Error: Could not connect to SMTP host.

Ik gebruik de versio mailserver wat volgens de website van versio is: mail.axc.nl met als port 465. (https://www.versio.nl/artikelen/31-wat-zijn-de-pop-imap-en-smtp-gegevens-van-mijn-email-account)
Maar blijkbaar doet dit het dus niet. Heeft u enig idee?
 
- Ariën  -
Beheerder

- Ariën -

07/03/2019 14:45:52
Quote Anchor link
Ergens mislukt het verbinden met de SMTP-server...
Mogelijk kan je hier wat mee:
https://stackoverflow.com/questions/3477766/phpmailer-smtp-error-could-not-connect-to-smtp-host

Ik weet niet of Versio de DirectAdmin omgeving gebruikt voor de mails. Maar in dat geval gebruik ik poort 587 in mijn PHPmailer instellingen, en connect op mijn eigen mailserver/domein.
Gewijzigd op 07/03/2019 15:06:13 door - Ariën -
 
Jin vanTongeren

Jin vanTongeren

07/03/2019 15:50:11
Quote Anchor link
Ja oké.
Alles doet het nu!
Bedankt voor al uw hulp en bijdrage!
 
- Ariën  -
Beheerder

- Ariën -

07/03/2019 15:56:55
Quote Anchor link
Top! :-)
 

Pagina: « vorige 1 2 3



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.