Mandar mails desde PHP

Valoración del artículo:
Explicación de la forma de enviar correos desde páginas PHP y ejemplos simples y complejos para realizar la tarea.
Publicado: 16/11/02
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
Para el envío de correos electrónicos utilizando PHP disponemos de una función bastante potente, incluida en todas las versiones de PHP, sin necesidad de instalar ningún añadido, en contra de lo que ocurría con ASP.

Referencia: En caso de que necesitemos programar el envío de correo electrónico en nuestra página utilizando ASP, también hemos publicado un artículo en DesarrolloWeb.com llamado Mandar mails desde ASP.

En concreto, en PHP disponemos de una función llamada mail() que permite configurar y enviar el mensaje de correo. La función se llama mail() y recibe tres parámetros de manera obligada y otros dos parámetros que podemos colocar opcionalmente. Devuelve true si se envió el mensaje correctamente y false en caso contrario.

Parámetros necesarios en todos los casos

Destinatario: la dirección de correo o direcciones de correo que han de recibir el mensaje. Si incluimos varias direcciones debemos separarlas por una coma.

Asunto: para indicar una cadena de caracteres que queremos que sea el asunto del correo electrónico a enviar.

Cuerpo: el cuerpo del mensaje, lo que queremos que tenga escrito el correo.

Ejemplo de envío de un mail sencillo

<?
mail("pepito@desarrolloweb.com,maria@guiartemultimedia.com","asuntillo","Este es el cuerpo del mensaje")
?>

Parámetros opcionales del envío de correo

Headers: Cabeceras del correo. Datos como la dirección de respuesta, las posibles direcciones que recibirán copia del mensaje, las direcciones que recibirán copia oculta, si el correo está en formato HTML, etc.

Additional_parameters: esta opción no suele utilizarse y, además, sólo está disponible a partir de la versión PHP 4.0.5 y desde PHP 4.2.3 está deshabilitado en modo seguro. Puede usarse para pasar parámetros adicionales al programa configurado para enviar el correo, cuando se manda el mail usando la opción de configuración sendmail_path. Podemos obtener más información en la documentación de PHP para la función mail().

Ejemplo complejo de envío de correo

Vamos a enviar un correo con formato HTML a pepito@desarrolloweb.com, con copia a mariano@desarrolloweb.com y con copia oculta para pepe@pepe.com y juan@juan.com. La dirección de respuesta la configuraremos a maria@desarrolloweb.com.

<?
$destinatario = "pepito@desarrolloweb.com";
$asunto = "Este mensaje es de prueba";
$cuerpo = '
<html>
<head>
   <title>Prueba de correo</title>
</head>
<body>
<h1>Hola amigos!</h1>
<p>
<b>Bienvenidos a mi correo electrónico de prueba</b>. Estoy encantado de tener tantos lectores. Este cuerpo del mensaje es del artículo de envío de mails por PHP. Habría que cambiarlo para poner tu propio cuerpo. Por cierto, cambia también las cabeceras del mensaje.
</p>
</body>
</html>
';

//para el envío en formato HTML
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

//dirección del remitente
$headers .= "From: Miguel Angel Alvarez <pepito@desarrolloweb.com>\r\n";

//dirección de respuesta, si queremos que sea distinta que la del remitente
$headers .= "Reply-To: mariano@desarrolloweb.com\r\n";

//ruta del mensaje desde origen a destino
$headers .= "Return-path: holahola@desarrolloweb.com\r\n";

//direcciones que recibián copia
$headers .= "Cc: maria@desarrolloweb.com\r\n";

//direcciones que recibirán copia oculta
$headers .= "Bcc: pepe@pepe.com,juan@juan.com\r\n";

mail($destinatario,$asunto,$cuerpo,$headers)
?>

Nota: Antes de poner en marcha el script en vuestro servidor, por favor, cambiar los datos de configuración de las direcciones de correo que van a recibir el mensaje y colocar unas direcciones que sean vuestras y donde podáis comprobar si los mensajes se envían correctamente.

Conclusión y descarga

Pensamos y esperamos que después de este artículo compartáis nuestra opinión, que el envío de mails en PHP es una tarea muy sencilla. Además, es muy de agradecer que todas las versiones de PHP incluyan una función para el envío de mails.

Ponemos a vuestra disposición para la descarga el archivo .php con el código anterior completo para realizar el envío de mails.

