2011-11-29 12 views
9

Podczas rozwiązywania problemów z formularza kontaktowego z hostem e-mail, polecili mi, aby użyć "-f" w adresie z funkcji php mail. Co robi flaga "-f" i dlaczego miałaby to być poprawka umożliwiająca dostarczenie wiadomości e-mail? Przeczytałem część dokumentacji, ale nie jestem do końca jasny.Poczta PHP: Co robi -f?

Przykładowy kod:

mail($emailAddress, $mailSubject, $mailBody, $headers, '-f ' . $mailFrom); 

PS: bez "-f", to działa dobrze dla gospodarzy duży e-mail (Hotmail, Gmail, itp, ale z jakiegoś powodu nie do mniejszej gospodarz I Pracuję z)

Dzięki

+2

W przykładzie brakuje parametru additional_headers. – nickb

+0

Ponieważ istnieje już miejsce do określenia adresu "od" w funkcji mail(), dziwne jest posiadanie dodatkowej opcji -f – ToddBFisher

+0

, ponieważ @nickb mówi, że jest to poprawna kolejność parametrów: '($ email_to," $ email_subject ", $ email_body, $ email_headers, '-f'. $ email_from)' – webeno

Odpowiedz

9

-f jest parametrem do programu pocztowego (zwykle sendmail). Od the docs:

Parametr dodatkowe_parametry mogą być używane do przekazywania dodatkowych flagi jako opcje wiersza poleceń do programu skonfigurowanego do użycia podczas wysyłania poczty, jak określono w konfiguracji sendmail_path ustawienia. Można na przykład ustawić adres nadawcy koperty na adres przy użyciu sendmaila z opcją -f sendmail.

Oto man page for sendmail, można zobaczyć, co opcja -f robi:

-fname   Sets the name of the ``from'' person (i.e., the sender of the 
       mail). -f can only be used by ``trusted'' users (normally 
       root, daemon, and network) or if the person you are trying to 
       become is the same as the person you are. 
+0

Po prostu kontynuacja @nickb, '-f' w przykładzie jest czwartym parametrem, a dokumenty PHP wspominają, że powinno to być w piątym - Czy czytam tutaj źle? – hafichuk

+0

@hafichuk - W przykładzie brakuje nagłówków wiadomości e-mail - Jest to piąty parametr dla 'mail()'. – nickb

+0

Czy oznacza to po prostu oznaczenie adresu e-mail jako wysłanego z zaufanego użytkownika na serwerze hostingowym? Poza tym, nie napisałem tego kodu, tylko go utrzymałem, ale czy dobrą praktyką jest, aby adres był adresem e-mailowym, który użytkownik wprowadził do formularza? – ToddBFisher

3

Opcja -f jest ustawienie adresu poczty odrzuceń. Wysłanie wiadomości bez niej może negatywnie wpłynąć na wynik spamu obliczany na podstawie wiadomości. Wiadomości o niskich wynikach czasami są filtrowane dla niektórych hostów.

Możesz użyć numeru https://www.mail-tester.com/, aby sprawdzić wynik swojej wiadomości. Możesz wygrać z flagą -f lub bez niej i zobaczyć zmianę wyniku.