webForumDet fria alternativet

Adresserna dubbel i to med mail()

PHP

3 svar · 323 visningar · startad av Jontto

Medlem sedan okt. 2001125 inlägg
Frågan#1

Hej!

Har en klass Mail som sköter om mailandet i mina skript.
Klassen består av

var $to = "min@mail.com";
...
function setTo($to) { $this->to = $to; }
...
function sendMail() {
	$this->header = "MIME-version: 1.0\r\n";
	$this->header .= "Content-type: text/html; charset=iso-8859-1\r\n";
	$this->header .= "From: $this->from\r\n";
	$this->header .= "To: $this->to\r\n";
	$this->header .= "Reply-To: $this->from\r\n";
	$this->header .= "X-Mailer: PHP/" . phpversion() . "\r\n";
		
	if(@mail($this->to, $this->subject, nl2br($this->message) . "" . nl2br($this->environment), $this->header)) {
		echo "<br /><br />Meddelandet har skickats vidare.<br />";
	} else {
		echo "<br /><br />Det verkar som om något gått snett när mailet skulle skickas...";
	}
}

När jag kollar $this-to just före jag anropar mail(), så syns to-addressen helt normal, men när det kommer fram så är to min@mail.com, min@mail.com dvs två gånger. Sammar sak ifall man har flera to-adresser. Varför detta? Har det ngt att göra med att jag har mail() i en if?

Medlem sedan dec. 200171 inlägg
#2

Nu har jag ingen större koll på mail-funktionen, men du anger to-adressen både i anropen till mail() samt här:

$this->header .= "To: $this->to\r\n";

Testa att kommentera ut den raden och se om det inte blir bättre då.

Medlem sedan okt. 2001125 inlägg
#3

Sannerligen var det där skon klämde. Tack yos0n!

Nu undrar jag. Testade lite och kom fram till att det fungerar båda vägarna att antingen ta bort TO från mail-anropet eller så från headern. Vilket är det "korrekta" sättet att göra det eller är det någon skillnad? Mail() måste ju ändå trycka dit TO i headern förr eller senare, eller hur?

Visserligen sägs det ju additional headers i manualen. Kanske man ska tolka det som att TO skall anges i funktionsanropet och resten då i headers.

Medlem sedan dec. 200171 inlägg
#4

Jo, to anges nog med fördel i funktionsanropet i och med att det finns ett argument för det. Definitionen för mail anger ju dessutom att $additional_headers och även $additional_parameters är frivilliga argument till funktionen. Är förmodligen meningen att man ska kunna skicka mail till $to med $subject och $message utan att behöva sätta sig in i hur mailheadrar fungerar.

250 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)