Synology-Forum.nl

Overige software => Web Station => Topic gestart door: GVDP op 08 augustus 2019, 06:33:30

Titel: Website
Bericht 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.
Titel: Re: Website
Bericht door: Wyodor op 08 augustus 2019, 07:51:54
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
Titel: Re: Website
Bericht door: GVDP op 08 augustus 2019, 08:12:14
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 ?
Titel: Re: Website
Bericht door: Wyodor op 08 augustus 2019, 08:32:06
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.
Titel: Re: Website
Bericht door: GVDP op 08 augustus 2019, 08:59:48
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">&nbsp;</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>
    <?
    }
    ?>
Titel: Re: Website
Bericht door: Wyodor op 08 augustus 2019, 09:35:08
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
Titel: Re: Website
Bericht door: GVDP op 08 augustus 2019, 12:40:39
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 ?
Titel: Re: Website
Bericht door: Underlyingglitch op 08 augustus 2019, 14:41:40
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 .
Titel: Re: Website
Bericht door: Wyodor op 08 augustus 2019, 15:26:05
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.
Titel: Re: Website
Bericht door: Underlyingglitch op 08 augustus 2019, 15:27:23
Ik kende Swiftmailer niet, maar het klinkt heel makkelijk. Ga ik denk ik ook wel eens gebruiken! Bedankt!
Titel: Re: Website
Bericht door: GVDP op 08 augustus 2019, 16:27:05
Moet ik dan op de nas eigenlijk de mailserver (smtp) nog aan de praat krijgen?
Titel: Re: Website
Bericht door: Wyodor op 08 augustus 2019, 16:58:53
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>
Titel: Re: Website
Bericht door: GVDP op 08 augustus 2019, 19:41:32
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);

?>
Titel: Re: Website
Bericht door: ufosyno op 08 augustus 2019, 21:29:07
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.
Titel: Re: Website
Bericht door: GVDP op 08 augustus 2019, 21:47:47
Idd poort 25 word door Telenet geblokkeerd voor particulieren, zou dit het probleem zijn van swift mailer?
Titel: Re: Website
Bericht door: Wyodor op 08 augustus 2019, 21:57:46
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.
Titel: Re: Website
Bericht door: GVDP op 08 augustus 2019, 22:52:59
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);

?>