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

Mail() - nagłówki działają ze stałymi a ze zmiennymi nie
D1
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam. Mam prościutki kawałek kodu

Kopiuj
$to = 'docelowy@adres.pl';
$adres='mail@domena.pl';
define('ADR','mail@domena.pl');

$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?

no_solution_found
  • Rejestracja: dni
  • Ostatnio: dni
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ł.

D1
  • Rejestracja: dni
  • Ostatnio: dni
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');

dzek69
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Rzeszów
0

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

D1
  • Rejestracja: dni
  • Ostatnio: dni
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ę.

bree
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 40
0

Prosty/nieprosty, jednak mail, poniżej link do tego, dlaczego nie powinieneś używać w ten sposób mail():
http://4programmers.net/Forum/PHP/270355-xampp_nie_wysyla_maili?p=1251405#id1251405

D1
  • Rejestracja: dni
  • Ostatnio: dni
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

Kopiuj
 
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

Kopiuj
 
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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.