Nota: Para el envío de correo mediante PHP es necesario que este disponga de una correcta configuración.

Si nuestro web está en un servidor de un proveedor de hosting seguramente ya hayan configurado PHP para el envío de mails. Si estamos trabajando en un servidor propio, sí tendremos que configurar PHP.

PHP se configura en el archivo php.ini, donde debemos especificar datos como el servidor de correo saliente que debe de utilizar PHP para transferir los mensajes.

Dentro del php.ini, debemos buscar el epígrafe [mail function]. Dependiendo de nuestro sistema deberemos configurar de una manera u otra.

En sistemas Windows encontraremos el php.ini en el directorio windows o dentro de este, en el subdirectorio system32 o similar. En este sistema deberemos indicar el dominio del servidor de smtp, algo como smtp.midominio.com. Si es el ordenador local el que hace de servidor, podremos poner "localhost" como máquina que enviará el correo. También podemos especificar la dirección desde donde queremos que parezca que se envía el mensaje en caso de que no se indique otra durante el envío.

Comentarios
Fueron enviados 81 comentarios al artículo
33 comentarios no revisados
48 comentarios revisados:
Por: José Mendoza
28/10/03
Bueno para los que no pudieron mandar un el email y les salió el siguiente error :

Warning: Failed to Receive in e:\proyecto\correo\enviomail.php on line 129

Pueden bajarse el programita "ninirelay server" que lo pueden descargar de http://netvicious.iespana.es/netvicious/ el cual no tiene mas de 270 Kb y solo lo tienen que ejecutarlo no necesita mas configuración.
Otra cosa en el archivo Php.ini en la sección [mail function] coloquen
SMTP = localhost
sendmail_from = proyectoII@proyecto.com
o cualquier dirección que no sea me@localhost.com de correo, a mi me funciono bastante bien tengo Apache y PHP corriendo en Windows 98.

Espero haber ayudado con algo.
Por: cUk
13/12/03
oyeahhhhhhhh, rula.
Tengo lo mismo que tú pero en win XP y vá a las mil maravillas. ;)
Por: Sergio Alvarado Hernandez
13/12/03
yo soy practicamente un novato en esto de la programacion web, pero gracias a sitios como este he encontrado una forma, desde mi punto de vista, muy adecuada para incrementar mis conocimientos de tal programacion en especial en PHP.

Espero algun dia ayudar de la misma forma a los colegas informaticos.

Gracias!!!!!!!!
Por: jr
15/3/04
a mi me suelta el siguiente error:

Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\Archivos de programa\Apache Group\Apache2\htdocs\pruebas\mail.php on line 9

ya puse lo de localhost en sendmail y mi direccion de correo. que puede pasar???

RESPUESTA

Este error ocurre cuando PHP no puede conectar con el servidor SMTP que tengas indicado en el PHP.ini. Parece que no puede conectar, por ello te sale el error. Puede ser porque el servidor esté parado o porque no tengas conexión entre la red del servidor de correo y la del servidor web.

Por: mivky
19/3/04
La verdad jalo de peluche lo unico que no se es si realmente puedo establecer a mi maquina como servidor de correo, como lo configure fue para que usara la direccion del servidor de correo de la red pero de todas formas asi jalo muy bien...
Por: Roberto
28/4/04
yo una vez que configure php.ini, me fui en winxp a mis conexiones de red y seleccione la conexion a internet, entonces propiedades-opciones avanzadas-configuracion-servicios y active la casilla que dice "Internet Mail Server (SMTP), y solucione mi problema ya puedo usar la funcion mail()!!!
Por: Alonso
10/5/04
Funciona perfectamente salvo por el detalle de que en las cabeceras sobra el '\r' , ya que no se porqué si lo incluyo no me envía los correos, al quitarlo me ha funcionado correctamente.

