Foros del Web » Programando para Internet » PHP »

enviar correo de mail() y todos los servidores de correo lo puedan leer

Estas en el tema de enviar correo de mail() y todos los servidores de correo lo puedan leer en el foro de PHP en Foros del Web. Foreros necesito de su ayuda ya que me pasa algo extraño... Hace unos dias publique un tema donde no podia adjuntar un archivo zip, el ...
  #1 (permalink)  
Antiguo 04/07/2014, 14:19
 
Fecha de Ingreso: julio-2012
Mensajes: 94
Antigüedad: 11 años, 8 meses
Puntos: 0
Exclamación enviar correo de mail() y todos los servidores de correo lo puedan leer

Foreros necesito de su ayuda ya que me pasa algo extraño...

Hace unos dias publique un tema donde no podia adjuntar un archivo zip, el cual ya había solucionado.

Haciendo pruebas me tope con un gran problema.

Gmail me interpreta perfecto lo que envio, pero los demas proveedores de correo no.

Hotmail.- me manda el archivo zip sin ningún archivo dentro del mismo
Proveedor privado.- Me manda una cadena gigante pero no el archivo.

Esto es lo que tengo de mi envio de correo electronico, espero me puedan ayudar.

variables.
Código PHP:
                        $receptor=$_POST['receptor'];
            
$tempfolder="/temporal/";
                        
$my_file "archivo.zip";
            
$my_name "administrador";
            
$my_mail "[email protected]";
            
$my_subject "prueba de correo adjunto";
            
