Hi,

ik heb een webformulier gemaakt maar die kan niet verzonden worden naar gmail maar wel naar de webmail van de bijbehorende website. Heeft dit te maken met beveiliging?


    
if (mail("[email protected]", "Onderwerp", "Test berichtje")) {
    echo '<p>Het e-mailbericht is verzonden.</p>';
} else {
    echo '<p>Het e-mailbericht kon niet worden verzonden.</p>';
}
Krijg je echt de melding dat het e-mailbericht kon niet worden verzonden (else-statement) ingeval je een bericht probeert te sturen naar gmail? Dat zou dan vreemd klinken, maar misschien is dit een hosting-ding? Heb je toevallig hele goedkope hosting ofzo?

Normaal zou het niet uit moeten/mogen maken waar je een e-mailbericht naartoe stuurt als je de beschikking hebt over mailfunctionaliteit zou ik zeggen.

EDIT: oftewel, waaruit blijkt dat de mail "niet werkt"?
Ik huur een webserver en is inderdaad vrij goedkoop. ik gebruik plesk om mijn websites te beheren. En inderdaad ik krijg het else statement: "het bericht kon niet worden verzonden"
Wellicht is de mailfunctionaliteit dan zéér beperkt waarbij je enkel naar de eigen webmail kan sturen? Zou dit navragen bij je host of pakketinformatie hier op naslaan.

Voor de beeldvorming: PHP verzorgt zelf niet het daadwerkelijk versturen van mail, althans niet met mail(). mail() draagt het e-mailbericht simpelweg over aan een (extern) proces dat dit verder af kan handelen. Blijkbaar weigert dit proces het bericht op te pakken dan ofzo.

Je zou misschien kunnen proberen om via een PHP-pakket als PHPMailer (rechtstreeks) te communiceren met GMail, maar als je pakket zo dichtgetimmerd is/lijkt, werken sockets (PHPMailer maakt hier gebruik van geloof ik) waarschijnlijk ook niet.

Mogelijk geeft error_get_last() je meer inzicht in wat er nu precies fout gaat zoals in de eerste user comment van de mail() documentatie wordt aangehaald, want false vertelt je niet zoveel.
Ik heb de headers allemaal uitgeprobeerd die van toepassing waren. (dus niet de html headers)
Zodra ik het emailadres verander in een hotmail of gmail krijg ik de niet verzonden melding.
Als ik het weer verander naar een webmail (ook naar een webmail met andere domeinnaam) wodt het formulier wel verzonden.

Dit zijn de headers die sowieso in het script staan:

$headers     = 'From: <[email protected]>' . "\r\n";
$headers	.= 'X-Mailer: PHP/' . phpversion() . "\r\n";
$headers	.= 'X-Priority: Normal' . "\r\n";
Wat bedoel je met "Als ik het weer verander naar een webmail (ook naar een webmail met andere domeinnaam) wordt het formulier wel verzonden."

Een webmail is niets anders dan online e-mail cliënt, ingesteld op jouw mailserver.
Waarschijnlijk bedoelt @Mark dat hij alleen naar adresssen van dat, of "lokale" domeinen kan sturen.

Dit zou je dus aan je host kunnen vragen, of mogelijk staat dit dus bij de informatie van je hostingpakket (beperkt mailverkeer mogelijk oid).
@Thomas van den Heuvel
Ik krijg geen melding te zien als ik dit gebruik:

$success = mail('[email protected]', 'My Subject', $message);
if (!$success) {
    $errorMessage = error_get_last()['message'];
}

@- Ariën -

Wat bedoel je met "Als ik het weer verander naar een webmail (ook naar een webmail met andere domeinnaam) wordt het formulier wel verzonden."

Het formulier kan wel worden verzonden naar een email met dezelfde domeinnaam bv:
website van het formulier: www.eenwebsite.nl

mail('[email protected]', 'onderwerp', 'bericht', $headers)


En kan ook worden verzonden naar een email van een andere website bv:
website van het formulier: www.eenwebsite.nl

mail('[email protected]', 'onderwerp', 'bericht', $headers)


Maar zodra de ontvanger wordt veranderd in:

mail('[email protected]', 'onderwerp', 'bericht', $headers)
// of
mail('[email protected]', 'onderwerp', 'bericht', $headers)

Dan krijg ik de melding dat het bericht niet is verzonden.
Mark Coenie op 21/06/2020 14:26:54
Ik krijg geen melding te zien als ik dit gebruik:

Je zult $errorMessage ook moeten weergeven met echo oid?
Ik krijg nu deze melding:
mail(): SMTP server response: 503 This mail server requires authentication when attempting to send to a non-local e-mail address. Please check your mail client settings or contact your administrator to verify that the domain or address is defined for this server.geen melding

Ik vermoed dat het met het ssl certificaat te maken heeft. ik heb al mijn websites inclusief de webmails met ssl beveiligd. Echter de webserver krijg ik niet met https beveiligd en ik vermoed dat het hier mee te maken heeft.

Reageren