Hola, quisiera saber si hay alguna forma de enivar correos autenticados en SMTP con la función mail()
Gracias
| |||
La función mail() de PHP no autentifica en SMTP, podrías utilizar clases como phpmailer para tal fin (http://phpmailer.sourceforge.net) Saludos |
| |||
Si hubieras leido la info adjunta, hubieras visto el método: AddEmbeddedImage (string $path, string $cid, [string $name = ""], [string $encoding = "base64"], [string $type = "application/octet-stream"]) Esto añade una imágen a traves del sistema de archivos del servidor. Saludos |
| ||||
Sabes lo que ocurre HiperJP?, yo pido que si digo una burrada por favor me corrijan. Por lo que he estado observando en la info adjunta y ejemplos AddEmbeddedImage solo sirve para, como bien dices, colocar imagenes embebidas en el cuerpo del mensaje, la cuestión aquí es que debo agregar manualmente una cid en cada imagen, relamente no he encontrado la manera de hacer esto automáticamente cosa de que le asigne ese valor con tan solo encontrar algo así en un código html: <img src="http://www.miweb.com/foto.jpg border="0">. He visto otra clase de similar a phpmailer con la diferencia que trabaja con la función mail(), pero hace a la perfección esto que les estoy comentando, coloca un identificador a la imagen automáticamente al encontrar un código como el anterior si tener que agregar por cada imagen esto: $mail->AddEmbeddedImage('image.gif', 'image', 'image.gif'); La clase de la que les hablo es "mmail" y como les digo, no tengo problema y hace lo que preciso, el único inconveninte es que no puedo enviar con autentificación SMTP, por lo que si uso esta clase, en el maldito hotmail los correos van a parar a la bonita carpeta "correo no deseado" ![]() ![]() el código que utiliza esta clase es algo asi (reemplazar el img src="ubicacion" por img src"cid:blablabla") Código PHP: Gracias ![]() ![]() |
| |||
Bueno .. si ya tienes la función hecha (o casi) podrías adaptarla a PHP Mailer .. de hecho fijate lo que hace o como trabaja esta (al parecer): Todo este código: function parseHtml($boundary) { $images = array(); $html_images = ""; preg_match_all("/src=\"[^\"]*\"/", $this->Body_html, $images); foreach($images[0] as $image) { $path = preg_replace(array("/src=/", "/\"/"), "", $image); $iname = explode('/', $path); $iname = $iname[count($iname)-1]; $itype = explode('.', $iname); $itype = $itype[count($itype)-1]; $cid = 'image_'.md5(microtime()); $path = preg_replace("/http\:\/\//", "", $path); $path = explode("/", $path); $path[0] = substr($_SERVER['DOCUMENT_ROOT'],0,strlen($_SERVER['DOCUMENT_ROOT'])); $path = implode("/", $path); más o menos hasta ahí .. hace tu reemplazo de todos los tag's HTML que se ecuentren en el cuerpo de tu e-mail de tipo <img src= ....> (y no sólo imagen .. sino referencias externas a <javascript scr=....> etc .. ) por el famoso "CID" (que no sabía .. pero es un nombre para hacerlo único al parecer ...) Luego tienes la función o método de la classe PHP Mailer que ya conoces .. la cual lee el archivo de su ubicación física, y lo incrustra en el e-mail (en la parte que se requiere .. en su base hace todos esos "fopen()" que en tu función original tienes y el manejo de las cabeceras HTTP que hace) .. Así que llegado a este punto .. el "CID" ya lo tienes ($cid) .. también el nombre de la imagen que ha de quedar también ($image o basename($path) ... no sé si realmente $imagen contiene sólo el nombre de la imagen ahora mismo) y la ruta+nombre de la imagen .. también ($path) .. justamente son esos los tres parámetros que necesitas para usar (el nombre de la imagen sería opcional .. ): AddEmbeddedImage () En resumen .. debería quedar algo tipo (tu función): Código PHP: |