$my_message "Prueba de envío.";
mail_attachment($my_file$tempfolder$receptor$my_mail$my_name$my_subject$my_message); 
funcion 1 todo en header.
Código PHP:
function mail_attachment($filename$path$mailto$from_mail$from_name$subject$message) {
    
$file $path.$filename;
    
$content chunk_split(base64_encode(file_get_contents($file)));
    
$uidmd5(uniqid(time()));
    
$bound="--".$uid."\r\n";
    
$last_bound="--".$uid."--\r\n";
    
$header "From: ".$from_name." <".$from_mail.">\r\n";
    
$header .= "MIME-Version: 1.0"."\r\n";
    
$header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n";
    
$header .= "This is a multi-part message in MIME format.\r\n";
    
$header .= $bound;
    
$header .= "Content-type:text/plane; charset=utf-8\r\n";
    
$header .= "Content-Transfer-Encoding: 7bit\r\n";
    
$header .= $message."\r\n";
    
$header .= $bound;
    
$header .= "Content-Type: application/zip; name=\"".$file."\"\r\n";
    
$header .= "Content-Transfer-Encoding: base64\r\n";
    
$header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n";
    
$header .= $content."\r\n";
    
$header .= $last_bound;

    if (
mail($mailto$subject""$header)) {
        echo 
"Correo enviado a ".$mailto;
    } else {
        echo 
"Error al enviar correo";
    }

función 2 dividiendo header y cuerpo del correo.
Código PHP:
function mail_attachment($filename$path$mailto$from_mail$from_name$subject$message) {
    
$file $path.$filename;
    
$content chunk_split(base64_encode(file_get_contents($file)));
    
$uidmd5(uniqid(time()));
    
$bound="--".$uid."\r\n";
    
$last_bound="--".$uid."--\r\n";
    
$header "From: ".$from_name." <".$from_mail.">\r\n";
    
$header .= "MIME-Version: 1.0"."\r\n";
    
$header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n";
    
$header .= "This is a multi-part message in MIME format.\r\n";
    
$header .= $bound;
    
$header .= "Content-type:text/plane; charset=utf-8\r\n";
    
$header .= "Content-Transfer-Encoding: 7bit\r\n";
    
$cuerpo .= $message."\r\n";
    
$cuerpo .= $bound;
    
$cuerpo .= "Content-Type: application/zip; name=\"".$file."\"\r\n";
    
$cuerpo .= "Content-Transfer-Encoding: base64\r\n";
    
$cuerpo .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n";
    
$cuerpo .= $content."\r\n";
    
$cuerpo .= $last_bound;

    if (
mail($mailto$subject$cuerpo$header)) {
        echo 
"Correo enviado a ".$mailto;
    } else {
        echo 
"Error al enviar correo";
    }

Ojala me puedan ayudar con este detalle, la verdad no tengo ni idea de donde este el problema
  #2 (permalink)  
Antiguo 07/07/2014, 17:40
Avatar de ehguacho  
Fecha de Ingreso: febrero-2010
Mensajes: 138
Antigüedad: 14 años, 1 mes
Puntos: 4
Respuesta: enviar correo de mail() y todos los servidores de correo lo puedan leer

tendrás un header real para mostrar? tal vez ahí pueda ayudarte mejor.

PD: ojo con esto: $header .= "Content-type:text/plane; charset=utf-8\r\n";., ahí debiera decir plain.

por lo demás, todos los webmails manejan distinto el tema de los headers; algunos son más permisivos, otros menos. mi consejo es que testees los headers con alguna aplicación como SpamAssasin o similar, que te van a marcar aquellas partes incorrectas del header, o bien aquellas que los webmails no le gustan tanto.
__________________
Cine clásico en descarga directa! http://felliniycia.comule.com
  #3 (permalink)  
Antiguo 08/07/2014, 10:13
 
Fecha de Ingreso: julio-2012
Mensajes: 94
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: enviar correo de mail() y todos los servidores de correo lo puedan leer

Hola ehgaucho.

Los headers que he puesto, son los que estoy utilizando. igual te los pongo tal cual los tengo:

significado de las variables:
$filename = nombre de archivo
$path = ruta de archivo
$mailto = Correo de receptor
$from_mail = Email del emisor
$from_name = Nombre del emisor
$subject = Titulo del mensaje
$message = Cuerpo de mensaje

Código PHP:
   $file $path.$filename;
    
$content chunk_split(base64_encode(file_get_contents($file)));
    
$uidmd5(uniqid(time()));
    
$bound="--".$uid."\r\n";
    
$last_bound="--".$uid."--\r\n";

    
$header "From: ".$from_name." <".$from_mail.">\r\n";
    
$header .= "MIME-Version: 1.0"."\r\n";
    
$header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n";
    
$header .= "This is a multi-part message in MIME format.\r\n";
    
$header .= $bound;
    
$header .= "Content-type:text/plain; charset=utf-8\r\n";
    
$header .= "Content-Transfer-Encoding: 7bit\r\n";
    
$cuerpo .= $message."\r\n";
    
$cuerpo .= $bound;
    
$cuerpo .= "Content-Type: application/zip; name=\"".$file."\"\r\n";
    
$cuerpo .= "Content-Transfer-Encoding: base64\r\n";
    
$cuerpo .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n";
    
$cuerpo .= $content."\r\n";
    
$cuerpo .= $last_bound;

    if (
mail($mailto$subject$cuerpo$header)) {
        echo 
"Correo enviado a ".$mailto;
    } else {
        echo 
"Error al enviar correo";
    } 
Lo que se me hace raro es lo siguiente:

Cuando lo envío a un correo gmail, el archivo zip me lo muestra con los archivos dentro.
Cuando lo envío a un correo hotmail, el archivo zip esta vacío.
Cuando lo envío a un correo privado, el correo me llega con una cadena inmensa de texto, pero no el archivo adjunto.

Saludos.
  #4 (permalink)  
Antiguo 08/07/2014, 17:01
Avatar de ehguacho  
Fecha de Ingreso: febrero-2010
Mensajes: 138
Antigüedad: 14 años, 1 mes
Puntos: 4
Respuesta: enviar correo de mail() y todos los servidores de correo lo puedan leer

me refiero a si tenés header como resultado real del envío, es decir una muestra de cómo te está llegando al mail.
__________________
Cine clásico en descarga directa! http://felliniycia.comule.com
  #5 (permalink)  
Antiguo 08/07/2014, 17:04
Avatar de ehguacho  
Fecha de Ingreso: febrero-2010
Mensajes: 138
Antigüedad: 14 años, 1 mes
Puntos: 4
Respuesta: enviar correo de mail() y todos los servidores de correo lo puedan leer

Cita:
Iniciado por shaka025 Ver Mensaje
Cuando lo envío a un correo privado, el correo me llega con una cadena inmensa de texto, pero no el archivo adjunto.
un detalle: lo de la cadena de texto puede deberse a que el servidor esté transformando tu archivo adjunto a data uri scheme, en lugar de enviar un link al archivo físico real.
__________________
Cine clásico en descarga directa! http://felliniycia.comule.com
  #6 (permalink)  
Antiguo 09/07/2014, 10:25
 
Fecha de Ingreso: julio-2012
Mensajes: 94
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: enviar correo de mail() y todos los servidores de correo lo puedan leer

Que tal ehguacho.

No entiendo mucho lo que me pides de los headers. si pudieras asesorarme para enviarte de manera correcta los datos que me solicitas.


Esto es una parte de lo que me aparece en el contenido del correo privado:
Cita:
Content-type:text/plain; charset=utf-8

Content-Transfer-Encoding: 7bit

Esta es una prueba de los datos enviados.

Content-Type: application/zip; name="./Temporal/Test.zip"

Content-Transfer-Encoding: base64

Content-Disposition: attachment; filename="test.zip"

UEsDBBQAAAAIABJ10EQZ2ZY99OwBAOVfAgAfAAAASkFWUyBFTl RFUlBSSVNFIFNBIERFIENWXzQ3

LnBkZsy8e0BM+f8/HiG3tDbrlox7rCUhIXVYl9yS22LZHIQwGLcMqvNCyC0hlyUZ99 aSYZOQOhIl

1EgYlTrdb1NNc7+cc16v32vi/X6zn/du7/fn8/3j5/22Z87MmXNer+ft8Xg8X6/Rd+aESYNcBg+z

be3SY0gP0bI1tq3HjOlh29p5+or1/ltW9Rg5xHUUPpu0eu2WFZt6OE9au3TLigkr/ETLV9i29vS0

bb15y6YVS9fZtl6wtzbRZkm3Kaf69nNe9yIQTNVNlRduudhy5x L7Ph+Ojv2mJnl/RvnxGsfVXr0H

3Ph+14sV81b4ruw49lVt1CNDQaAy8dN/HrpHzXAyMIj4ZeXyJmv1mVNz08/33Pn7cwFBBQmIXtSs

PyKLaXOvnCniNz5iwxsbO8Ob0T5JkT8kCKKciGPcpdKC5G3+aJ y5MDtEleKTzWor+JDAqrroElZy

1nD+UdF8cdsPUdp3Fen5/m+z1p9NGhUt6z7mvlsBE3g06UzfQDawhDUo5/Q2l6gyMwtgZmaitRnh

/3fnUbajOdQTTELERVJc5RR8T9xDUhL4KGVd9/uyrPKClMvaDB+nvGvhtfmJqmjWLiu7yqFLRrtJ

qqrMFFVBJq9NzjQWZvtk5/OqupBAt8MrnfPzs7KCpjp/zGM7LFHWhik9thW2GD/5Y/S4j05XDFWG

4B/rPHuK0S4KXu/xm3Sdsu6IQWA2NrkYeB05L90ocsonJiuZ6DMPxEtefyQ+CBjmw ekCYtsQ6j4g

gvF8+p7Tb00LHOMyNHBrn1mdDYKPAsGYbauW1hwWfAREyxaHfM TtUlnDoI5tKz3GbWnx7e4NYe1S

JZ5XJiVMGHv2QWiJjdudosU7Lmi2op62Yn+70iTabp/2/tGRtfDIjI79qpOm58Jd039dTfMbHuWd

uW1jULr8Uc5c3FgQ2D8C9rS/BzaEs8aH9uW3jTtbOXSe3PKJq3llv7UgfBKlPB91O9Cw/HiPpT+s

dhq68WavHgEJ5i79NpJ5mxzOzLR2Hnox/uTjfJsrvpN/6jq6JqvQ02ObT5OHXntMW2TtNfzE1xeW

rnx7QeU5Z/TwE9/sE/bd/DB+2oiiAl5KXE+4AuqU26s1u35/5bNidu2V/M0RXGHPfvP7ZT1CTWZP

sYZv7X8LYf3+6KV0b5KgvdW7gPW52GvpypnHtklaHbbrvWdD/ZIf1i3XT75c5ziG25neW7BExERM

9qnW/1StF1ROWJ1nd3TEnY8rdxqIqy4fA4nvQ79JSv0heDRVmXPdYLP knN2ZFY5P2FebTrRwTExw

p24LK4ww+JIhUUqklXrVempvlkYPjfl15bybx66/n79j2DruOeteEhVik3nsUZgyTrgxcAMAj2Tr

Swt4VaJjaK7H7O/2pGfCO7+35W51S68rusNGgoL5dyXpBvb3HYcV6etmvD3/cbNyrOvPdiISlo9w

Nz+wmT/3zMMrB5U9fJ9/9wjIRn0wbgSGFg8/bt6SwzgKPtrbsEtCoxYxySMytYMvPph2uVgiqUYu

xXM23hX7dFi0t+h2frBxCbfzxC+nv9t2bvS8aynBFamxN9b/sm38S9+L2bcyX9YFGwB0uJWYeUB1

rQlzt+JYt1UCc5dV4bT3yMcja174e/7wqqRuTq1Nb6fzH66Kt0p2tv79+pZz60sDWZuSEOvw875t

p9s1sx191Pqsr+mB4S073bpbdvcFw845/eiYOjPRPjvaCyzb7yMWO3YsjHFa09XuBPA5N7KusmIf

Ep09XTkmyHGH12r3torQcd7jE3rmsCceVfsO3au8HvHLmMmnip Z4/dr8Qvdtr9QzZ6G5s+Ztqq11

GBeh5ye/LtRXpbi01wZvHLajaE7rR8pa7D27NFZSF9qUm35mUpeJvbo79R kzwH3o7sAXnX9t1k8b

PfqsT/6eM1u7SSXPGS7fPtiry7MZvy+9EN21I9FNaX8wRDNBL0LZLDnf izIPOPPCp+/a00d+GNRB

XHjAxeFaGQo5plQoO9vzYP7lJ92TXLp6nbhyVXIEKJO0zHetLz/cPvjxFCdz/jBTZsut0tr1XunU

734jT9Gi2bd/+GjcfmlkXSADvqdjh7rWC76Pet2OuTE08YDnvG1NlGNTd23sOn HolW4jWrHewQVz

uhvSDiNm/gdP3w+FzGn9dJ+TbeB6L0erIFDDHxlFZG0Hl5RNM2/dS/axrxh7qm6K+74Dw489WdH5

YElSsr9/7LkPP7SawofYBPYbKh5dMm/TJtTkgEMXwe42UzTBre4vWNtzZ2cqdEj/3jXdC929T1cG

Bk8ZsXqXqHUKz/ukdbBPcttXnth934jnP7X17s/pZtVMejBp2RnFTw9/Vcx1GBKqMLzKz10pazZn

/Cxpq6bfbbZtSlhtPDi3HXeuzTcjLrUKWDFh7sTXnV01i4G+LzW LG06ZzMZ8p9PbRfJLabn+86MX

uR4dUTWt9bJumzT6sS99xAMSvQsMwZrxG7PonXtgbvC6h5Przg 8avPVN9LvAfbEXslJ8/1hqd8Du

wLwNzZbk9ffj6z3jH/409rec3tZ7/ZJtexRYH5tRnSbUFVrF6Ptnlibpt/5w08EpfOWqRwkvm3wc

nDi1W9mvijlLB7cbP1dWN6Z9nUHefIFB0rKki2DvGZ918TqPMa 3aFBhy0658M8J5ZcTN5QXZsrZJ

reXmNoEvDpjjk8+sK7/Ffcwa8vJ1YUh2r5Xq7jNX7hz+mN04tmWx8I/XddFH9ia12F85ZNkZ25Sd

fY6yQ99EmmRXR4yBCfGE5wf32zU2p3bljB3z3WCr5x0W2j8aCP K6JVuvTpA+9EnW+2vnbXpk59K7

ROPa/37oD33O/GK927jhERo7rkvnxTdCu5XX9XK9Gy92H71j06PA8JtO0fv13Wv sr4RNXRD5yMl7

Z3VdsNsF6bgI39mINejXXzgg1HlnLT/9x9xAyY6OYKz/7cEpFT57mjzb/3td0dbfnToUBM6euac6

pDJ+fFL4ZUZu1b74G4nVsbVe1Bq2cPxzpv26IzPqkT2HWrgkxh XHHZ8woDD0wsHDNR7X/UoX7wyy

Nbe74NJDF7g8jgmnPfIfGAY43Eh6tXlyQPEWJ8U0QnLwaMuLdv wDQOadnS4/uv6+bsICFX/0wO0X

5UKfp1ZdrX8vdzi7//ylnI3zXqxsHjbf87cJqTZ27cYuZ5W2T7iee9qNDRo09MZUc+43 l0L2f98n

6ophplfWlOrfevcXE6NS0vdZn3GO3BPyXf6c9N2lY9ecHx1eot jh4Bgz/lePj8lXaLf2hv7klOtT

2uz+UaGynrprq/bIugBJrzlrdIU9A9T1W+9q57qvsO/efTJ18tIzG5vuKTcqMl10c+KuWbu4+h+Y

fq+tRDJ5Uaax9sG9c2GxzPWzbyj6fHP4zWj7Pb5eFdImvZ729J z1or5geG1t0PPhs/wNdyZUs8Tw

3ufezrdeukzaI2/psiG6CG5MtC7isPRK7PJijwOOMQFeBsGFqh8q6ogeJZrHx2s9p oiaeV8MCstx

+HH52Nf6O29US2a+Xj974fLz3b9t5zIu75jupyNi/dM/nq71kJ58c6JWEDiCmrltvYfgxVPBCIcm

h6Wunb4/TAomBHWbtVR7Tf3+SeeoF+uvsK8PbRAvv7d+2CFy2B8nm2S/eZlcIB8mn7TP02rCzpRE

n3SbvHc5im+jkhJ8BEyCz77WT2nbLA9b44ATNdEel8Acl9B2zU zZIcHuRw09Jtmlyi9eO3PUzqrn

yJm7u45bGvTj+uYXxx+oPDF750ZUkBQ5e80O5smDn4/07xQnCltYmDauzY/7PL97sHT7jt82hchm

zM3cqgu0LafPd2s///juIGPPUSNiRy8fO+ZE3Omjq6jepTmr/lB6GLWJzZemlefUMYFjTbzvtHtL

dpUfgKjP8Qdyg+eEX7q/WDbH/7HSK27wUenEbcuyWcEpQZjd1ZR6O2VWtN3Hj7N+u9vpVX7MyII M

xxvjt5Rsz1sZNft9XICLd16w93m4U3t86XzrZb19Ittmy0tXn1 7yEEiovYPU282L94TG5bs9Tolq

kiQ4+XBsUseLe0MJq6ePZxaPWVtRrVDdjrzB84HL3whyH+TO8d 2svMhNCFr648YJof2eFrxb8OQR

CtjOCisG/CBvvSfjXMb1g5Gm0S/kg+eoNifLkysLwn907EweSn3xjnT4Maib9ZhBsVrdyNyMb7vl

hCasP/WDF/idUAZ+vLGOHmyg+LshK7yb3zkDXDX1rqM+9O1ep1QOu27droXv 2MtOP0p8g/QTRv2c

B+zPdWun5X9711wd1/LWo0dNngYuu3MmMuNcsAe1dfM9mvYa4Ou+4tFu49FrM/yy7j8Z8eIMyT/8

yOtKtr2833rZMLGwP3J9kDdRTXQyj+pWyM663qZU2H7hA7MipH PnF1bzIx+Yd/xSW75GUl6YPD7t

/b6wY2nLt77fbh8TU3NTGeRLJblM3DSMGLg/g7v583FpumzwlB8n344QDyOmJYh2S1KaUN4zzN/8

OJAAwd9Yj+9S6D9sPhkuyf9l1iOv0c/uxK5sM4pt/3Py0J/HB9cqNmnlMpefV777Yc6JqfHNLi5Y

27F1xrAuF+97n023b316Ze6vQ5KVTuePjj3zkQ5+Unrvx2/bGfmWDJ53+Yy9pYqQ2wuC+CrBhdSd

Etiquetas: correo, mail, servidores, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:17.