Mail() - nagłówki działają ze stałymi a ze zmiennymi nie

0

Witam. Mam prościutki kawałek kodu

$to = '[email protected]';
$adres='[email protected]';
define('ADR','[email protected]');

$subject='Potwierdzenie odebrania faktury przez '.$adres;
$message=$adres.' potwierdził odebranie faktury';

$headers = "From: ".$adres."\r\n" .
"Reply-To: ".$adres."\r\nContent-Type: text/plain; charset=utf-8" ;
		
if (mail($to, $subject, $message, $headers)) echo ' Potwierdzenie zostało wyslane na '.$to.'<br />';
 

Ogólnie skrypt działa ale w powyższej formie nagłówki nie działają - ani przez konkatenację ani gdy usunę konkatenację i zostawię same podwójne nawiasy. Oczywiście w temacie i treści maila zawartość zmiennej $adres się pojawia a nagłówki są puste. Natomiast jeżeli podmienię zmienną na stałą ADR (z konkatenacją) albo po prostu wpiszę ręcznie adresy to wtedy jest ok, nagłówki w wiadomości są załączane. Coś robię źle czy to jest kwestia php lub ustawień serwera?

0

Nie baw się w ten sposób, tylko użyj jakiejś gotowej biblioteki do wysyłania maili jak http://swiftmailer.org/ i podepnij pod to swoją skrzynkę, choćby na onecie. Ten skrypt "u mnie działa", tzn dostaję komunikat, że się wysłało, ale maila nie mam. Możliwe, że filtr antyspamowy go zatrzymał.

0

Nie mam dostępu do serwera żeby sobie coś doinstalowywać.

Co do skryptu to oczywiście jest wycinek. Ważny jest też ten kawałek ...

ini_set('smtp_port', '587');
ini_set('SMTP', 'adres serwera smtp');
ini_set('sendmail_from', 'adres mail z którego wysyłamy');

0

skoro masz dostęp do dopisania kodu PHP to równie dobrze możesz dopisać tam kod biblioteki

0

No tak tylko że ogólnie to nie jest mailing tylko prosty mail do admina który jest prawie skończony. Działa on na tej zasadzie że klient dostaje maila z linkiem potwierdzenia, który zawiera parametr z zaszyfrowanym jego adresem mail. Klika w niego, otwiera się domyślna przeglądarka a skrypt ze strony deszyfruje ten mail i wysyła do admina bardzo prostą wiadomość że klient potwierdził otrzymanie faktury.

Więc nie bardzo widzę sens żeby integrować całą bibliotekę tylko po to żeby wysłać prostego maila do admina. Gdyby to był mailing to owszem, warto byłoby się pobawić. Ale tutaj? Nie opłaca się skóra za wyprawkę.

0

Prosty/nieprosty, jednak mail, poniżej link do tego, dlaczego nie powinieneś używać w ten sposób mail():
xampp nie wysyla maili

0

Ok, zaimplementowałem twój [url=https://hostit.pl/blog/386,jak-wysylac-maile-poprzez-strone-www.html]skrypt[/url]. Wysłałem maila z mojej skrzynki i działa. Więc chciałem tym razem ustawić nagłówek ze zmiennej. Dodałem parametr do funkcji, zmieniłem parametry w SetFrom

 
function wyslijMailText($odbiorca,$temat,$wiadomosc,$adr) {
		$mail = new PHPMailer();
		$mail->IsSMTP();
		if ( SMTP_MAIL_DEBUG === true ) {
			$mail->SMTPDebug = 2;
		} else {
			$mail->SMTPDebug = 0;
		}

		$mail->SMTPAuth = 'login';

		if ( SMTP_MAIL_UTF8 === true ) {
			$mail->CharSet = 'UTF-8';
		} else {
			$mail->CharSet = 'ISO-8859-2';
		}
		$mail->Host = SMTP_MAIL_HOST;
		$mail->Port = SMTP_MAIL_PORT;
		$mail->Username = SMTP_MAIL_USER;
		$mail->Password = SMTP_MAIL_PASS;
		$mail->SetFrom($adr, $adr);
		$mail->Subject = $temat;
		$mail->Body = $wiadomosc;
		$mail->AddAddress($odbiorca);
		return $mail->Send();
	}

i wywołałem funkcję jako ostatni parametr przekazując zmienną $adres

 
if (wyslijMailText($to,$subject,$message,$adres)) echo ' Potwierdzenie zostało wyslane na '.$to.'<br />';

i nadal nie działa. Podstawiany jest nagłówek ustawiony w klasie samego phpmailera czyli Root User root@localhost

1 użytkowników online, w tym zalogowanych: 0, gości: 1