Muchas gracias por el artículo y un saludo.
Por: ricardo
08/6/04
Me funciona perfectamente y es una solucion ideal para los formularios, sin embargo incluso cuando los campos del formulario estan vacios envia el correo, entonces recibo informacion en blanco, me fijé en la funcion "if" y esta bien escrita (me parece).Hay alguna solucion para validar los campos ,de e-mail por ejenplo?¡felicitaciones y gracias!
Por: Alejo
20/6/04
Hola, muy bueno el script. Yo queria saber si se puede mandar un mail con los headers desde un formulario. Yo uso en el formulario un campo de el nombre del que envia el mensaje, otro de su mail, otro del nombre a quien le envia el mensaje y otro del mail a quien enviarle el mensaje. Yo uso como variables: Nombre del remitente=$tunombre Mail del remitente=$tumail Nombre del receptor=$nombreel Mail del receptor=$mailel
Por: Juan Manuel Oropeza
29/6/04
A mi tambien me muestra la misma advertencia:

Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in \\172.21.6.16\s004\conexun.com.mx\reg.php on line 46

Pero mi problema es que yo pago un servicio de hosting, hay alguna manera de usar esta funcion?? que tengo que configurar? o que otra opcion tengo?? de antemano gracias.

Respuesta

Si tu preveedor de alojamiento no tiene configurado el php.ini para poder enviar correo deberias informarles de la situacion y solicitarles q habiliten un servidor de correo smtp en la configuración de php.

Por: agvabraham
08/7/04
Ok... veo que la mayoria lo utiliza bajo windows... pero como lo configuro para poder enviar los correos desde un servidor propio montado en Linux Red Hat 8.0,funcionando con servidor DNS (www.midominio.com)... espero puedan orientarme...gracias
Por: Sebastián López Castro
06/10/04
Posible solución al problema de Warning: mail(): SMTP server response: 550 5.7.1 Unable to relay.

Esta solución es válida para Windows XP PRO, usando el servidor SMTP que inluye el IIS.

Si hemos configurado bien el PHP.INI, pero el error persiste, probablemente se debe a que, por defecto, la opción de RELAY (Retransmisión en castellano) se encuentra desactivada. Para activarla y permitir la salida de nuestros emails desde PHP deberemos ir a Panel de Control-Herramientas administrativas- Servicios de Internet Information Server, y una vez dentro seleccionar el servidor virtual de SMTP. Pulsamos el botón Propiedades en la barra de botones y seleccionamos la pestaña "Acceso". En la parte baja de dicha pestaña encontramos un botón que pone "Retransmisión", lo pulsamos y, en la ventana que se abre elegimos la opción "Sólo los de la lista siguiente", pulsamos el botón "Agregar" e introducimos la IP de nuestro servidor (ejemplo: 192.168.0.15). Así estaremos autorizando a nuestra máquina servidora a enviar correos SMTP al exterior.

Espero que haber ayudado. Esta solución la he encontrado en una página en inglés, cuya dirección es la siguiente. Saludos y gracias a todos porque entre todos creamos una gran comunidad de conocimiento.

http://forums.devshed.com/archive/t-171453

Por: Lisalex
27/10/04
Hola a todos!! me gusta muchisimo esta página y me ha ayudado muchisimo a lo largo de mi larga dedicacion a las paginas web.... pero una vez hechos los elogios: Este escript no me funciona :'( y lo peor es que no me da ningún error. pongo bien la direccion de correo y entiendo todo. tengo contratado un hosting con php y imagino que esta configurado, mas q nada porq no me da error.Muchisimas gracias por atenderme!
Por: ela13
01/12/04
la funcion mail anda bárbaro pero mi problema está en el tiempo que tarda en ejecutarla, realmente se queda un buen rato hasta que finalmente envía el email..¿por qué pude ser? tiene que ver con la configuracion en el servidor? gracias

RESPUESTA

Yo creo que tiene mucho que ver con el servidor de correo de mails. La página no se termina de generar hasta que no se envía el correo electrónico.

Por: Rodrigo Farias
15/12/04
a mi me arroja el siguiente error:

Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing in c:\htdocs\test\contresp.php on line 7

y el codigo que tengo es este:

mail($para,$asunto,$mensaje,"FROM:".$de);

Lo he probado con espacio delante y detras de los dos puntos de form, usando from con mayuscula y solo la "F"... pero me sigue rrojando ese error.
¿Como lo puedo solucionar?
Por: Sephia
22/12/04
Bien el error de sendmail_from por el php.ini es este

teneis que ponerlo asin y fijaros bien en las ;

