Foros del Web » Programando para Internet » PHP » CodeIgniter »

Enviar mail

Estas en el tema de Enviar mail en el foro de CodeIgniter en Foros del Web. Hola! En un CRUD de clientes quisiera agregar un botón (además del editar y eliminar) que cuando haga click se envíe a dicho cliente un ...
  #1 (permalink)  
Antiguo 25/02/2013, 15:28
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Enviar mail

Hola!

En un CRUD de clientes quisiera agregar un botón (además del editar y eliminar) que cuando haga click se envíe a dicho cliente un mail con su usuario y contraseña.

Aquí estaría agregando el botón en mi controlador

Código PHP:
$crud->add_action('Enviar''''pendientes/pendientes_v/copyrows''ui-icon-plus'); 

aquí la función dentro de mi controlador

Código PHP:
  function copyrows($id)
    {    
    
$this->load->model('email_model''email');
    
$this->email($id);
    } 

y para el modelo teniendo en cuenta un ejemplo que hay en la ayuda de codeigniter, armé algo así:

Código PHP:
class Email_model extends CI_Controller
{  
     
$this->load->library('email');

    
$this->email->from('[email protected]''Demo');
    
$this->email->to('[email protected]'); // esto tendría que ser una variable que no se como llamarla
    
    
$this->email->subject('Email Test');
    
$this->email->message('Testing the email class.');    
    
    
$this->email->send();
    
    echo 
$this->email->print_debugger();


pero en $this->email->to necesito que sea una variable porque va a corresponder según el cliente que elija y otra cosa es que no se como agregar el campo usuario y clave para que le llegue dentro del cuerpo del correo.

Espero puedan ayudarme, desde ya muchas gracias!
__________________
Saludos!!!
Maru.-
  #2 (permalink)  
Antiguo 01/03/2013, 15:11
Avatar de patriciomase  
Fecha de Ingreso: abril-2012
Ubicación: Mar del Plata
Mensajes: 323
Antigüedad: 12 años
Puntos: 34
Respuesta: Enviar mail

La "variable" que dices yo la buscaría de la base de datos pasando solo el id.

ej: en la funcion de la controladora que envia el mail:

la llamas por ejemplo asi: www. misitio.com /usuarios /enviarmail / 35 <--- el nro es el id de usuario
Código PHP:
Ver original
  1. public function enviarmail(){
  2. $id = $this->uri->segment(3)    // el segmento que trae el dato
  3.  
  4. $user = $this->db->usuarios_model->selectUsuarioById($id);  // traes el usuario por su id con mail y lo que sea
  5.  
  6. ...
  7.  
  8. y de aqui ya supuestamente tienes el dato. en $user->email
  9.  
  10. }

se entendió ?? no es dificil
  #3 (permalink)  
Antiguo 13/03/2013, 20:26
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: Enviar mail

gracias por responder patriciomase!

buscando algunos ejemplos, modifiqué unas cosas, pero aún así me da error
Fatal error: Call to undefined method Pendientes::load_model() in /home/oscar/public_html/crud/application/controllers/pendientes.php on line 66


el código me quedó así

Código PHP:
// este es el boton que haría la operación del envío
   $crud->add_action('Enviar', '', 'pendientes/pendientes_v/copyrows', 'ui-icon-plus');

// esta es la función 

function copyrows($id)
    {
   $this->load->model('standby_model', 'standby');    
   $this->load_model('Client_Model', 'Client');
   $this->load->model('customer_model', 'customers');
   
   $clientInfo = $this->Client->getInfo($cliente_id);

   $this->load->library('email'); 
   
   $this->email->from('[email protected]', 'Demo'); 
   $this->email->to($clientInfo['email']);  
       
   $this->email->subject('Email Test'); 
   $this->email->message('Hola tu usuario es ' . $clientInfo['email'] . ' y tu contraseña es ' . $clientInfo['clave']);     
       
   $this->email->send(); 
       
   echo $this->email->print_debugger();
   
   $this->customers->insert($id); // copia ese cliente en otra tabla
   
   $this->standby->delete($id); // borra ese cliente de la tabla actual
    }


//cliente_model
// los mails seran enviados a cada uno de ellos, por ej. la tabla es
juan | [email protected] | ENVIAR
josé | [email protected]    | ENVIAR

es decir que el mail será enviado al respectivo cliente.

<?php

class Cliente_Model extends CI_Model{

public function 
getInfo($client_id){
return array(
    
'email' => '[email protected]',
    
'username' => 'usuario',
    
'password' => 'QWERTY');
}
}
__________________
Saludos!!!
Maru.-
  #4 (permalink)  
Antiguo 14/03/2013, 21:19
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: Enviar mail

Avancé algo...
así tengo mi controlador ahora

Código PHP:
function copyrows($id)
    {    
    
$this->load->model('cliente_model''client');
    
    
$clientInfo $this->client->getInfo($cliente_id);    
    
    
$this->email->from('[email protected]''Demo'); 
    
$this->email->to($clientInfo['email']);  
        
    
$this->email->subject('Email Test'); 
    
$this->email->message('Hola tu usuario es ' $clientInfo['email'] . ' y tu contraseña es ' $clientInfo['clave']);     
        
    
$this->email->send(); 
        
    echo 
$this->email->print_debugger();    
        
    } 
y el modelo

Código PHP:
class Cliente_Model extends CI_Model{

public function 
getInfo($client_id){
   return 
$this->db->array('email' => $email,'clave' => $clave);

}

probando return $this->db->array('email' => '[email protected]','clave' => $clave); recibo el correo, no está funcionando con las variables
__________________
Saludos!!!
Maru.-
  #5 (permalink)  
Antiguo 18/03/2013, 17:39
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: Enviar mail

El problema lo estoy teniendo porque no tengo las variables definidas, al recibir null no está llegando el email

errores

A PHP Error was encountered
Severity: Notice
Message: Undefined variable: email
Filename: models/cliente_model.php
Line Number: 9

A PHP Error was encountered
Severity: Notice
Message: Undefined variable: clave
Filename: models/cliente_model.php
Line Number: 9


no encuentro la vuelta de cómo definirlas de forma correcta, tendría que ser dentro de mi modelo?

Espero me puedan ayudar, gracias!
__________________
Saludos!!!
Maru.-
  #6 (permalink)  
Antiguo 20/03/2013, 08:57
Avatar de Hiruma-Sama  
Fecha de Ingreso: agosto-2007
Ubicación: Floresta, Buenos Aires, Argentina.
Mensajes: 234
Antigüedad: 16 años, 8 meses
Puntos: 5
Respuesta: Enviar mail

quizás en el método getInfo, tendrías que tener algo por el estilo:

$query = $this->db->get('nombre_de_tabla', $client_id);

no estoy seguro de la sintaxis, pero digamos es una idea, pensá que tu dato es el ID, y que en base a eso vas a obtener un row/fila, con los datos del usuario que estas buscando, y eso es lo que vas a devolver con el modelo.
  #7 (permalink)  
Antiguo 25/06/2013, 19:43
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: Enviar mail

Estuve modificando algunas cosas

El MODELO me quedó así:

Código PHP:
class Cliente_Model extends CI_Model{
 
public function 
getInfo($id){

    
$this->db->select('*');
    
$this->db->from('pendientes');

    
$query $this->db->get();        

    if(
$query->num_rows() > 0)
    {
        foreach (
$query->result_array() as $row)
        {
            return 
$row['email'];
        }
    }
    else
    {
        return 
FALSE;
    }
}

y el CONTROLADOR


Código PHP:
        $this->load->model('cliente_model''client');
        
        
$clientInfo $this->client->getInfo($id);        

        
$this->email->from('[email protected]''Demo'); 
        
$this->email->to($clientInfo);  
             
        
$this->email->subject('Email Test'); 
        
$this->email->message('Hola tu usuario es '.$clientInfo.' y tu contraseña es '.$clave);   
             
        
$this->email->send(); 

Logro recibir los mails, probé con varias cuentas, pero dentro del mensaje necesito que llegue la contraseña y no se como capturarla desde el modelo, me podrían ayudar con eso?
__________________
Saludos!!!
Maru.-
  #8 (permalink)  
Antiguo 03/07/2013, 12:18
 
Fecha de Ingreso: junio-2010
Mensajes: 153
Antigüedad: 13 años, 10 meses
Puntos: 4
Respuesta: Enviar mail

El problema es que estas devolviendo solamente el email de la consulta.

Supongo que la contraseña la tenes en la tabla "pendientes", entonces tu código quedaría:


Model:

Cita:
class Cliente_Model extends CI_Model{

public function getInfo($id){

$this->db->select('*');
$this->db->from('pendientes');

$query = $this->db->get();

if($query->num_rows() > 0)
{
foreach ($query->result_array() as $row)
{
return $row;
}
}
else
{
return FALSE;
}
}
}

Y el Controlador:

Cita:

$this->load->model('cliente_model', 'client');

$clientInfo = $this->client->getInfo($id);

$this->email->from('[email protected]', 'Demo');
$this->email->to($clientInfo['email']);

$this->email->subject('Email Test');
$this->email->message('Hola tu usuario es '.$clientInfo["usuario"].' y tu contraseña es '.$clientInfo["contraseña"]);

$this->email->send();

Si entendi bien y los campos usuario, contraseña y email estan en la tabla "pendientes", entonces, esto te deberia funcionar.


Cualquier cosa, estoy para ayudarte.
Saludos.
  #9 (permalink)  
Antiguo 05/07/2013, 09:52
 
Fecha de Ingreso: enero-2013
Mensajes: 55
Antigüedad: 11 años, 3 meses
Puntos: 1
Respuesta: Enviar mail

Digo yo la contrasenya estara cifrada?
Entonces

Podrias generar la contraseña asi:
Código PHP:
<? 
$str 
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
$cad "";
for(
$i=0;$i<12;$i++) {
$cad .= substr($str,rand(0,62),1);
}

$cad//contraseña
?>
Hacer un update y enviarla en el email.

Si lo que quieres es coger la que hay en la base de datos no devuelvas solo el emial devuelbe el resultado entero.
  #10 (permalink)  
Antiguo 12/07/2013, 03:02
Avatar de Rodrigo_01  
Fecha de Ingreso: enero-2005
Mensajes: 61
Antigüedad: 19 años, 3 meses
Puntos: 6
Respuesta: Enviar mail

Respondo por que no le han dado respuestq, dejame ayudar al compañero y a los proximos que entren:


Código PHP:
//Codigo del Modelo
class Cliente_Model extends CI_Model
  
    public function 
getInfo($id NULL){ 

        if(
$id!=NULL){
            
$this->db->select('*'); 
            
$this->db->from('pendientes'); // tabla donde esta la info
            
$this->db->where('id',$id); // nos traemos el registro con que tenga el $id

            
return $this->db->get()->row(); // regresamos el record encontrado
        
}
        else{
            
//encaso de que sea NULL regresamos false
            
return false;
        }        

    } 


Código PHP:
//Codigo del Controlador

$this->load->model('cliente_model''client'); 
         
$clientInfo $this->client->getInfo($id);         

$this->email->from('[email protected]''Demo');  
$this->email->to($clientInfo->email);   
      
$this->email->subject('Email Test');  
$this->email->message('Hola tu usuario es '.$clientInfo->email.' y tu contraseña es '.$clientInfo->clave);    
      
$this->email->send(); 

Etiquetas: 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 15:55.