Synology-Forum.nl
Overige software => Web Station => Topic gestart door: GVDP op 08 augustus 2019, 06:33:30
-
Kan iemand hiermee helpen, ik heb een website gemaakt en van een deel van een vroegere website gekopieerd. Nu heb ik het contact formulier gekopieerd maar deze werkt niet meer. Ik heb al van alles geprobeerd en heb nu een voorbeeld code van internet geprobeerd en wanneer ik deze uitvoer krijg ik telkens een deel van de php code in mijn browser te zien? Kan ik testen of de PHP werkt op mijn NAS DS216+play ? Ik heb bij configuratie -> melding al mijn gmail-account ingevuld en deze komt netjes aan.
-
Kijk eerst bij Webstation of PHP aktief is.
Dan in de webmap een simpel php script plaatsen en in de browser tonen.
PHP bestanden eindigen op .php
<?php
echo 'Php werkt';
?>
Bekijk onderstaande afbeelding
-
Beste,
bedank voor u snelle reactie. Ik heb een test.php bestand geplaatst en geprobeerd via 4G (http://ip-adres/map/test.php en er komt in de browers php werkt. Kan er dan nog iets verkeerd lopen ?
-
De webserver doet het.
Controleer dan het bestand dat niet goed werkt.
Open het in een teksteditor en bekijk het deel van de code die in de browser verschijnt.
-
Beste ik heb bijgevoegde code geprobeerd en zie het formulier perfect nu zegt hij ook dat de mail verzonden is, maar ik zie op de mailserver geen mails en bij mijn gmail account staat niets bij verzonden en in mijn inbox ook niet. Volgens mij is er een probleem met de mailserver.
<?
$wie = $_GET['aan'];
if($_POST['verzenden']) {
if(!$wie) {
} else { $naar = $wie; }
$headers = "From:".$reply."";
mail($naar, $onderwerp, $bericht, $headers);
echo "Je bericht is sucsesvol verzonden!";
} else {
?>
<form name="contact" method="post" action="">
<table width="90%" border="0" cellspacing="0" cellpadding="0">
<tr bgcolor="#CCCCCC">
<td colspan="2"> </td>
</tr>
<?
if(!$wie) {
?>
<tr>
<td>Aan:</td>
<td>
<select name="naar">
<option value="*@gmail.com">Info</option>
<option value="*@gmail.com">Maarten</option>
<option value="*@gmail.com">Mathieu</option>
<option value="*@gmail.com">Benny</option>
</select>
</td>
</tr>
<?
} else { echo "
<tr>
<td>Aan:</td>
<td><b>$wie</b></td>
</tr>"; }
?>
<tr>
<td width="30%">Onderwerp:</td>
<td width="70%">
<input type="text" name="onderwerp">
</td>
</tr> <tr>
<td valign="top">Je e-mail:</td>
<td>
<input type="text" name="reply">
</td>
</tr>
</tr>
<tr>
<td valign="top">Bericht:</td>
<td>
<textarea name="bericht" cols="50" rows="6"></textarea>
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" name="verzenden" value="Verzenden">
<input type="reset" name="reset" value="Wissen">
</td>
</tr>
</table></form>
<?
}
?>
-
1. Om problemen te voorkomen, gebruik <?php ipv <?
2. De funktie mail() geeft een boolie terug bij al of niet geslaagd.
Dus doe dit
if ( mail(...) ) {
echo 'geslaagd';
} else {
echo 'niet geslaagd';
}
De mail() funktie van PHP werk niet (goed) op de NAS. Gebruik PHPMailer
https://github.com/PHPMailer/PHPMailer
Of Swift Mailer
https://github.com/swiftmailer/swiftmailer
Hier een voorbeeld van een form met Swiftmailer dat werkt op de NAS.
https://code.tutsplus.com/tutorials/how-to-code-a-signup-form-with-email-confirmation--net-6860
-
Ik geraak er maar niet aan uit. Ik heb nog eens bezig geweest met de mailserver in te stellen. Maar krijg bij de code die je gaf steeds de foutmelding 500 er is een fout opgetreden tijdens deze aanvraag. De swiftmailer hoe installeer ik dit eigenlijk ?
-
De mail() funktie van PHP werk niet (goed) op de NAS. Gebruik PHPMailer
https://github.com/PHPMailer/PHPMailer
Persoonlijk raad ik PHPMailer aan. Via composer op de computer installeren, en vervolgens de hele map naar de NAS kopiëren. In de documentatie van PHPMailer staat genoeg om vervolgens een mailscript te maken. Duurde mij ongeveer 15 min, maar ik ben wel een geoefende PHP programmeur .
-
De laatste versie vereist kunstgrepen m.b.v. composer waarvoor je eerst andere software moet installen om het aan de praat te krijgen.
De versie die ik gebruik met het TUT voorbeeld is ouder, simpeler in gebruik en kan je hier ophalen :
https://github.com/swiftmailer/swiftmailer/releases/tag/4.0.4
Download het zipbestand en pak het uit.
Zet de map in de web map op de server.
Maak een PHP bestand aan met code van onderstaande pagina.
https://swiftmailer.symfony.com/docs/sending.html
Gebruik dit om het te testen.
<?php
include_once 'lib/swift_required.php';
// Create the Mailer using your created Transport
$transport = Swift_MailTransport::newInstance();
$mailer = Swift_Mailer::newInstance($transport);
// Create a message
$message = (new Swift_Message('Prachtig inderwerp'))
->setFrom(['mijn@domein.nl' => 'Mijn naam'])
->setTo(['eenander@domein.net' => 'Naam van die ander'])
->setBody('Een prachtige tekst om te versturen.')
;
// Send the message
$numSent = $mailer->send($message);
printf("Sent %d messages\n", $numSent);
?>
Als het goed is verzonden komt het aan.
-
Ik kende Swiftmailer niet, maar het klinkt heel makkelijk. Ga ik denk ik ook wel eens gebruiken! Bedankt!
-
Moet ik dan op de nas eigenlijk de mailserver (smtp) nog aan de praat krijgen?
-
Geen mailserver nodig.
Even voor het gemak een eenvoudig HTML FORM gemaakt.
Maakt gebruik van de 'oude' Swiftmailer versie zoals eerder vermeld.
<?php
if ( isset( $_POST['submit'] ) )
{
include_once 'lib/swift_required.php';
$to = 'mijneigennaam@mijndomein.nl';
$to_naam = 'Swift Info';
$from = $_POST['email_from'];
$from_naam = $_POST['naam_from'];
$onderwerp = $_POST['onderwerp'];
$bericht = $_POST['bericht'];
// Create the Mailer using your created Transport
$transport = Swift_MailTransport::newInstance();
$mailer = Swift_Mailer::newInstance($transport);
// Create a message
$message = (
new Swift_Message( $bericht_titel )
)
->setSubject( $onderwerp )
->setFrom( [ $from => $from_naam ] )
->setTo( [ $to => $to_naam ] )
->setBody( $bericht )
;
// Send the message
$numSent = $mailer->send($message);
printf("Sent %d messages\n", $numSent);
}
?>
<form method="post" action="">
Uw naam : <input type="text" name="naam_from" value="" /><br />
E-mail : <input type="email" name="email_from" value="" /><br />
Onderwerp : <input type="text" name="onderwerp" value="" /><br />
Bericht : <input type="text" name="bericht" value="" /><br />
<input type="submit" name="submit" value="Verstuur" />
</form>
-
Beste, ik heb onderstaande code geprobeerd en krijg het antwoord send 0 messages.
<?php
include_once 'lib/swift_required.php';
// Create the Mailer using your created Transport
$transport = Swift_MailTransport::newInstance();
$mailer = Swift_Mailer::newInstance($transport);
// Create a message
$message = (new Swift_Message('Prachtig inderwerp'))
->setFrom(['naam1@gmail.com' => 'Mijn naam'])
->setTo(['naam2@gmail.com' => 'Naam van die ander'])
->setBody('Een prachtige tekst om te versturen.')
;
// Send the message
$numSent = $mailer->send($message);
printf("Sent %d messages\n", $numSent);
?>
-
Ik ga niet in op het PHP-deel wegens gebrek aan kennis.
Maar wat ik wel weet is, dat veel providers het rechtstreeks aan het net aanbieden van email (poort 25 outbound) hebben geblokkeerd (zeker op de niet zakelijke accounts) en eisen dat mail via hun eigen postbak wordt gerelayed (lijkt me geen goed Nederlands, trouwens). Dan zou je - volgens mij SMTP op de NAS eerst aan de praat moeten hebben en uit de opmerkingen van TS leid ik af dat dàt niet is geregeld.
Een foutenformulier op mijn (particuliere Wordpress) site wordt via deze relay wel gewoon verstuurd.
-
Idd poort 25 word door Telenet geblokkeerd voor particulieren, zou dit het probleem zijn van swift mailer?
-
Swiftmailer verstuurt niet zelf de e-mail, maar maakt gebruik van de mail funktie van de NAS.
Als je bij Control Panel > Notification de smtp gegevens hebt ingevuld die de NAS gebruikt om berichten te sturen, wordt de e-mail via die server verstuurd.
KPN gebruikt port 587 met authenticatie.
-
Ik heb ondertussen het contactformulier in orde gekregen, het was idd een instelling bij configuratie -> melding. Hier heb ik een document online gevonden voor de gegevens van gmail. Nu heb ik nog 1 klein probleem, in de email bovenaan komt het email-adres van de login van de smtp te staan. Men moet in het formulier ook hun eigen emailadres opgeven kan misschien in de plaats van het ingelogd emailadres komen ? Is het mogelijk om een eventueel het emailadres weer te geven in het bericht anders ?
<?php
include_once 'lib/swift_required.php';
// Create the Mailer using your created Transport
$transport = Swift_MailTransport::newInstance();
$mailer = Swift_Mailer::newInstance($transport);
// Create a message
$message = (new Swift_Message('Prachtig inderwerp'))
->setFrom(['mijn@domein.nl' => 'Mijn naam'])
->setTo(['eenander@domein.net' => 'Naam van die ander'])
->setBody('Een prachtige tekst om te versturen.')
;
// Send the message
$numSent = $mailer->send($message);
printf("Sent %d messages\n", $numSent);
?>