2009-12-15 12 views
5

Estoy desarrollando una aplicación web en PHP, y mi Macbook, con Snow Leopard, es en realidad el envío de mensajes de correo electrónico cuando la función de correo del PHP() se llama. Está enviando correos electrónicos a clientes, y eso es MALO.¿Deshabilitar correo de PHP en Mac OS?

que podría prevenir esto en mi código, pero yo prefiero desactivar correo para mi máquina. ¿Hay alguna manera de hacer esto en Mac OS?

Respuesta

3

Me suelen utilizar una clase contenedora para el correo() que comprueba si hay una constante (algo así como debug_mode) y envía el correo electrónico a mí en lugar del destinatario original (e incluye todos los destinatarios originales en el cuerpo del correo para que pueda confirmar que las cosas están funcionando). Es un trabajo extra la primera vez, pero significa que no tengo que preocuparme por enviar correos electrónicos a personas "reales", pero todavía sé que las cosas están funcionando.

He publicado un simple example. Podría usar muchas mejoras (manejo del encabezado, asegurándose de que los campos cc y bcc también se eliminen), pero te llevará la mayor parte del camino a casa.

+0

+1 La funcionalidad de desacoplamiento como esta es una buena idea (tm) – rossipedia

1

Eso significa que debe haber instalado sendmail (o algo que se hace pasar por sendmail) en algún momento, pero probablemente debería evitar esto en su código además de deshabilitarlo.

+0

OS X viene con una versión integrada de Postfix. –

+1

Seguramente mover/usr/sbin/sendmail a /usr/sbin/sendmail.original y reemplazar sendmail con un script sh vacío debería hacer el truco globalmente. –

+0

No debe venir configurado para hacer realmente nada. –

0

Debería poder cerrar el correo() cambiando la configuración SENDMAIL_PATH. Documentación here

2

¿Por qué no mover la dirección de correo electrónico a un archivo de configuración, y luego en su máquina utilizar un conjunto diferente de direcciones? Cosas como esa no deberían estar codificadas en la aplicación.

Por ejemplo, en mis aplicaciones que tienen una base de datos de configuración que alberga toda esa información. Cuando se trabaja en la aplicación, la tabla Config se establece con direcciones/información ficticias o inofensivas. De esta forma, no tendrá que meterse con nada en las PC de desarrollo, así como tampoco será más fácil de mantener, como si las direcciones de correo electrónico cambian.

+0

¿Por qué el voto a favor? Esta es una buena idea y es más limpio que el correo castrante(). –

+0

Mi aplicación tiene cientos de miles de direcciones de correo electrónico de usuario. Mala solución. Sin embargo, supongo que un voto negativo fue injusto, ya que no se proporcionó suficiente contexto. –

+0

No es un accidente que la mayoría de los marcos de aplicaciones web mantengan una noción de un entorno de producción y un entorno que no sea de producción y, en consecuencia, tome las decisiones de tiempo de ejecución. La "mala solución" parece ser completamente tuya. –

-1

Puede probar la opción disable_functions en php.ini.

por ejemplo: disable_functions = mail

+0

¿No dará lugar a un error en el que su script intenta enviar correo? –

+0

Es cierto, pero es una forma de desactivar la función de correo, que fue lo que hizo la pregunta. –

3

Gracias por los mensajes. Aquí está mi solución.

He movido/usr/sbin/sendmail a /usr/sbin/sendmail.original y he reemplazado/usr/sbin/sendmail con un script dummy sh. No quiero que esta máquina en particular envíe correos electrónicos.

También he implementado una segunda solución, mediante la cual compruebo si la máquina actual es una máquina de desarrollo, y si es así, no se envían correos electrónicos. Para esto uso una bandera, Config :: get ('IS_DEVELOPER').