2011-11-29 29 views
9

Al solucionar un formulario de contacto con un host de correo electrónico, me dijeron que usara '-f' en la dirección from de la función de correo php. ¿Qué hace la bandera "-f" y por qué sería una solución para permitir que se entregue un correo electrónico? Leí parte de la documentación pero no estoy muy claro al respecto.Correo de PHP: ¿Qué hace -f hacer?

código

Ejemplo:

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

PD: sin la "f" que funciona bien para los anfitriones grande de correo electrónico (Hotmail, Gmail, etc, pero por alguna razón no fuera por el anfitrión más pequeño que estoy trabajando con)

Gracias

+2

En su ejemplo falta el parámetro additional_headers. – nickb

+0

Dado que ya hay un lugar para especificar una dirección "desde" dentro de la función mail(), es extraño tener una opción -f adicional – ToddBFisher

+0

como @nickb dice, este es el orden correcto de parámetros: '($ email_to," $ email_subject ", $ email_body, $ email_headers, '-f'. $ email_from)' – webeno

Respuesta

9

-f es un parámetro para el gestor de correo (por lo general sendmail). De the docs:

El parámetro parametros_adicionales puede ser utilizado para pasar banderas adicionales como opciones de línea de comandos para el programa configurado para usarse al enviar correo, según lo definido por el parámetro de configuración sendmail_path . Por ejemplo, esto se puede usar para configurar la dirección del remitente del sobre al usar sendmail con la opción -f sendmail.

Aquí es el man page for sendmail, se puede ver lo que la opción -f hace:

-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

Solo un followup @nickb, el '-f' en el ejemplo es el 4 ° parámetro y los documentos PHP mencionan que esto debería estar en el 5to. - ¿Estoy leyendo cosas mal aquí? – hafichuk

+0

@hafichuk - En el ejemplo faltan los encabezados de correo electrónico - Es el 5to parámetro para 'mail()'. – nickb

+0

Entonces, ¿es solo marcar la dirección de correo electrónico enviada por un usuario de confianza en el servidor de alojamiento web? Junto con eso, no escribí este código, solo lo mantengo, pero ¿es una buena práctica tener la dirección de correo electrónico en la que el usuario ingresó el formulario? – ToddBFisher

3

La opción -f es establecer la devolución de correo electrónico. Enviar un mensaje sin uno puede influir negativamente en el puntaje de spam que se calcula sobre el mensaje. Los mensajes con puntuaciones bajas a veces se filtran para ciertos hosts.

Puede usar https://www.mail-tester.com/ para evaluar el puntaje de su mensaje. Puede expirar con o sin el distintivo -f y ver el cambio de puntaje.