Foros del Web » Programando para Internet » PHP »

BCC en envio de mail

Estas en el tema de BCC en envio de mail en el foro de PHP en Foros del Web. Buenas! Estoy intentando que un formulario me mande una copia oculta como administrador al enviar el formulario al usuario indicado pero no hay manera... Os ...
  #1 (permalink)  
Antiguo 07/06/2011, 14:28
 
Fecha de Ingreso: junio-2011
Mensajes: 4
Antigüedad: 12 años, 10 meses
Puntos: 0
BCC en envio de mail

Buenas!

Estoy intentando que un formulario me mande una copia oculta como administrador al enviar el formulario al usuario indicado pero no hay manera... Os dejo el código a ver si me podeis hechar una manita o dar un poco de luz al tema:

Código:
<?php

require_once "include/include.php";
require_once "classes/mails.php";
require_once "classes/mail_settings.php";
require_once "classes/mail_templates.php";

global $db;
global $lng;
$info='';
$smarty = new Smarty;
$smarty = common($smarty);
$smarty->assign("lng",$lng);

// fix for nyromodal not considering the correct charset
global $appearance_settings;
header('Content-type: text/html; charset='.$appearance_settings['charset']);

if(isset($_GET['ad_id']) && is_numeric($_GET['ad_id'])) $ad_id=$_GET['ad_id']; 
else 
if(isset($_POST['ContactSeller']) && $_POST['ad_id'] && is_numeric($_POST['ad_id'])) 
	$ad_id = $_POST['ad_id'];
else exit(0);

$nologin = 0;
if(isset($_GET['id']) && is_numeric($_GET['id']) && $_GET['id']) {
	$id=$_GET['id'];
}
else if(isset($_POST['ContactSeller']) && $_POST['id'] && is_numeric($_POST['id'])) {
	$id = $_POST['id'];
}
else { 
	$id=0;
	$listings = new listings;
	$nologin = $listings->isNologinAd($ad_id);
	if(!$nologin) exit(0);
}

$adss = new ads_settings;
$ads_settings = $adss->getAll();
$show_send_mail=$ads_settings["show_send_mail"];
if($show_send_mail==0) exit(0);


$tmp=array();
$error='';
if(!$nologin) {
	$users=new users();
	$username=$users->getUsername($id);
} else { 
	$listings = new listings;
	$user_info = $listings->getOwnerInfo($ad_id);
	$username = $user_info['mgm_name'];
}

if(isset($_POST['Submit']) || isset($_POST['nyroModal']) || isset($_POST['ContactSeller'])) {

	$mail_settings=new mail_settings();
	
	if(!isset($_POST['name']) || $_POST['name']=='') {

		$error.=$lng['contact']['error']['name_missing'].'<br />';

	}

	if(!isset($_POST['email']) || $_POST['email']=='' ) {

		$error.=$lng['contact']['error']['email_missing'].'<br />';

	} else if(!validator::valid_email($_POST['email'])) {

		$error.=$lng['contact']['error']['invalid_email'].'<br />';

	}

	if(!isset($_POST['comments']) || $_POST['comments']=='' ) {

		$error.=$lng['contact']['error']['comments_missing'].'<br />';

	}

	if($settings['contact_captcha'] && (!isset($_POST['number']) || md5($_POST['number']) != $_SESSION['image_value']) ) {
		
		$error.=$lng['contact']['error']['invalid_validation_number'].'<br />';

	}

	if($error=='') {

		if(!$nologin) {
			$useremail=$users->getEmail($id);
			$name=$users->getContactName($id);
		} else {
			//$listings = new listings;
			//$user_info = $listings->getOwnerInfo($ad_id);
			$useremail = $user_info['mgm_email'];
			$name = $user_info['mgm_name'];

		}

		$mail = new mails($useremail, $name, clean($_POST['email']), clean($_POST['name']));

		$templates=new mail_templates();
		$mail_array=$templates->getVal("mailto");

		global $config_live_site;
		$mail_settings_cl=new mail_settings(); $mails_settings=$mail_settings_cl->getAll();
		$html_mails=$mails_settings["html_mails"];

		$ad_title = listings::getTitle($ad_id);
		$url_title = _urlencode($ad_title);
		global $seo_settings;
		if($seo_settings['enable_mod_rewrite']) {
			$lnk=$config_live_site."/".$ad_id."-".$url_title."/details.html";
		}
		else $lnk=$config_live_site.'/details.php?id='.$ad_id;

		if($html_mails) $lnk = '<a href="'.$lnk.'">'.$lnk.'</a>';

		// -------- create mail content -----------
		$smarty_mail = new Smarty;
		$smarty_mail = smartyShowDBVal($smarty_mail);
		$smarty_mail->assign("value", $mail_array['content']);

		if(!$nologin) $smarty_mail->assign("username", $username);
		else $smarty_mail->assign("username", $name);
		$smarty_mail->assign("sender_name", clean($_POST['name']));
		$smarty_mail->assign("sender_email", clean($_POST['email']));
		$smarty_mail->assign("ad_link", $lnk);
		$smarty_mail->assign("title", $ad_title);
		$smarty_mail->assign("message", nl2br(clean($_POST['comments'])));
		$mail_content = $smarty_mail->fetch("db_template.html");

		$mail->setMessage($mail_content);

		$smarty_mail->assign("value", $mail_array['subject']);
		$mail_subject = $smarty_mail->fetch("db_template.html");

		$mail->setSubject($mail_subject);


		if($mail->send()) $info=$lng['contact']['message_sent'];
		else $info=$lng['contact']['sending_message_failed'];

		}  else {
			if(isset($_POST['name'])) $tmp['name'] = clean($_POST['name']); else $tmp['name']='';
			if(isset($_POST['email'])) $tmp['email'] = clean($_POST['email']); else $tmp['email']='';
			if(isset($_POST['comments'])) $tmp['comments'] = clean($_POST['comments']); else $tmp['comments']='';
		}
		if(isset($_POST['ContactSeller'])) { echo $error."|".$info; exit(0); }

}

