Foros del Web » Programando para Internet » PHP »

Mandar mail con adjunto

Estas en el tema de Mandar mail con adjunto en el foro de PHP en Foros del Web. Que tal foreros? Tuve unos problemas con un servidor en Windows el cual no tiene servidor SMTP por lo que estuve buscando y aca mismo ...
  #1 (permalink)  
Antiguo 31/03/2011, 19:23
 
Fecha de Ingreso: diciembre-2005
Ubicación: Mar del Plata
Mensajes: 146
Antigüedad: 18 años, 4 meses
Puntos: 2
Mandar mail con adjunto

Que tal foreros? Tuve unos problemas con un servidor en Windows el cual no tiene servidor SMTP por lo que estuve buscando y aca mismo en forosdelweb encontre un codigo que me permite mediante PHP Mailer utilizar un servidor SMTP diferente a donde esta alojada la pagina.

Hasta ahi perfecto, envia mails sin ningun problema, lo unico que necesito adjuntar un archivo y aunque siga las directivas que aparecen en PHP Mailer y todo lo que pude investigar, solo puedo attachear el archivo si se encuentra alojado en el servidor, si viene desde un formulario multipart/formdata no funciona.

aca les dejo el codigo a ver si alguien me hecha una manito (las partes en negrita son las que agregué para el adjunto):

EDITO PARA AVISAR QUE LAS NEGRITAS DENTRO DE CODIGO NO FUNCIONAN Y LO QUE YO HE AGREGADO SE ENCUENTRA ENTRE ETIQUETAS [B ]

Código PHP:
function SendMAIL($para,$subject,[B]$adjunto[/B],$body,$altbody,$mailFROM,$mailNameCompany,){ 
require 
"../includes/class.phpmailer.php"

[
B]$varname $_FILES["archivo"]["name"];
$vartemp $_FILES["archivo"]["tmp_name"];[/B]

$mail = new phpmailer(); 
$mail->PluginDir "../includes/"
$mail->Mailer "smtp"
$mail->Host "mail.dominio.com"# Editar el Host smtp 
$mail->SMTPAuth true
$mail->Username "[email protected]"# editar el usuario 
$mail->Password "psw"# Editar el password 
$mail->From $mailFROM
$mail->FromName $mailNameCompany
$mail->Subject $subject
$email $para
[
B]$mail->AddAttachment($vartemp$varname) = $adjunto;[/B]
$body $body
$mail->Body $body
$mail->AltBody $altbody
$mail->Timeout=20
$mail->AddAddress($email);
$exito $mail->Send(); 
     
$intentos=1;  
       while((!
$exito)&&($intentos<5)&&($mail->ErrorInfo!="SMTP Error: Data not accepted")){ 
       
sleep(5); 
            
$exito $mail->Send(); 
            
$intentos=$intentos+1;                 
       } 
 
    if (
$mail->ErrorInfo=="SMTP Error: Data not accepted") { 
       
$exito=true
        } 
return 
$exito
}  


$variables $_POST["variables"];

$para "[email protected]"
$subject "Web"

$altbody ""


$body ""


$mailNameCompany $nombre
$mailFROM $mail
[
B]$adjunto $varname;[/B]

if(
SendMAIL($para,$subject,[B]$adjunto[/B],$body,$altbody,$mailFROM,$mailNameCompany)){ 
header("Location: "); 

else{ 
header("Location: "); 


Ojalá alguien pueda ayudar, muchas gracias!
__________________
Me gusta mucho ver Videos de carros en internet :)
  #2 (permalink)  
Antiguo 01/04/2011, 01:32
Avatar de gogupe  
Fecha de Ingreso: octubre-2006
Ubicación: Mallorca
Mensajes: 897
Antigüedad: 17 años, 6 meses
Puntos: 32
Respuesta: Mandar mail con adjunto

Hola, aquí hay un buen manual sobre la Phpmailer.
http://www.programacion.com/articulo..._phpmailer_213
  #3 (permalink)  
Antiguo 01/04/2011, 07:52
 
Fecha de Ingreso: diciembre-2005
Ubicación: Mar del Plata
Mensajes: 146
Antigüedad: 18 años, 4 meses
Puntos: 2
Respuesta: Mandar mail con adjunto

Gracias, pero no soluciona mis dudas.
__________________
Me gusta mucho ver Videos de carros en internet :)
  #4 (permalink)  
