Mail met DirectAdmin

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Sem Bakker

Sem Bakker

07/04/2020 09:44:40
Quote Anchor link
Beste mensen,

Ik probeer met php een mail te versturen naar de nieuwe klanten die een abonnement hebben afgesloten. Ik doe dit in een server van DirectAdmin en heb dan ook een email van mijn eigen server ([email protected] (weggelaten door privacy)). Kan iemand mij helpen?

,groet Sem

PS: Hier is de code:

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
    if(isset($_POST['submit'])){
 
       $to = $_POST['mail'];
       $subject = 'Welkom op mijn site';
       $from = '[email protected]';
 
       //  HTML mail versturen
       $headers  = 'MIME-Version: 1.0' . "\r\n";
       $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
 
      //  email headers maken
      $headers .= 'From: '.$from."\r\n".
      'Reply-To: '.$from."\r\n" .
      'X-Mailer: PHP/' . phpversion();
 
      // html bericht maken
      $message = '<html><body>';
      $message .= '<h1 style="color:#f40;">Hallo!</h1>';
      $message .= '<p style="color:#000000;font-size:18px;">Welkom, u bent nu geabonneerd!</p>';
      $message .= '</body></html>';
 
      // email versturen
      if(mail($to, $subject, $message, $headers)){
         echo "Your mail has been sent successfully.";
      }
else{
         echo "Unable to send email. Please try again.";
      }

    }

?>

<html>
    <head>
        <title>Abonneer</title>
    </head>
    <body>
        <h1>Abonneer nu voor mijn site</h1>
        <form method="post" action="">
            <input type="email" name="mail" placeholder="E-mail" required>
            <br>
            <br>
            <input type="submit" name="submit" value="Aboneer">
        </form>
    </body>
</html>
 
PHP hulp

PHP hulp

21/11/2024 19:37:56
 
- Ariën  -
Beheerder

- Ariën -

07/04/2020 10:10:04
Quote Anchor link
En wat is je probleem nu?
Trouwens, dat doet DA ook zelf als je een user aanmaakt, als je dat bedoelt.
Gewijzigd op 07/04/2020 10:14:49 door - Ariën -
 
Jeroen van Rensen

Jeroen van Rensen

07/04/2020 11:40:34
Quote Anchor link
Hallo,

Ik raad aan om PHPMailer te gebruiken ipv de mail-functie van PHP. PHPMailer heeft meer opties, en heeft bij mij altijd gewerkt.

Hier is de Github-pagina: https://github.com/PHPMailer/PHPMailer

Succes ermee!
 
Sem Bakker

Sem Bakker

07/04/2020 11:42:42
Quote Anchor link
- Ariën - op 07/04/2020 10:10:04:
En wat is je probleem nu?
Trouwens, dat doet DA ook zelf als je een user aanmaakt, als je dat bedoelt.


Als ik deze code gebruik verstuurd hij geen mailtje. Wat moet ik doen in de DA om het te fixen?


Toevoeging op 07/04/2020 11:48:38:

Jeroen van Rensen op 07/04/2020 11:40:34:
Hallo,

Ik raad aan om PHPMailer te gebruiken ipv de mail-functie van PHP. PHPMailer heeft meer opties, en heeft bij mij altijd gewerkt.

Hier is de Github-pagina: https://github.com/PHPMailer/PHPMailer

Succes ermee!


Hi thanks! Ik snap niet echt wat dit is. En niet een hele duidelijke uitleg. Kent u een filmpje of website die het makkelijk kan uitleggen of uzelf misschien?

,groetjes Sem
 
- Ariën  -
Beheerder

- Ariën -

07/04/2020 11:49:10
Quote Anchor link
DirectAdmin is enkel een beheerpaneel met de nodige packages. Die zou het gewoon moeten toestaan als je binnen je maillimiet van je account valt, als die ingesteld is.

Kan je wat vinden in je mail-log van exim?

Verder is PHPMailer stukken beter voor een website, maar naar mijn mening moet een simpele mail() ook werken. Je wilt namelijk weten of niet je mailtransport ergens overhoop ligt op je server.

PHPmailer is overigens een bibliotheek met functies om uitgebreid te mailen. Je hebt hierin vrije keuze op welke manier je wilt mailen die een mailserver verplicht: Via de mail-deamon vvan de server zelf, of via een SMTP van een andere provider, en daarbij heb je ook zelf de instellingen in de hand voor de authenticatie die verplicht is.
Ik raad phpMailer aan als je echt vanuit je site wilt mailen.

Maar zoek ook uit waarom mail() niet werkt.
Gewijzigd op 07/04/2020 12:05:23 door - Ariën -
 
Ivo P

Ivo P

