
03/02/2006, 06:34
|
O_O | | Fecha de Ingreso: enero-2002 Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 23 años, 2 meses Puntos: 129 | |
Cita:
Iniciado por carlosfocus esta función dandole buen uso puede significar una herramienta muy importante.
ni se te ocurra hacer spam con este script, porque te encontrarán fácilmente te lo garantizo.
esta comentado en cada linea para que puedas estudiarlo. Código PHP: function sendmail($asunto,$mensaje,$destinatario,$destinario,$cc='',$cco='',$reply='',$formato='',$attach='')
{
$docsnames=NULL;//Definimos Variables
$fcuerpo=NULL;//Definimos Variables
if(!$formato) $formato='html'; //En caso de no estar definido el formato tomar html por defecto
if(!$attach) $attach=Array(); //En caso de que no tenga archivos adjuntos, mostrar array vacio
/* Adjuntando los Archivos al Mensaje */
while(list($campo,$valor)=each($attach))
{
if($attach[$campo]['size']!=0)
{
if(!$attach[$campo]['data']) $attach[$campo]['data']=fread(fopen($attach[$campo]['tmp_name'], "r"),$attach[$campo]['size']);
$docsnames.= "X-attachments: ".$attach[$campo]['name']."\n";
$fcuerpo .="\n--Neftali-Yaguas\n"
."Content-type: ".$attach[$campo]['type']."; name=\"".$attach[$campo]['name']."\"\n"
."Content-Transfer-Encoding: BASE64\n"
."Content-disposition: attachment; filename=\"".$attach[$campo]['name']."\"\n\n"
.chunk_split(base64_encode($attach[$campo]['data']))."\n";
}
}
/* Aplicando Cabezeras al Mensaje*/
$cabeceras = "From: ".$destinatario."\n";
if($cc)$cabeceras .= "CC: ".$cc."\n";
if($cco)$cabeceras .= "BCC: ".$cco."\n";
if($reply)$cabeceras .= "Reply-To: ".$reply."\n";
$cabeceras .= "X-Priority: 1\n"
. "X-MSMail-Priority: High\n"
. "X-Mailer: Neftali Yaguas -\"Sendmail Attach files 1.2\"- [email protected]\n"
. "Return-Path: ".$destinatario."\n"
. "MIME-version: 1.0\n"
. "Content-type: multipart/mixed; boundary=\"Neftali-Yaguas\"\n"
. "Content-transfer-encoding: 7BIT\n".$docsnames;
/* Comienzo del Cuerpo del Mensaje*/
$cuerpo= "--Neftali-Yaguas\n"
. "Content-type: text/".$formato."; charset=US-ASCII\n"
. "Content-transfer-encoding: 7BIT\n"
. "Content-description:Cuerpo de Mensaje\n\n"
. $mensaje."\n\n".$fcuerpo."--Neftali-Yaguas--\n";
/* Enviando el Mensaje*/
return mail($destinario,$asunto,$cuerpo,$cabeceras);
}
para actualizaciones acerca de la función visita: http://www.phpclasses.org/trackback/...kage/2413.html
La forma de usarlo es la siguiente:
despues de pegar el codigo anterior al principio de tu documento, (recomiendo insertarlo desde un include)
cuando vallas a enviar email usas el siguiente codigo donde esta la variable $mensaje que esta en negrita, esa es la variable que trae el mensaje completo, este script formatea en html
puedes editarlo de la siguiente manera:
para la variable adjunto, haces el siguiente proceso: Código PHP: $archivo1['name']='imagen.jpg'; //nombre del archivo
$archivo1['tmp_name']='../imagen.jpg'; //ruta del archivo
$archivo1['size']='1500'; // peso del archivo. (por defecto es el peso calculado de tmp_name
$archivo1['type']='Tipo mime del archivo'; // ejemplo: image/jpeg, text/html
$archivo1['data']='contenido del archivo'; // este solo es necesario
# si el archivo es creado desde codigo, pero si se define este no
# sara el valor de tmp_name.
Código PHP: $adjunto['Archivo1']=$archivo1;
$adjunto['Archivo2']=$archivo2;
$adjunto['...']=...; // este es un nombre cualquiera.
en caso de que los archivos adjuntos deban venir de un formulario solo hay que hacer esto: Código PHP: $adjunto=$_FILES;
[comentarios]
Está bien esta mini-función .. Pero por mi parte encuentro mejor la classe:
PHP Mailer http://phpmailer.sourceforge.net
Un saludo, |