Antiguo 01/04/2011, 09:51
 
Fecha de Ingreso: diciembre-2005
Ubicación: Mar del Plata
Mensajes: 146
Antigüedad: 18 años, 4 meses
Puntos: 2
Respuesta: Mandar mail con adjunto

Pude solucionarlo despues de varios intentos, le dejo el codigo a quien lo ande buscando, es fundamental para quien no tenga la funcion mail() activada en el servidor, seleccionando cualquier servidor SMTP (mail.cualquierdominio.com) puede enviar correctamente y tambien añadir un adjunto. En este caso el formulario lo necesitaba para el envio de curriculums a travez de la web, asi que les dejo el ejemplo completo para que lo adapten a lo que quieran

Código PHP:
<?php
$archivo 
$_FILES["archivo"]["name"];
$archivo_name $_FILES["archivo"]["tmp_name"];
$dir "../cv/$archivo";
chmod("cv",0777);
copy($_FILES["archivo"][tmp_name], $dir);

function 
SendMAIL($para,$subject,$body,$altbody,$mailFROM,$mailNameCompany){ 
$archivo $_FILES["archivo"]["name"];
require 
"../includes/class.phpmailer.php"
$mail = new phpmailer(); 
$mail->PluginDir "../includes/"
$mail->Mailer "smtp"
$mail->Host "mail.cualquierdominio.com"# Editar el Host smtp 
$mail->SMTPAuth true
$mail->Username "usuario"# editar el usuario 
$mail->Password "password"# Editar el password 
$mail->From $mailFROM
$mail->FromName $mailNameCompany
$mail->Subject $subject
$email $para
$body $body
$mail->AddAttachment("../cv/".$archivo);
$mail->Body $body
$mail->AltBody $altbody
$mail->Timeout=20
$mail->AddAddress($email); 
$exito $mail->Send(); 
     
$intentos=1;  
       while((!
$exito)&&($intentos<5)&&($mail->ErrorInfo!="SMTP Error: Data not accepted")){ 
       
sleep(5); 
            
$exito $mail->Send(); 
            
$intentos=$intentos+1;                 
       } 
 
    if (
$mail->ErrorInfo=="SMTP Error: Data not accepted") { 
       
$exito=true
        } 
return 
$exito
}  

$nombre $_POST["nombre"];
$edad $_POST["edad"];
$mail $_POST["mail"];
$telefono $_POST["telefono"];
$puesto $_POST["puesto"];
$archivo $_FILES["archivo"]["name"];

$para "[email protected]"
$subject $nombre" envio su CV"

$altbody "
Nombre: "
.$nombre."
Email: "
.$mail."
Edad: "
.$edad."
Telefono: "
.$telefono."
Se postula para: "
.$puesto."
"



$body "
<strong>Nombre:</strong> "
.$nombre."<br />
<strong>Email:</strong> "
.$mail."<br />
<strong>Edad:</strong> "
.$edad."<br />
<strong>Telefono:</strong> "
.$telefono."<br />
<strong>Se postula para:</strong> "
.$puesto."<br />
"



$mailNameCompany $nombre
$mailFROM $mail

if(
SendMAIL($para,$subject,$body,$altbody,$mailFROM,$mailNameCompany)){ 
header("Location: ../curriculum.php?mail=enviado"); 

else{ 
header("Location: ../curriculum.php?mail=rechazado"); 

?>

Saludos amigos!
__________________
Me gusta mucho ver Videos de carros en internet :)

Etiquetas: mail, mandar, adjuntos
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 01:55.