07/04/2020 15:02:08
Quote Anchor link
wat nu als $_POST['mail'] geen mailadres bevat, maar leeg is, of een tekst bevat?
of 10 mailadressen?
of 100 mailadresssen, een enter en nog wat extra (mail)code?
 
Sem Bakker

Sem Bakker

07/04/2020 15:05:33
Quote Anchor link
** quoteknip**
Hi,

In het stukje html staat deze regel:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input type="email" name="mail" placeholder="E-mail" required>


Het veld kan dus niet leeg zijn, moet een geldig email adres zijn door het type="email"

Dus dan hoef ik me daar toch niet druk om te maken. En zo wel, hoe kan ik dit fixen?

,groetjes Sem
Gewijzigd op 07/04/2020 15:06:49 door - Ariën -
 
- Ariën  -
Beheerder

- Ariën -

07/04/2020 15:09:46
Quote Anchor link
Dat kan iedereen met een simpele HTML-'hack' omzeilen.
Je doet in je PHP-script ook geen enkele controle of validatie hierop. Ook zou mailheader-injection mogelijk zijn, waardoor iemand eenvoudig een lading spam kan afleveren.
 
Sem Bakker

Sem Bakker

07/04/2020 15:11:04
Quote Anchor link
Weet u wat ik moet toevoegen of iets anders?
 
- Ariën  -
Beheerder

- Ariën -

07/04/2020 15:12:58
Quote Anchor link
Kijk eens hier naar:
https://www.w3schools.com/php/filter_validate_email.asp
En zie Example #1.
Gewijzigd op 07/04/2020 15:13:37 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

07/04/2020 16:35:27
Quote Anchor link
Sem Bakker op 07/04/2020 11:42:42:
Als ik deze code gebruik verstuurd hij geen mailtje.


Hoe trek jij deze conclusie? Krijg je direct het bericht "Unable to send email. Please try again."? Of komt het e-mailbericht niet aan? Wanneer een programma niet doet wat het behoort te doen zijn details bij een probleemanalyse belangrijk. Enkel de mededeling "het programma doet niet wat het behoort te doen" is niet bepaald behulpzaam.

Net zoals bij de analoge post heeft de brief een lange weg af te leggen en kan er onderweg van alles misgaan:
- de postbus wordt nooit geleegd
- de brief wordt versnipperd in de sorteermachine
- de brief raakt tijdens de bezorging kwijt
- de brief belandt per abuis in de papierbak met de reclamefolders

Zo kunnen er op soortgelijke (en bijna haast parallelle) wijze een hele hoop dingen misgaan met een e-mailbericht.

Je moet het als volgt zien: PHP (of liever gezegd de mail() functie) mailt zelf niets. De mail()-functie draagt de mail over aan een proces die het verzenden verder afhandelt. Wanneer mail() de waarde true retourneert (dus wanneer je de boodschap "Your mail has been sent successfully." krijgt) is het werkt van PHP in principe klaar. Indien mail() false retourneert (dus wanneer je de boodschap "Unable to send email. Please try again." krijgt) wil dat zeggen dat PHP het bericht niet kon overdragen. Mogelijk houdt dat in dat er iets niet goed geconfigureerd is, of dat jouw host simpelweg het versturen van mail niet toestaat.

(EDIT: dit wordt mogelijk anders indien je gebruik maakt van PHPMailer, deze kan volgens mij rechtstreeks communiceren met de SMTP-server)

Dan gaan we een stap verder, vervolgens komt het bericht (indien de vorige stap succesvol was) waarschijnlijk in een wachtrij terecht, en deze wachtrij wordt op gezette tijden verwerkt. Het kan zijn dat bepaalde processen op de server niet aan staan of in ieder geval niet goed werken waardoor deze wachtrij nooit geinspecteerd/geleegd wordt. Oftewel de postbus wordt nooit geleegd. Dit is waarschijnlijk niet iets waar je zelf invloed op uit kunt oefenen tenzij je je eigen servers volledig zelf beheert ofzo, dus je zult dan iemand van jouw hostingpartij moeten vragen om na te gaan of dat alles werkt.

Dan kan er nog een (aanzienlijke) vertraging zitten tussen verzending en ontvangst. Als je hele goedkope hosting hebt hoeft je niet te verwachten dat een e-mailbericht binnen enkele seconden op de eindbestemming is.

En tot slot, heb je je spambox al gecontroleerd? Mogelijk is het bericht zo kort of van een zodanige vorm dat deze als spam wordt bestempeld. Een pakket als PHPMailer kan je helpen om volwaardige(re) MIME-mailberichten op te stellen. Het kan ook al helpen om jouw bericht wat meer inhoud te geven. Ook kan het helpen om aan de ontvangstkant de broncode van het mailbericht te bekijken indien deze als spam gemarkeerd wordt, deze kan hints bevatten over hoe je de spamscore omlaag kunt halen, of wellicht is het een kwestie om je spamfilter misschien wat minder streng af te stellen.

