<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>PHPBSD.net &#187; mime</title>
	<atom:link href="http://www.phpbsd.net/tag/mime/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.phpbsd.net</link>
	<description>Blogueando sobre PHP, BSD, SEO, AJAX, Seguridad, Rendimiento... y mucho más</description>
	<lastBuildDate>Thu, 07 Oct 2010 11:57:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Envío de emails desde PHP usando varios métodos (PEAR Mail_mime, mail y error_log)</title>
		<link>http://www.phpbsd.net/2007/02/04/envio-de-emails-desde-php-usando-varios-metodos-pear-mail_mime-mail-y-error_log/</link>
		<comments>http://www.phpbsd.net/2007/02/04/envio-de-emails-desde-php-usando-varios-metodos-pear-mail_mime-mail-y-error_log/#comments</comments>
		<pubDate>Sun, 04 Feb 2007 03:09:05 +0000</pubDate>
		<dc:creator>Oriol</dc:creator>
				<category><![CDATA[Artículos]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[error-log]]></category>
		<category><![CDATA[mime]]></category>
		<category><![CDATA[pear]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[webmaster]]></category>

		<guid isPermaLink="false">http://www.phpbsd.net/2007/02/04/envio-de-emails-desde-php-usando-varios-metodos-pear-mail_mime-mail-y-error_log/</guid>
		<description><![CDATA[En el desarrollo de aplicaciones PHP es muy frecuente encontrarse con la necesidad de enviar algún tipo de email: bonitos en HTML a los usuarios, de debug, alertas, etc. Para enviar un correo electrónico en PHP disponemos de varias formas de hacerlo, lo más rápido es con las funciones incorporadas en el mismo lenguaje aunque [...]


Entradas relacionadas:<ul><li><a href='http://www.phpbsd.net/2007/02/06/datos-xml-bonitos-y-mas-leibles-en-php-usando-pear-xml_beautifier/' rel='bookmark' title='Permanent Link: Datos XML bonitos y más leíbles en PHP usando PEAR XML_Beautifier'>Datos XML bonitos y más leíbles en PHP usando PEAR XML_Beautifier</a></li><li><a href='http://www.phpbsd.net/2007/12/12/como-interactuar-con-google-desde-php-usando-zend-framework/' rel='bookmark' title='Permanent Link: Como interactuar con Google desde PHP usando Zend Framework'>Como interactuar con Google desde PHP usando Zend Framework</a></li><li><a href='http://www.phpbsd.net/2007/06/13/instalar-clases-pear-en-un-hosting-compartido/' rel='bookmark' title='Permanent Link: Instalar clases PEAR en un hosting compartido'>Instalar clases PEAR en un hosting compartido</a></li></ul>]]></description>
			<content:encoded><![CDATA[<p>En el desarrollo de aplicaciones PHP es muy frecuente encontrarse con la necesidad de enviar algún tipo de email: bonitos en HTML a los usuarios, de debug, alertas, etc. Para enviar un correo electrónico en PHP disponemos de varias formas de hacerlo, lo más rápido es con las <a target="_blank" title="PHP: Funciones de Correo - Manual" href="http://es2.php.net/manual/es/ref.mail.php">funciones incorporadas en el mismo lenguaje</a> aunque también disponemos de una gran cantidad de clases y librerías ya hechas, como las <a target="_blank" title="PEAR :: Manual :: Mail" href="http://pear.php.net/manual/es/package.mail.php">PEAR Mail</a>. Como siempre el uso de librerías externas con muchas líneas de código empeoran el rendimiento y mantenimiento de nuestro software. Pero las PEAR Mail son bastante ligeras y, en mi opinión, muy útiles en los casos en que queremos enviar emails "bonitos" con HTML enviando también la versión texto, con attachments, imágenes, vídeos, y demás, así nos olvidamos de tener que gestionar todo lo necesario manualmente (cabeceras, codificaciones, extensiones <a target="_blank" title="Multipurpose Internet Mail Extensions - Wikipedia, la enciclopedia libre" href="http://es.wikipedia.org/wiki/MIME">MIME</a>, etc.). Aunque siempre se ha de valorar el uso que le vamos a dar de lo q ofrece y el número y tipo de emails q necesitamos enviar. A continuación detallo brevemente algunos métodos para enviar distintos tipos de email desde PHP.</p>
<p><strong>Función <a target="_blank" title="PHP: mail - Manual" href="http://es2.php.net/manual/es/function.mail.php">mail()</a></strong></p>
<p>Para enviar emails sencillos en modo texto el uso de la función <em>mail()</em> es sin lugar a dudas lo más cómodo. Su uso es el siguiente:</p>
<div class="syntax_hilite">
<div id="php-4">
<div class="php"><a href="http://www.php.net/mail"><span style="color:#000066;">mail</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'direccion@del.destinario.com'</span>,<span style="color:#FF0000;">'Asunto'</span>,<span style="color:#FF0000;">'Mensaje'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</div>
</div>
<p></p>
<p>Devuelve TRUE en caso de éxito y FALSE en caso contrario. También podemos pasarle cabeceras adicionales como cuarto parámetro, esto puede ser útil, por ejemplo, para enviar mensajes HTML usando <em>mail()</em> pero a la mínima q necesites enviar emails un poco más complejos es recomendable usar las PEAR.</p>
<p><strong>Función <a target="_blank" title="PHP: error_log - Manual" href="http://es2.php.net/manual/es/function.error-log.php">error_log()</a></strong></p>
<p>Para todos aquellos emails de debug o alertas internas de nuestro software podemos usar <em>error_log()</em>. Con esta función podemos hacer log a distintos destinos: el log del sistema, un archivo, la conexión de debug y también enviar por email. Por ejemplo para enviarnos por email información acerca de una exception q nos salta en nuestro código:</p>
<div class="syntax_hilite">
<div id="php-5">
<div class="php">try <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; <span style="color:#FF9933; font-style:italic;">// código con posibles errores</span><br />
<span style="color:#006600; font-weight:bold;">&#125;</span> catch <span style="color:#006600; font-weight:bold;">&#40;</span>Exception <span style="color:#0000FF;">$e</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; <span style="color:#0000FF;">$msg</span> = <span style="color:#FF0000;">'ERROR #'</span>.<span style="color:#0000FF;">$e</span>-&gt;<span style="color:#006600;">getCode</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#FF0000;">"<span style="color:#000099; font-weight:bold;">\n</span>"</span>;<br />
&nbsp; <span style="color:#0000FF;">$msg</span> .= <span style="color:#0000FF;">$e</span>-&gt;<span style="color:#006600;">getMessage</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#FF0000;">"<span style="color:#000099; font-weight:bold;">\n</span>"</span>;<br />
&nbsp; <span style="color:#0000FF;">$msg</span> .= <a href="http://www.php.net/print_r"><span style="color:#000066;">print_r</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$e</span>-&gt;<span style="color:#006600;">getTrace</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>,<span style="color:#000000; font-weight:bold;">true</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; @<a href="http://www.php.net/error_log"><span style="color:#000066;">error_log</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$msg</span>, <span style="color:#CC66CC;">1</span>, <span style="color:#FF0000;">'direccion@del.destinario.com'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#006600; font-weight:bold;">&#125;</span></div>
</div>
</div>
<p></p>
<p><strong>Clase <a target="_blank" title="PEAR :: Manual :: Mail_Mime" href="http://pear.php.net/manual/es/package.mail.mail-mime.php">PEAR Mail_mime</a></strong></p>
<p>Como comentaba esta es una de las clases existentes para el envío de emails con soporte de extensiones MIME, lo que permite enviar HTML con imágenes, vídeo, archivos adjuntos, etc. Este es un ejemplo sencillo de como enviar un email HTML con su versión texto y con un archivo adjunto:</p>
<div class="syntax_hilite">
<div id="php-6">
<div class="php"><span style="color:#616100;">require_once</span> <span style="color:#FF0000;">'Mail.php'</span>;<br />
<span style="color:#616100;">require_once</span> <span style="color:#FF0000;">'Mail/mime.php'</span>;<br />
<span style="color:#0000FF;">$destinario</span> = <span style="color:#FF0000;">'direccion@del.destinario.com'</span>;<br />
<span style="color:#0000FF;">$from</span> = <span style="color:#FF0000;">'direccion@del.from.com'</span>;<br />
<span style="color:#0000FF;">$asunto</span> = <span style="color:#FF0000;">'Asunto del mensaje'</span>;<br />
<span style="color:#0000FF;">$mensaje</span> = <span style="color:#FF0000;">'&lt;html&gt;&lt;head&gt;&lt;title&gt;'</span>.<span style="color:#0000FF;">$asunto</span>.<span style="color:#FF0000;">'&lt;/title&gt;&lt;/head&gt;'</span>.<span style="color:#FF0000;">"<span style="color:#000099; font-weight:bold;">\n</span>"</span>;<br />
<span style="color:#0000FF;">$mensaje</span> .= <span style="color:#FF0000;">'&lt;body&gt;&lt;p&gt;&lt;h1&gt;Hola&lt;/h1&gt;&lt;/body&gt;&lt;/html&gt;'</span>;<br />
<span style="color:#0000FF;">$mime</span> = <span style="color:#000000; font-weight:bold;">new</span> Mail_mime<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">"<span style="color:#000099; font-weight:bold;">\n</span>"</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#0000FF;">$mime</span>-&gt;<span style="color:#006600;">setTXTBody</span><span style="color:#006600; font-weight:bold;">&#40;</span><a href="http://www.php.net/strip_tags"><span style="color:#000066;">strip_tags</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$mensaje</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#0000FF;">$mime</span>-&gt;<span style="color:#006600;">setHTMLBody</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$mensaje</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#0000FF;">$mime</span>-&gt;<span style="color:#006600;">addAttachment</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'fichero_adjunto.zip'</span>, <span style="color:#FF0000;">'application/zip'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#0000FF;">$body</span> = <span style="color:#0000FF;">$mime</span>-&gt;<span style="color:#006600;">get</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#0000FF;">$hdrs</span> = <a href="http://www.php.net/array"><span style="color:#000066;">array</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'From'</span> =&gt; <span style="color:#0000FF;">$from</span>, <span style="color:#FF0000;">'Subject'</span> =&gt; <span style="color:#0000FF;">$asunto</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#0000FF;">$hdrs</span> = <span style="color:#0000FF;">$mime</span>-&gt;<span style="color:#006600;">headers</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$hdrs</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#0000FF;">$mail</span> =&amp; <a href="http://www.php.net/mail"><span style="color:#000066;">Mail</span></a>::<span style="color:#006600;">factory</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'mail'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#0000FF;">$res</span> = <span style="color:#0000FF;">$mail</span>-&gt;<span style="color:#006600;">send</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$destinario</span>, <span style="color:#0000FF;">$hdrs</span>, <span style="color:#0000FF;">$body</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#616100;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span>PEAR::<span style="color:#006600;">isError</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$res</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <a href="http://www.php.net/echo"><span style="color:#000066;">echo</span></a> <span style="color:#FF0000;">'error enviando el email'</span>;</div>
</div>
</div>
<p></p>
<p>Todos los métodos anteriormente descritos necesitan de un servidor de correo funcionando y las directivas de configuración del PHP correctamente fijadas. Si tienes un ISP un poco decente casi seguro q no tendrás ningún problema.</p>
<p>Una técnica alternativa a todos estos métodos y que no necesita de servidor de correo es usar sockets (función <a target="_blank" title="PHP: fsockopen - Manual" href="http://es2.php.net/manual/es/function.fsockopen.php">fsockopen()</a>) para mandar nosotros mismos los mensajes desde nuestro código. Se trata de hacer desde PHP el trabajo q antes nos hacía el servidor. Esto, en general, no es recomendable ya q puede presentar serios problemas d rendimiento y gestión de errores (nunca funcionará mejor nuestro código PHP q un <a target="_blank" title="Proyecto DoQmail - Documentación y soporte a qmail en castellano" href="http://www.es.qmail.org/">Qmail</a> :) y la única ventaja destacable q presenta, a parte de no necesitar d un servidor d correo, es disponer de un mayor control de lo que pasa cuando se envía el email. Podemos por ejemplo saber en el momento si el servidor del destinatario del correo existe y nos acepta el mensaje, etc... Aunque con los métodos descritos y leyendo los mensajes devueltos por el servidor de correo también puedes saber si todo va bien... como consejo, si tienes un servidor de correo úsalo.</p>


<p>Entradas relacionadas:<ul><li><a href='http://www.phpbsd.net/2007/02/06/datos-xml-bonitos-y-mas-leibles-en-php-usando-pear-xml_beautifier/' rel='bookmark' title='Permanent Link: Datos XML bonitos y más leíbles en PHP usando PEAR XML_Beautifier'>Datos XML bonitos y más leíbles en PHP usando PEAR XML_Beautifier</a></li><li><a href='http://www.phpbsd.net/2007/12/12/como-interactuar-con-google-desde-php-usando-zend-framework/' rel='bookmark' title='Permanent Link: Como interactuar con Google desde PHP usando Zend Framework'>Como interactuar con Google desde PHP usando Zend Framework</a></li><li><a href='http://www.phpbsd.net/2007/06/13/instalar-clases-pear-en-un-hosting-compartido/' rel='bookmark' title='Permanent Link: Instalar clases PEAR en un hosting compartido'>Instalar clases PEAR en un hosting compartido</a></li></ul></p>]]></content:encoded>
			<wfw:commentRss>http://www.phpbsd.net/2007/02/04/envio-de-emails-desde-php-usando-varios-metodos-pear-mail_mime-mail-y-error_log/feed/</wfw:commentRss>
		<slash:comments>74</slash:comments>
		</item>
	</channel>
</rss>

