Waarom werkt de reply-to niet zoals ik verwacht
Ik heb een stukje code geschreven waarmee de beheerder uitnodigingen kan versturen naar diverse leden.
Men kan zich aanmelden door de ontvangen email te beantwoorden.
In de headers heb ik het emailadres van de beheerder opgenomen, dit is geen keihard gegeven omdat we verschillende beheerders hebben. En deze beheerders hebben uiteraard hun eigen emailadres.
Het probleem is als volgt:
Ik vul de headers en de email wordt netjes verzonden.
In de bron van de email zie ik het Reply-To adres, so far so good.
Als je op beantwoorden klikt dan verschijnt deze Reply-To in de Aan-balk, als de Reply-To eindigt op @domeinnaam.
Eindigt het op wat anders, zoals @watjammer dan verschijnt het niet in de Aan-balk.
Is er een andere mogelijkheid om het emailadres van de beheerder in de Aan-balk te krijgen?
Natuurlijk zou ik elke beheerder een @domeinnaam kunnen geven, maar dat is niet mijn oplossing.
Gewijzigd op 31/05/2024 08:24:52 door - Ariën -
1) de mailto: -link moet wel URL-encoded zijn,
2) er zit een praktisch maximum aan de lengte van een link, waardoor je niet de hele body met HTML kunt vullen.
Verschillende browsers hanteren een verschillend maximum. Een duimregel is om een link niet langer te maken dan 2000 karakters.
Het gaat niet om HTML.
Misschien had ik mijn vraag niet duidelijk uitgelegd, vandaar een langere beschrijving.
In mijn PHP vul ik de headers (dus ook de Reply-To is aanwezig) en de email naar de geselecteerde leden wordt netjes verstuurd.
Als ik in de header "Reply-To: [email protected]" zet en de mail verstuur en daarna in de mail op beantwoord klik dan is de Aan gevuld met [email protected]
Als ik in de header "Reply-To: [email protected]" zet en de mail verstuur en daarna in de mail op beantwoord klik dan is de Aan niet gevuld.
In beide gevallen zie ik in de bron van de email dat de Reply-To netjes met de email meekomt.
Hoe kan het dan dat deze in de 2e situatie niet in Aan terecht komt?
Zie bijvoorbeeld:
https://stackoverflow.com/questions/29112817/will-setting-a-reply-to-address-at-a-different-domain-result-in-spam
De beste oplossing is toch iemand die communiceert namens een domein gewoon een e-mailadres op dat domein geven.
(Als je het al werkend krijgt voor je eigen e-mail, weet je nooit zeker hoe andere providers of clients reageren, dus ik zou het idee gewoon vergeten.)
Ik zal contact opnemen met de webhost, misschien kunnen zij wat voor mij doen.
Hoe kan ik deze topic sluiten?
Gewijzigd op 02/06/2024 23:42:42 door Wladimir S
Niet nodig, die zinkt wel naar beneden.
Laat je code eens zien hoe je de e-mail verstuurt.
Maar omdat je het gevraagd hebt, hier een klein stukje van de code
$headers = array();
$headers[] = "MIME-Version: 1.0";
$headers[] = "Content-type: text/plain; charset=iso-8859-1";
$headers[] = "From: [email protected]";
$headers[] = "Reply-To: [email protected] "; // dit email-adres komt in de Aan te voorschijn
// $headers[] = "Reply-To: [email protected] "; // dit email-adres komt niet in de Aan te voorschijn
$headers[] = "X-Mailer: PHP/".phpversion();
$headers=implode("\r\n", $headers);
en verderop
if(mail($email, $onderwerp, $message, $headers) ==false)
{ echo "Fout tijdens versturen mail aan $splnam<p>";
}
De mail wordt dus goed verstuurd
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$reply_to = '[email protected]';
$headers = array();
$headers[] = "MIME-Version: 1.0";
$headers[] = "Content-type: text/plain; charset=iso-8859-1";
$headers[] = "From: [email protected]";
$headers[] = "Reply-To: " . $reply_to;
$headers[] = "X-Mailer: PHP/".phpversion();
$headers=implode("\r\n", $headers);
$mail_sent = mail($email, $onderwerp, $message, $headers, '-f ' . $reply_to);
if (!$mail_sent) {
echo 'Mail niet verstuurd.';
}
?>
$reply_to = '[email protected]';
$headers = array();
$headers[] = "MIME-Version: 1.0";
$headers[] = "Content-type: text/plain; charset=iso-8859-1";
$headers[] = "From: [email protected]";
$headers[] = "Reply-To: " . $reply_to;
$headers[] = "X-Mailer: PHP/".phpversion();
$headers=implode("\r\n", $headers);
$mail_sent = mail($email, $onderwerp, $message, $headers, '-f ' . $reply_to);
if (!$mail_sent) {
echo 'Mail niet verstuurd.';
}
?>
De mail-functie van PHP is gewoon echt haast niet te debuggen.
@Ozzie, het resultaat is hetzelfde, de Aan wordt dus niet gevuld als reply_to niet van het domein is.
@Ariën, ik was een paar dagen geleden al aan het stoeien met PHPmailer. Maar tijdens onze vakantie heb ik niet overal goede wifi, dus ik kan niet overal mijn laptop te voorschijn halen. Soms gebruik ik de hotspot van mijn iphone ook hoor.
Bedankt voor jullie hulp zover, morgen ga ik weer verder, welterusten
BIjna hetzelfde, alleen geen spatie achter -f.
Hierin geeft hij aan hoe de reply-to werkt en dat kwaad-willenden daar soms ook misbruik van maken.
Een goede en simpele oplossing is om dat reply-adres bij de FROM op te nemen en dat werkt goed.
Nogmaals bedankt voor jullie meedenken.
Eenvoudige en effectieve oplossing