$smarty->assign("id",$id);
$smarty->assign("ad_id",$ad_id);
$smarty->assign("username",$username);

$smarty->assign("tmp", $tmp);
$smarty->assign("error", $error);
$smarty->assign("info",$info);

$db->close();
if($db->error!='') { $db_error = $db->getError(); $smarty->assign('db_error',$db_error); }

$smarty->display('mailto.html');
close();
?>

Ese es el código pero, como digo, he probado ya varias cosas y nada, no hay forma de que me mande la copia oculta.

Alguién me hecha un poco de luz al tema?

Gracias!
  #2 (permalink)  
Antiguo 07/06/2011, 14:31
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 3 meses
Puntos: 209
Respuesta: BCC en envio de mail

yo lo hago asi

$denombre = "Selecciones Cuyo";
$deemail = $mailAdmin;
$sfrom = $mailAdmin; //cuenta que envia
//$sBCC=""; //copia oculta
//$sCC=""; //copia de correo

$sdestinatario=$email; //cuenta destino
$ssubject="asunto";

$shtml="texto del correo";

$encabezados = "MIME-Version: 1.0\n";
$encabezados .= "Content-type: text/html; charset=iso-8859-1\n";
$encabezados .= "From: $denombre <$deemail>\n";
$encabezados .= "X-Sender: <$sfrom>\n";
$encabezados .= "BCC: <$sBCC>\n"; //aqui fijo el BCC
$encabezados .= "CC: <$sCC>\n"; //aqui fijo el CC
$encabezados .= "X-Mailer: PHP\n";
$encabezados .= "X-Priority: 1\n"; // fijo prioridad
$encabezados .= "Return-Path: <$sfrom>\n";


@mail($sdestinatario, $ssubject, $shtml, $encabezados);

dime si te funciona
  #3 (permalink)  
Antiguo 07/06/2011, 14:44
 
Fecha de Ingreso: junio-2011
Mensajes: 4
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: BCC en envio de mail

Porque si cambiase:

$mail = new mails($useremail, $name, clean($_POST['email']), clean($_POST['name']));

Por:

$mail = new mails($useremail, $name, clean($_POST['email']), clean($_POST['name']), 'MI_MAIL');


No deberia funcionar también?

Eso que me has comentado tu lo veo un poco complicado ya que no he encontrado tus variables en el codigo que tengo yo.


Saludos
  #4 (permalink)  
Antiguo 07/06/2011, 14:49
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 3 meses
Puntos: 209
Respuesta: BCC en envio de mail

$destinatario = a quien va dirigido
y $mailAdmin es quien lo envia
  #5 (permalink)  
Antiguo 07/06/2011, 14:53
 
Fecha de Ingreso: junio-2011
Mensajes: 4
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: BCC en envio de mail

Acabo de probar esto pero no funciona:

if($error=='') {

if(!$nologin) {
$useremail=$users->getEmail($id);
$name=$users->getContactName($id);
$sBCC="MI_MAIL"; //copia oculta
} else {
//$listings = new listings;
//$user_info = $listings->getOwnerInfo($ad_id);
$useremail = $user_info['mgm_email'];
$name = $user_info['mgm_name'];

}

$encabezados .= "BCC: <$sBCC>\n"; //aqui fijo el BCC

$mail = new mails($useremail, $name, clean($_POST['email']), clean($_POST['name']), $encabezados);
  #6 (permalink)  
Antiguo 07/06/2011, 14:54
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 3 meses
Puntos: 209
Respuesta: BCC en envio de mail

bueno eso no fue lo que te dije que probaras
  #7 (permalink)  
Antiguo 07/06/2011, 15:01
 
Fecha de Ingreso: junio-2011
Mensajes: 4
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: BCC en envio de mail

Cita:
Iniciado por iviamontes Ver Mensaje
$destinatario = a quien va dirigido
y $mailAdmin es quien lo envia
Pero el destinatario es variable dependiendo del usuario que haya publicado el anuncio, eso lo recupera con:

Código:
if($error=='') {

		if(!$nologin) {
			$useremail=$users->getEmail($id);
			$name=$users->getContactName($id);
		} else {
			//$listings = new listings;
			//$user_info = $listings->getOwnerInfo($ad_id);
			$useremail = $user_info['mgm_email'];
			$name = $user_info['mgm_name'];

		}
O eso entiendo yo y el remitente es el mismo siempre, únicamente quiero que se mande el BCC al enviar el formulario.

Etiquetas: envio, mail
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 18:11.