[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25
; For Win32 only.
sendmail_from = webmaster@tusitio.com
delante de sendmail_fron hay que kitar el ; que esta puesto si veis que no chifla mirar las extensiones que hay alguna que tiene que estar sin los ; por que si lo tuviera no ejecuta
instalar como progrma de smtp el QK SMTP SERVER
UN SALUDO ESPERO QUE SIRVA DE ALGO
Por: SEPHIA
22/12/04
pongo aqui las extensiones que tengo yo activas
;extension=php_bz2.dll
;extension=php_cpdf.dll
;extension=php_crack.dll
;extension=php_curl.dll
;extension=php_db.dll
;extension=php_dba.dll
extension=php_dbase.dll
;extension=php_dbx.dll
;extension=php_domxml.dll
extension=php_exif.dll
;extension=php_fdf.dll
;extension=php_filepro.dll
extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_hyperwave.dll
extension=php_iconv.dll
;extension=php_ifx.dll
;extension=php_iisfunc.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_java.dll
;extension=php_ldap.dll
;extension=php_mbstring.dll
;extension=php_mcrypt.dll
;extension=php_mhash.dll
;extension=php_mime_magic.dll
extension=php_ming.dll
;extension=php_mssql.dll
;extension=php_msql.dll
;extension=php_oci8.dll
;extension=php_openssl.dll
;extension=php_oracle.dll
extension=php_pdf.dll
extension=php_pgsql.dll
;extension=php_printer.dll
;extension=php_shmop.dll
;extension=php_snmp.dll
extension=php_sockets.dll
;extension=php_sybase_ct.dll
;extension=php_w32api.dll
;extension=php_xmlrpc.dll
;extension=php_xslt.dll
;extension=php_yaz.dll
extension=php_zip.dll
Por: Juan Iniestra
18/1/05
Resultado !!Perfecto ¡¡ gracias por el ejemplo me sirvio muchisimo
Por: FCHip
19/1/05
Bueno, a mi la verdad es que no me furrula. Tengo un servidor debian linux y tengo como MTA Exim4. Se podría postear un howto sobre como configurar este servidor para que funcionara. Saludos a todos.
Por: Omar Hernández
12/2/05
Funciona de maravilla mandando correos en html, en todos los correos que he mandado, de dominios propios y de servicio gratuito como yahoo, pero no funciona para correos de hotmail, ¿por que?, ayuuuda?, solo funciona con texto simple, sin html.
Por: willyfog
24/3/05
Es que no hay nadie que use linux?? Cada vez vamos a peor. Si alguien que lea este artículo tiene un servidor linux me gustaría saber si ha probado esta función. Yo he probado con sendmail y con Exim y no ha habido manera.

Gracias.
Por: Leandro
21/4/05
No comprendi si el codigo que va entre los eso va en un archivo aparte p bien metido en medio del codigo de la pagina donde se encuentra el formulario donde nos envian el mail.

RESPUESTA

Ese código PHP va dentro de la pagina donde se encuentra el formulario que quieres enviar.
Por: Maeve
26/4/05
El servidor mio tiene Linux y el script funciona sin un problema
Por: motaro
17/5/05
ok a mi si me interesa saber esto de envio de mail ya que lo necesito para un proyecto y la verdad tengo un programa que me instalo el apache php y mysql descarge el codigo pero me marca error en la funcion de mail($destinatario,$asunto,$cuerpo,$headers) y no se a que se debe ese error de hecho cuando corro la pagina aparece este mensaje Warning: Unknown error in C:\apache\htdocs\mail2\mail.php on line 43 y en la linea 43 esta la funcion de mail() que hago
Por: Xose
19/5/05
Hola. Antes me daba el error · Warning: mail(): SMTP server response: 550 5.7.1 Unable to relay. Lo arreglé configurando php.ini y la pestaña "retransmision". En cuanto hice esas dos cosas la funcion mail me devuelve true, y no me da ningun tipo de error, pero a los detinatarios no les llega nada!!!!. Me podriais ayudar??? gracias.
Por: lionn
10/6/05
si a alguno le aparecio este error Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing es porque el php.ini no pudo ser encontrado por el apache, se puede solucionar poniendo el php.ini en la carpeta donde se encuentra el apache.exe
Por: monica ni
22/7/05
yo no se nada de computacion menos de enviar mails pero su pagina es muy clara y facil de entender
Por: Alex
03/8/05
Como hacer para que al enviar el formulario esa misma persona reciba un correo sabiendo que su petición o envío de formulario a llegado, vi un script por ahí que puso una muchacha pero veo que hay que poner el correo del usuario que es el que escribe pero quien sabe cual es el correo del usuario sí puede ser cualquiera?
Por: lucy ayarde
09/8/05
es un sitio muy pero muy interesante.. gracias por los consejos y codigos que me parece genial.. pero anda revisa todos tus comentarios pendientes un abrazo

Respuesta:
Gracias por tu comentario, estamos revisando los comentarios en la medida de lo posible, son muchas las tareas por realizar y no siempre está todo cómo nos gustaría.
Por: Jorge Molina
28/8/05
Hay un error en el codigo: luego de la linea que dice
//ruta del mensaje desde origen a destino
$headers .= "Return-path: holahola@desarrolloweb.com\r\n"

falta un punto y coma al final para cerrar la instrucción.

Respuesta:
Ya esta corregido, muchas gracias.
Por: Jorge
14/9/05
Les comento mi solución sobre un MicroSoft W2k y un NT:

primero. Mencionarles que en el Servidor (que tiene NT) instalé IIS y sobre él, PHP.

Dentro del php.ini configuré :
SMTP="Olimpo", que es el nombre de mi servidor.

En IIS, dentro de las propiedades de mi Sitio SMTP por defecto, en "Directory Security" habilité la opción "Allowed To Relay"

Y eso solucionó todos los problemas que tenía.

Espero que mi experiencia les sirva de algo.
Saludos desde Chile.
Por: Greco
07/10/05
Lo probe y funciona exelente. Copie el codigo y lo pegue en una pagina que subi en mi servidor gratuito www.red-futura.net y luego lo ejecute y funciono super bien salvo un pequeño detalle que seguramente no es del scrip sino mas bien de gmail, la cosa es que al recibir el email en una cuenta de GMAIL la direccion de "responder a" es el mismo remitente mientras que al revisarlo en una cuenta de hotmail el "responder a" es exactamente el que yo le habia puesto que fuese y no el remitente, se entiende?? nada mas.
Por: Julia Bebop
14/10/05
Hola amigos.

Bien. yo me he leido una gran cantidad de tutoriales y pues de todos se van formando soluciones para este problema en especifico: manda correo por PHP.. nada facil.

Y NADA FACIL!!! realmente hay que estar sentado todo el dia como zoombie tratando de comprender muchas cosas., "que si el php.ini,, que ahora es rosa muevelo hacia la derecha, ah! pero le cambiaste el comentario, muevelo a la izquierda,,etc..."

Lei en un foro, que linux no tiene este problema y muchos otros. Realmente me gustaria haber aprendido con linux..pero en fin..Nunca es tarde! algun dia me aventare!

Pobres de nosotros los mortales windows. T..T jeje. Lo malo es que nosotros usuarios de windows, creemos que el simple hecho de instalar,,mmmm.. apache, ya sirve solo, como un video juego..jeje,, igual php, mysql, mysqladmin, myflashadmin...etc!!..

Ese es el problema que veo.. En fin amigos..no nos queda mas que seguir trabajando para solucionar este y otros problemas relacionados a la internet, llamese servidores http, servidores dns, pop3,,etc, etc..

Almenos estamos debajo de los usuarios linux :D., y no somos del monton que se compra una pc por mero status quo.

Esta es solo una opinion para darles animo, a aquellos compañeros de desveladas, investigadores, questionadores, etc..para que no se den por vencidos y sigan, hasta encontrar la solucion.

Saludos!
Por: Juan
24/4/06
Para todos aquellos que usan winxp y tienen instalado ele easy php , instalense este programita 1st SMTP Server aqui les paso el link
http://1st-smtp-server.uptodown.com/
se instala y configura atomaticamente como un servidor de correo smtp (solo permitan al firewall de windows desbloquear el servicio cuando se los pida) y eso es todo. Funciona bien aunque los correos se reciben con cierta demora tener un poco de paciencia , aun no se la causa de ello pero de que llegan ...llegan, otra cosa a veces en hotmail llegan como correo no deseado revisen alli.

Saludos desde Peru
Por: numa
12/5/06
señores he intentado por todos los medios y comentarios de esta sección enviar con este formulario y siempre me sale el error Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in ..... on line 41

por ejemplo , necesito saber si necesito instalar un servidor de correo local oporque ninguna correo me llega a ningún sitio y tengo como cinco cuentas. No se si tewngo que configurar el php adaptado a un correo de otro servidor .

RESPUESTA

Veo que el error está bien claro. Te falta indicar en el PHP.ini tu correo electrónico en el campo sendmail_from, para que PHP sepa el correo a través del que se envían los email, si es que no se especifica nada en la cabecera del mensaje, en el campo From:.

Así que tienes dos opciones. Una es especificar el From: al crear las cabeceras del mensaje, o bien editar el PHP.ini para incluir una cuenta por defecto y asi no tener que indicar esa cuenta en cada mensaje que envías.

En el artículo Mandar mails desde PHP tienes ejemplos sobre como especificar un from en las cabeceras del mensaje y así evitar el error que te sale.

Por: Joel
18/8/06
Para empezar, la función mail() trabaja perfectamente, pero antes de eso ya sean usuarios de windows o Linux, deben tener configurado un servidor de correo (SMTP). Tanto Linux como Wndows poseen ese servicio, solo deben activarlo.

Si no desean mover el código PHP.ini, en su página web coloquen las siguientes líneas:

ini_set('SMTP',"10.28.5.133");
ini_set('smtp_port','25');
mail($email,
$subject, $newmessage, $headers) or die("Lo sentimos, debes configurar un servidor de correo (SMTP) primero!");
Por: Joel
18/8/06
Para empezar, la función mail() trabaja perfectamente, pero antes de eso ya sean usuarios de windows o Linux, deben tener configurado un servidor de correo (SMTP). Tanto Linux como Wndows poseen ese servicio, solo deben activarlo.

Si no desean mover el código PHP.ini, en su página web coloquen las siguientes líneas:

ini_set('SMTP',"10.28.5.133");
ini_set('smtp_port','25');
mail($email,
$subject, $newmessage, $headers) or die("Lo sentimos, debes configurar un servidor de correo (SMTP) primero!");
Por: Mario
19/12/06
Si tienen la página web alojada en un servidor, pues hagan una consulta al administrador, para que les digan cómo configurar PHP para el envío de correo. Algunos proveedores tienen funciones seguras para envío de correo, coun autenticación de PHP en el servidor de envío y todo.

Ahora bien, si tienen problemas para el envío de email en su propio servidor local, instálense un servidor SMTP en su computador y configuren el servidor SMTP de PHP en php.ini. Pero tampoco gastaría mucho tiempo en esto porque no te aseguran que esos mensajes vayan a llegar a los destinatarios. Es decir, el envío de correos desde máquinas locales no es fiable, muchos servidores de correo los rechazan.
Por: Jesús
27/3/07
LO HE CONSEGUIDO. OS EXPLICO MIS PASOS PARA LOGRARLO. SIENTO NO PODER PONER IMAGENES:

Para que esto funcione, necesitamos tener activado un servidor de correo en el PC. Y yo no lo tenía.
Para habilitar el correo local me fui a servicios de Internet Server (primero lo arranqué) pero solo el Servidor SMTP

Antes de arrancarlo, tuve que habilitar (no arrancar) administración de IIS, porque yo lo tenía deshabilitado(Uso solo apache).

Primer Error: sendmail_from not set php.ini custom header missing

Primero cogí el php.ini (los dos el del php y el de apache/bin) y poner esto mas ó menos

[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25

; For Win32 only.
sendmail_from = miemail@telefonica.net


En miemail@telefonica.net poner vuestro correo
es el usuario que se mostrará al destinatario que llegue el correo
Poner el que corresponda.

El segundo Error: mail(): SMTP server response: 550 5.7.1 Unable to relay.

Ahora dentro del Panel de Control - Herramientas Administrativas
entré en Servicios en Internet Información Server:

Y dentro de este me fui a Servidor Virtual SMTP, botón derecho y propiedades.

Ahora nos vamos a la pestaña Acceso, botón Retransmisión
y marco solo los de la lista siguiente.
Y le agrego mi ip.

Al principio solo puse la IP 172.16.0.5 (la mía) pero no funcionaba, así que le añadí la 127.0.0.1 y funciona.
Tardó un poco (2-3 minutos) pero el correo llegó.

Bueno espero se de utilidad al alguno.
Saludos
Por: JoG
29/3/07
Excelente! solamente hice las modificaciones de las direcciones, tal y como se indica en el articulo, y fuciona de maravilla.
Muchisimas gracias!
Por: Ramiro Paz
06/7/07
Hola amigos este artículo me funciona perfectamente con los correos Yahoo y Hotmail, pero con Gmail, me sale el código directamente en HTML alguien sabe porque?, saludos
Por: Jonathan Korn
10/7/07
Bello el codigo, amigos. Funcionó a la perfeccion y en 5 minutos ya tengo algo que había querido implementar hace mucho tiempo.

Gracias totales!!!!
Por: isht4r
14/10/08
a mi me funciono de maravilla en la primera prueba, eso si monte todo en prueba.php y lo subí al servidor con el respectivo cambio de dir de correo y a la primera me envió el correo de prueba a mi email :)

marisa
No me funciona!
10/5/09
Pues a mi me envia el correo pero veo el código tal cual..Que puedo estar haciendo mal?

diablit...
Problema al enviar mail desde php
15/7/09
Hola a todos, espero me puedan ayudar. Tengo dos servidores IIS, uno es de correos (es el que tiene funcionando el SMTP y se llama por decir algo "servidor1") y otro es donde tengo instalado y configurado para que funcione el PHP5 (lo llamaremos "servidor2"). Quiero mandar correos usando la phpmailer. El problema es que marca un error que dice:
"Language string failed to load: connect_host"

El archivo php.ini (me supongo debe ser el que esta en el servidor2) lo tengo así:

[mail function]
; For Win32 only.
SMTP = servidor1.escuela.edu.mx
smtp_port = 25

; For Win32 only.
;sendmail_from = cuenta@escuela.edu.mx

Y en mi pagina php tengo:

<?php

if(isset($_POST["Submit"])){

require_once("lib/phpmailer/class.phpmailer.php");

$mail = new PHPMailer();
$mail->PluginDir = "lib/phpmailer/";

$mail->Mailer = "smtp";

$mail->Host = "servidor1.escuela.edu.mx"; // SMTP servers

$mail->SMTPAuth = true;
$mail->Username = "cuenta@escuela.edu.mx";
$mail->Password = "password";

$mail->From = "cuenta@escuela.edu.mx";
$mail->FromName = "Mi nombre";

$mail->Timeout = 30;

$mail->AddAddress("otra_cuenta@hotmail.com");

$mail->Subject = "Mi asunto";

$mail->Body = '<h1>Este es el cuerpo del mensaje</h1>';

// Send
if(!$mail->Send())
echo "No se pudo enviar el correo electronico!<br><br>".$mail->ErrorInfo;
else
echo "El correo se envio correctamente!";
}
?>

Bueno, esta bastante largo el comentario pero es para que tengan todo claro y me puedan ayudar mejor.

Saludos y gracias por su atencion!!!

ximeti
AYUDAAAAAAAAAAAAAAA
27/7/09
soy denmasiado burro y como hago ejecutar este codigo, donde lo coloco, como lo envio, lo ajdunto?, entiendo las modificacione s que hacer , pero solo quiero enviar una imagen y nada mas, y claro quese habra sola.

S.O.S

Ikantal...
Problema con el envio de mail desde php
07/9/09
Que tal compañero del foro, asi como dice el asunto del comentario, aun continuo con el problema al enviar el mail desde mi pagina, me sigue saliendo este error=Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:AppServwwwscesacontactar.php on line 45, el detalla esta en que ya fui al archivo php.ini, y los valores estan bien, incluso fui a Panel de ControlFirewallOpciones avanzadas y en la parte de conexion de area local, me fui a su configuración y en la parte de servios active Internet Mail Server, en el cual sale el mismo numero de puerto que esta habilitado en el php.ini que es el 25, pero aun asi me sigue marcando el dichoso error, alguien sabe a que se deba??

ivt
envio de mail con php
08/12/09
HOLA necesito urgente saber como enviar mails con lenguaje php...necesito el archivo html, y el php para ponerlo en mi sistema de programacion que estoy realizando....porfa ayudaaaaaa

Manuales relacionados
Categorias relacionadas
El autor
Lectura recomendada
Compra este libro en Agapea, la librería urgente a domicilio.
Últimas noticias
Alojados en el grupo
Copyright | Publicidad | Acerca de | Datos legales | Contacta