Toon posts:

PHP mail op Synology NAS

Pagina: 1
Acties:

  • mascarpwn
  • Registratie: Juli 2015
  • Laatst online: 29-03-2022
Hey tweakers,

Ik heb een gek probleem: websites die ik host op mijn Synology NAS werken prima op de contactformulieren na; de mails komen gewoon niet aan! Ik heb van alles geprobeerd; html formulier gekoppeld aan een php action, wordpress geinstalleerd met een mail plug-in (alleen om het verzenden te testen), etc.

Het gekke is dat mijn NAS mij wel degelijks mails kan versturen. Ik kan prima test mails vanuit de notifications sectie op mijn nas sturen, hier gebruik ik een gmail adres voor. Maar als ik datzelfde email adres gebruik voor mijn contactformulieren, handmatig gemaakt of wordpress, komen de mails niet aan.

Heeft iemand enig idee waar dit aan zou kunnen liggen en hoe ik het herstel?

Alvast bedankt!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
PHP:
1
var_dump(mail(/*vul parameters in*/));

Wat is het resultaat?
Wat zegt je php error log?
Wat zegt je mailq?

offtopic:
ik zeg expres nog niks over het feit dat hij thuis host en dit niet zou moeten doen zonder kennis. Misschien is het wel gewoon een test/leer omgeving

[Voor 46% gewijzigd door DJMaze op 22-03-2021 12:54]

Maak je niet druk, dat doet de compressor maar


  • mascarpwn
  • Registratie: Juli 2015
  • Laatst online: 29-03-2022
DJMaze schreef op maandag 22 maart 2021 @ 12:46:
PHP:
1
var_dump(mail(/*vul parameters in*/));

Wat is het resultaat?
Wat zegt je php error log?
Wat zegt je mailq?

offtopic:
ik zeg expres nog niks over het feit dat hij thuis host en dit niet zou moeten doen zonder kennis. Misschien is het wel gewoon een test/leer omgeving
Hey maze,

Dank voor je antwoord! Waar moet ik dit in verwerken? In mijn PHP file?

BijvoorbeeldL

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
<?php
$name = $_POST['name'];
$visitor_email = $_POST['emailAddress'];
$subject = $_POST['subject'];
$message = $_POST ['message'];

$email_from = 'mail@gmail.com';

$email_subject = "New email from website";

$email_body = "User name: $name.\n".
"User email address: $visitor_email.\n".
"Subject: $subject.\n".
"User message: $message.\n";

$to = "mail2@gmail.com";

$headers ="From $email_from \r\n";
$headers .= "Reply-to $visitor_email \r\n";

mail($to,$email_subject,$email_body, $headers);

header("Location: contact.html");


var_dump(mail(log.txt));
?>

  • Groentjuh
  • Registratie: September 2011
  • Laatst online: 20:00
Oppassen met "Mail injections"! Dat zijn zeg maar SQL-injections, maar dan bijvoorbeeld leuk om spam mee te versturen.

DJMaze wil graag de "var_dump(" ")" om regel 21 van jouw code. Regel 23 moet even weg, want anders krijg je de uitvoer niet te zien. Regel 27 is overbodig. PHP-code kun je beter niet afsluiten aan het einde van een bestand.

  • !GN!T!ON
  • Registratie: September 2006
  • Laatst online: 11:28
Wat Groentjuh al zegt, never trust user input.

https://dev.to/anastasion...ape-in-php-3-methods-139b

Hoe doe je trouwens de authenticatie richting gmail? dat mis ik in je code.

  • Ben(V)
  • Registratie: December 2013
  • Laatst online: 18:28
Ik weet niet wat je precies met die mail wilt doen, maar als je vanuit een applicatie mail wilt versturen moet je daarvoor een smtp server gebruiken en niet zomaar een mail adres.

Lees dit eerst eens:
https://help.dreamhost.co...I-send-PHP-mail-via-SMTP-

Je kunt de smtp server van gmail gebruiken hiervoor.

Dat adres is: smtp.gmail.com.
Voor SSL moet je poort 465 gebruiken
Voor TLS moet je poort 587 gebruiken