Zoals je wellicht kunt opmaken uit dit bovenstaande relaas is dit een iteratief proces. Eerst zul je moeten vaststellen waar het schip precies strandt, en dan pas kun je overgaan tot het formuleren van een strategie om dit op te lossen.
Gewijzigd op 07/04/2020 16:38:28 door Thomas van den Heuvel
 
Sem Bakker

Sem Bakker

08/04/2020 11:48:24
Quote Anchor link
Hi allemaal,

Jullie zeggen allemaal dat ik PHPMailer moet gebruiken. Dus dat ga ik dan doen ook! Ik heb echter geen idee hoe dit werkt. Kan iemand mij helpen?

Sem
 
- Ariën  -
Beheerder

- Ariën -

08/04/2020 11:50:00
Quote Anchor link
Ik raad aan om eerst even na te gaan waarom mail() niet werkt. Dus stuur daarmee eens een simpele mail, en kijk eens in de logfiles van Exim om eens te beginnen?

Mogelijk is het mailtransport op je server stuk, en dat is natuurlijk van essentieel belang.
Gewijzigd op 08/04/2020 11:52:11 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

08/04/2020 12:09:38
Quote Anchor link
Mogelijk is het ook handig om je te verdiepen in de werking van e-mail(verkeer).

Een andere (en tevens een deels opnieuw gestelde) vraag: waar vandaan probeer je mail te versturen die niet "werkt", en waaruit blijkt dat dit niet werkt?

Realiseer jezelf nogmaals dat mail die niet aankomt niet zoveel zegt, omdat er zoals eerder opgemerkt een heleboel dingen kunnen misgaan alvorens mail op de eindbestemming arriveert.

Het is jouw taak om te identificeren waar dit precies misgaat. Wij kunnen je daarbij helpen, maar alleen als je accurate en zo volledig mogelijke informatie verschaft, anders blijft het voor ons ook gissen waarom "de mail niet werkt".
 
- Ariën  -
Beheerder

- Ariën -

08/04/2020 12:33:36
Quote Anchor link
Als ik op Admin-niveau in de mainlog kijk na een test met mail() naar een andere server (xs4all), dan kom ik dit tegen in de Exim Mainlog.


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
2020-04-08 12:23:13 cwd=/home/aar/domains/testdomein.nl/public_html/testscripts 5 args: /usr/sbin/sendmail -t -i -f [email protected]
2020-04-08 12:23:13 HBj6zH-6706Ph-TV <= [email protected] U=aar P=local S=428 T="Dit is een test" from <[email protected]> for [email protected]
2020-04-08 12:23:13 cwd=/var/spool/exim 3 args: /usr/sbin/exim -Mc HBj6zH-6706Ph-TV
2020-04-08 12:23:16 HBj6zH-6706Ph-TV => [email protected] F=<[email protected]> R=lookuphost T=remote_smtp S=471 H=mx2.xs4all.nl [194.109.24.138] X=TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256 CV=yes C="250 2.0.0 mxdrop304.xs4all.net accepted message 038ANDRP******"
2020-04-08 12:23:16 HBj6zH-6706Ph-TV Completed

(uiteraard gefingeerd)

In mijn geval kan ik dus afleiden dan de post is opgehaald vanaf mijn loakle postkamer, en naar de mailserver van XS4ALL gebracht is. En dat de mailserver mxdrop304.xs4all.net mij kan bevestigen dat die binnen is.

Wat er dan gebeurt, ligt bij de ontvangende mailserver zelf, en daar kan ik geen invloed op uitoefenen. Maar daar doet de postbode goed zijn werk, want ik krijg de mail gewoon netjes binnen in de postbus van [email protected].


Wat er gebeurt:
1) In de map /testscripts wordt een mailscript uitgevoerd en naar het sendmail-systeem van Linux gebracht.
2) De adresgegevens en het onderwerp worden gelezen, en het kenmerk HBj6zH-6706Ph-TV komt erop.
3) De post komt in de 'af te handelen bak' van Exim, die de mail vervolgens de mail verder richting mijn deur gaat wijzen.
4) De mail is naar de mailserver van xs4all gebracht mxdrop304.xs4all.net, en die zeggen dat ze het oké vinden!
5) Mooi, zegt mijn mailserver, en die geeft aan dat het afgehandeld is.

Dus de vraag is: Waar gaat het bij jouw fout?
Gewijzigd op 08/04/2020 12:52:25 door - Ariën -
 



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.