All truth passes through three stages: First it is ridiculed, second it is violently opposed and third it is accepted as being self-evident.


  • Geerrrt
  • Registratie: Juli 2008
  • Laatst online: 14:45
!GN!T!ON schreef op maandag 22 maart 2021 @ 13:36:
Wat Groentjuh al zegt, never trust user input.

https://dev.to/anastasion...ape-in-php-3-methods-139b

Hoe doe je trouwens de authenticatie richting gmail? dat mis ik in je code.
Dit heeft OP in Synology zelf ingesteld, deze handelt dat af.

Eury#2434


  • mascarpwn
  • Registratie: Juli 2015
  • Laatst online: 29-03-2022
Groentjuh schreef op maandag 22 maart 2021 @ 13:33:
Oppassen met "Mail injections"! Dat zijn zeg maar SQL-injections, maar dan bijvoorbeeld leuk om spam mee te versturen.

DJMaze wil graag de "var_dump(" ")" om regel 21 van jouw code. Regel 23 moet even weg, want anders krijg je de uitvoer niet te zien. Regel 27 is overbodig. PHP-code kun je beter niet afsluiten aan het einde van een bestand.
Hey Groentjuh,

Dank voor je bericht. Ik krijg dan de volgende melding bij het drukken op send:

bool(false)

Heb ik de code wel goed verwerkt?

code:
1
var_dump(mail($to,$email_subject,$email_body, $headers));

[Voor 8% gewijzigd door mascarpwn op 22-03-2021 14:05]


  • mascarpwn
  • Registratie: Juli 2015
  • Laatst online: 29-03-2022
!GN!T!ON schreef op maandag 22 maart 2021 @ 13:36:
Hoe doe je trouwens de authenticatie richting gmail? dat mis ik in je code.
Dat doet de NAS allemaal.

Op je NAS meld je je aan via GMAIL, daar authentiseer je.

Ik heb voor de gein ook een wordpress website runnen en daar werken de contactformulieren ook niet.

  • Groentjuh
  • Registratie: September 2011
  • Laatst online: 20:00
Volgens de documentatie van die functie geeft de functie "false" terug als het verzenden is mislukt.

Laten we nog meer informatie proberen te achterhalen:
PHP:
1
2
3
4
$success = mail($to,$email_subject,$email_body, $headers);
if (!$success) {
    var_dump(error_get_last());
}


Ik gok dat PHP simpelweg niet goed is ingesteld om email te versturen!

  • mascarpwn
  • Registratie: Juli 2015
  • Laatst online: 29-03-2022
Groentjuh schreef op maandag 22 maart 2021 @ 14:09:
Volgens de documentatie van die functie geeft de functie "false" terug als het verzenden is mislukt.

Laten we nog meer informatie proberen te achterhalen:
PHP:
1
2
3
4
$success = mail($to,$email_subject,$email_body, $headers);
if (!$success) {
    var_dump(error_get_last());
}


Ik gok dat PHP simpelweg niet goed is ingesteld om email te versturen!
Moet ik de variabel $success dan niet eerst even maken? Ik krijg nu namelijk:

code:
1
bool(false) array(4) { ["type"]=> int(8) ["message"]=> string(27) "Undefined variable: success" ["file"]=> string(47)


Super tof dat jullie mij hiermee willen helpen, trouwens. <3

  • Groentjuh
  • Registratie: September 2011
  • Laatst online: 20:00
mascarpwn schreef op maandag 22 maart 2021 @ 14:14:
[...]

Moet ik de variabel $success dan niet eerst even maken?
Die maken we daarboven toch?
"$success = "

  • mascarpwn
  • Registratie: Juli 2015
  • Laatst online: 29-03-2022
Groentjuh schreef op maandag 22 maart 2021 @ 14:18:
[...]

Die maken we daarboven toch?
"$success = "
oh shit, niet gezien. sorry!

  • mascarpwn
  • Registratie: Juli 2015
  • Laatst online: 29-03-2022
Ik heb nu dit:

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
<?php
$name = $_POST['name'];
$visitor_email = $_POST['emailAddress'];
$subject = $_POST['subject'];
$message = $_POST ['message'];
$success = mail($to,$email_subject,$email_body, $headers);

$email_from = 'mail1@gmail.com';

$email_subject = "New email from my website";

$email_body = "User name: $name.\n".
"User email address: $visitor_email.\n".
"Subject: $subject.\n".
"User message: $message.\n";

$to = "mail2@gmail.com";

$headers ="From $email_from \r\n";
$headers .= "Reply-to $visitor_email \r\n";

var_dump(mail($to,$email_subject,$email_body, $headers));
if (!$success) {
    var_dump(error_get_last());
}


en krijg deze error:

code:
1
bool(false) array(4) { ["type"]=> int(8) ["message"]=> string(27) "Undefined variable: headers" ["file"]=> string(47)


Als ik dit ervan maak:

code:
1
2
3
4
5
6
<?php
$name = $_POST['name'];
$visitor_email = $_POST['emailAddress'];
$subject = $_POST['subject'];
$message = $_POST ['message'];
$success = mail($name,$visitor_email,$subject, $message);


Krijg ik dit:

code:
1
bool(false) NULL

[Voor 14% gewijzigd door mascarpwn op 22-03-2021 14:27]


  • Groentjuh
  • Registratie: September 2011
  • Laatst online: 20:00
error_get_last() gaat ons niets meer vertellen; Jammer.

Kun jij de functie phpinfo(); ergens uitvoeren en zoeken naar "sendmail_path". Welke waarde heeft deze?

  • mascarpwn
  • Registratie: Juli 2015
  • Laatst online: 29-03-2022
Groentjuh schreef op maandag 22 maart 2021 @ 14:29:
error_get_last() gaat ons niets meer vertellen; Jammer.

Kun jij de functie phpinfo(); ergens uitvoeren en zoeken naar "sendmail_path". Welke waarde heeft deze?
Oef, waar zou ik dit dan moeten plaatsen? Ik heb een contact.html en een contactform.php

Ik ben voor de zekerheid ook geswitched van gmail naar outlook - justin kees - in mijn synology en het werkt nog steeds niet. Daar ligt het dus niet aan.

[Voor 17% gewijzigd door mascarpwn op 22-03-2021 14:37]


  • Freelance
  • Registratie: Oktober 2005
  • Laatst online: 16:15
nvt

[Voor 99% gewijzigd door Freelance op 22-03-2021 14:51]

(...)


  • !GN!T!ON
  • Registratie: September 2006
  • Laatst online: 11:28
mascarpwn schreef op maandag 22 maart 2021 @ 14:36:
[...]

Oef, waar zou ik dit dan moeten plaatsen? Ik heb een contact.html en een contactform.php

Ik ben voor de zekerheid ook geswitched van gmail naar outlook - justin kees - in mijn synology en het werkt nog steeds niet. Daar ligt het dus niet aan.
je kan die phpinfo op een tijdelijke lege pagina uitvoeren. of bovenaan je contactform.php zetten en dan krijg je een table met waardes te zien als je je contactpagina opent.

  • DiedX
  • Registratie: December 2000
  • Laatst online: 23-03 17:12
Zit hier niet heel simpel SPF in de weg? Maak je gebruik van Gmail als uitgaande mailserver? Zo nee, dan zou ik daarmee beginnen...

DiedX supports the Roland™, Sound Blaster™ and Ad Lib™ sound cards


  • mascarpwn
  • Registratie: Juli 2015
  • Laatst online: 29-03-2022
DiedX schreef op maandag 22 maart 2021 @ 15:28:
Zit hier niet heel simpel SPF in de weg? Maak je gebruik van Gmail als uitgaande mailserver? Zo nee, dan zou ik daarmee beginnen...
Ja. Mijn Synology gebruikt ook gmail voor de notificaties, die wel werken.

  • mascarpwn
  • Registratie: Juli 2015
  • Laatst online: 29-03-2022
Groentjuh schreef op maandag 22 maart 2021 @ 14:29:
error_get_last() gaat ons niets meer vertellen; Jammer.

Kun jij de functie phpinfo(); ergens uitvoeren en zoeken naar "sendmail_path". Welke waarde heeft deze?
Okay, gedaan! Hij heeft wel een HELE lange lijst met informatie. Is er iets specifieks waar ik naar moet zoeken?

  • mascarpwn
  • Registratie: Juli 2015
  • Laatst online: 29-03-2022
!GN!T!ON schreef op maandag 22 maart 2021 @ 15:08:
[...]


je kan die phpinfo op een tijdelijke lege pagina uitvoeren. of bovenaan je contactform.php zetten en dan krijg je een table met waardes te zien als je je contactpagina opent.
gelukt! Dank je ignition!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
mascarpwn schreef op maandag 22 maart 2021 @ 14:36:
Ik ben voor de zekerheid ook geswitched van gmail naar outlook
Dat gaat allebei NIET werken met mail()

Zoals ik al dacht ben je aan de hobby/leer en is het (hopelijk) geen website die vanaf het internet bereikbaar is.

Dat gezegd hebbende moet je in WordPress een SMTP plugin installeren:
https://nl.wordpress.org/plugins/easy-wp-smtp/
of
https://nl.wordpress.org/plugins/wp-mail-smtp/

LET OP! ze zijn gevaarlijk.
SMTP zal werken, maar je hebt wederom een grote kans om gehackt te worden op een live website.
WordPress plugins zijn niet bepaald veilig te noemen, maar het werkt dan wel :+

Maak je niet druk, dat doet de compressor maar


  • mascarpwn
  • Registratie: Juli 2015
  • Laatst online: 29-03-2022
DJMaze schreef op maandag 22 maart 2021 @ 16:37:
[...]

Dat gaat allebei NIET werken met mail()

Zoals ik al dacht ben je aan de hobby/leer en is het (hopelijk) geen website die vanaf het internet bereikbaar is.

Dat gezegd hebbende moet je in WordPress een SMTP plugin installeren:
https://nl.wordpress.org/plugins/easy-wp-smtp/
of
https://nl.wordpress.org/plugins/wp-mail-smtp/

LET OP! ze zijn gevaarlijk.
SMTP zal werken, maar je hebt wederom een grote kans om gehackt te worden op een live website.
WordPress plugins zijn niet bepaald veilig te noemen, maar het werkt dan wel :+
Ik gebruik geen wordpress.

Ik heb twee websites die ik test, een in react (geen mail form) en de andere gewoon in html, gestyled met CSS en wat JS elementen voor de animaties, deze heeft wel een mailform/inschrijf formulier.

Ik heb een PHP form geschreven met een eenvoudig scriptje en wil het scriptje testen (of mails verstuurd worden)

Voor de duidelijkheid:
De gmail account (nu dan even outlook) waar de mails via gepushed worden, is correct ingesteld op de nas; deze stuurt immers prima logs.

wordpress had ik alleen even gebruikt om te checken of via die plugins mails wel worden verstuurd. Dit werkt ook niet.

Zou het kunnen dat Ziggo dit blokkeert?

Idealiter heb ik een webhost waar ik het kan testen, maar ik heb tot nu toe geen werkende gratis providers kunnen vinden die php mail ondersteunen.

[Voor 22% gewijzigd door mascarpwn op 22-03-2021 16:45]


  • DJMaze
  • Registratie: Juni 2002
  • Niet online
@mascarpwn
Gebruik dan iets als Swift Mailer of PHPMailer.
https://github.com/swiftmailer/swiftmailer
https://github.com/PHPMailer/PHPMailer

[Voor 16% gewijzigd door DJMaze op 22-03-2021 19:54]

Maak je niet druk, dat doet de compressor maar


  • mascarpwn
  • Registratie: Juli 2015
  • Laatst online: 29-03-2022
Ik was toevallig nu naar PHPMailer aan het kijken! Dit lijkt eigenlijk heel erg op wat ik zelf al heb gemaakt, maar ik zal de code zo verder scrutineren.

Thanks.

  • Groentjuh
  • Registratie: September 2011
  • Laatst online: 20:00
mascarpwn schreef op maandag 22 maart 2021 @ 16:37:
[...]

Okay, gedaan! Hij heeft wel een HELE lange lijst met informatie. Is er iets specifieks waar ik naar moet zoeken?
Als je leest wat ik postte dan zie je dat ik "sendmail_path" wou weten. De PHP mail functie roept op de achtergrond eigenlijk alleen maar het programma sendmail aan. Als PHP of sendmail niet goed geconfigeerd zijn, dan werkt de standaard mailfunctie van PHP niet.
Soms wordt er gebruik gemaakt van ssmtp. Ook daar werkt weer, als daarvoor is gekozen werkt de mail functie van PHP. Als het niet goed is ingesteld, dan niet het niet.
Aangezien de mail-functie van PHP "false" terug geeft is er duidelijk iets niet goed ingesteld.

Dat andere scripts van je NAS het wel kunnen mailen hoeft niet raar te zijn. Die werken kennelijk ofwel met andere systemen om de email te versturen ofwel zijn daarvoor juist geconfigureerd.

Zoals DJMaze zijn er ook PHP libs/scripts, die het werk van sendmail in PHP doen.

Aangezien je mijn posts half leest, is dat mijn laatste behulpzame post in dit topic; Nee stoor mij niet in DMs! Ik heb geen helpdesk! Ik zou zeggen: Lees alle documentatie eens en googlen gaat je vast ook helpen.

  • mascarpwn
  • Registratie: Juli 2015
  • Laatst online: 29-03-2022
Groentjuh schreef op maandag 22 maart 2021 @ 21:43:
[...]

Als je leest wat ik postte dan zie je dat ik "sendmail_path" wou weten. De PHP mail functie roept op de achtergrond eigenlijk alleen maar het programma sendmail aan. Als PHP of sendmail niet goed geconfigeerd zijn, dan werkt de standaard mailfunctie van PHP niet.
Soms wordt er gebruik gemaakt van ssmtp. Ook daar werkt weer, als daarvoor is gekozen werkt de mail functie van PHP. Als het niet goed is ingesteld, dan niet het niet.
Aangezien de mail-functie van PHP "false" terug geeft is er duidelijk iets niet goed ingesteld.

Dat andere scripts van je NAS het wel kunnen mailen hoeft niet raar te zijn. Die werken kennelijk ofwel met andere systemen om de email te versturen ofwel zijn daarvoor juist geconfigureerd.

Zoals DJMaze zijn er ook PHP libs/scripts, die het werk van sendmail in PHP doen.

Aangezien je mijn posts half leest, is dat mijn laatste behulpzame post in dit topic; Nee stoor mij niet in DMs! Ik heb geen helpdesk! Ik zou zeggen: Lees alle documentatie eens en googlen gaat je vast ook helpen.
Ik zou het over het hoofd gezien kunnen hebben.

Anyway, dit is wat er staat
code:
1
sendmail_path   /usr/bin/ssmtp -t   /usr/bin/ssmtp -t


Mijn script wel wel als ik Xamp installeer, het ligt dus aan de NAS. Helaas geeft Synology aan dat zij niet helpen bij persoonlijke websites, dus het houdt daar ook op. Ik had gehoopt iemand hier te treffen die ook zo'n NAS heeft en wellicht weet wat ik over het hoofd zie.

Toch bedankt voor je hulp!

[Voor 7% gewijzigd door mascarpwn op 23-03-2021 17:59]


  • mascarpwn
  • Registratie: Juli 2015
  • Laatst online: 29-03-2022
Uiteindelijk voor PHPMailer gegaan; dat was super eenvoudig zeg! Het enige waar ik mijn twijfels over heb is het feit dat het wachtwoord in een van de PHP bestanden staat; dat is toch helemaal niet veilig? Ik zou het wachtwoord liever in een json of ini bestand opslaan... Of mis ik hier iets?
Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee