Buscar..


Observaciones

En CodeIgniter 3 tienes que incluir el parámetro:

$config['newline'] = "\r\n";

Simplemente no funcionará sin él.

Si no le importan las nuevas líneas y está utilizando CodeIgniter 2, este parámetro de configuración es opcional.

Cargar la biblioteca de correo electrónico

Primero necesitas cargar la biblioteca de correo electrónico.

Haga esto en el archivo del controlador que enviará el correo electrónico:

$this->load->library('email');

O cárguelo globalmente en el archivo autoload.php en la carpeta de configuración:

$autoload['libraries'] = array('email');

Mientras esté allí, es posible que desee cargar el asistente de correo electrónico si desea utilizar algunos de los accesos directos incorporados de CodeIgniter:

$autoload['helper'] = array('email');

El asistente de correo electrónico se puede cargar en el archivo del Controlador de manera similar a la biblioteca de correo electrónico:

$this->load->helper('email');

Establezca sus parámetros de configuración de correo electrónico

Cree un nuevo archivo en la carpeta application / config llamada email.php

Establecer los parámetros para el envío de correo electrónico. Estos se cargarán cuando envíe su correo electrónico.

$config['newline'] = "\r\n"; //You must use double quotes on this one
$config['protocol'] = 'smtp';
$config['smtp_host'] = 'ssl://smtp.gmail.com'; //Change for your specific needs
$config['smtp_port'] = 465; //Change for your specific needs
$config['smtp_user'] = '[email protected]'; //Change for your specific needs
$config['smtp_pass'] = 'yourpassword'; //Change for your specific needs
$config['charset'] = 'iso-8859-1';
$config['mailtype'] = 'text'; //This can be set as 'html' too

Crea tu correo electrónico

$this->email->from('[email protected]', 'Tom Webmaster');
$this->email->to('[email protected]', 'Freddie Fakeperson');
$this->email->subject('Your Account Is Active');
$this->email->message('Welcome to our new site!');

En el método 'desde', el primer parámetro es la dirección de correo electrónico desde la que está enviando, el segundo parámetro es el nombre que desea que el receptor vea.

En el método 'a', usted define a quién se envía el correo electrónico.

El método 'asunto' define el asunto del correo electrónico.

El método de 'mensaje' define lo que estará en el cuerpo de su correo electrónico.

Cualquiera de estos podría ser un dato que un usuario envió a su sitio. Así que puede tener una variable aquí que contiene datos publicados. Para que se vean más como esto:

$this->email->to($email, $username);

Envía tu e-mail

$sent = $this->email->send();


//This is optional - but good when you're in a testing environment.
if(isset($sent)){
    echo "It sent!";
}else{
    echo "It did not send.";
}

Enviar un correo electrónico HTML

Pero no solo quieres un correo electrónico de texto plano. Quieres un bonito email en html.

Establece tu archivo de configuración como html:

$config['mailtype'] = 'html';

Si desea pasar datos (como un nombre de usuario, por ejemplo) al correo electrónico html, colóquelos en una matriz:

$data = array('name' => $name, 
              'email' => $email,
              'phone' => $phone,
              'date' => $date);

Luego, al enviar, apunte su 'mensaje' a una vista. Luego pasa tu matriz de datos a ella:

$this->email->message($this->load->view('new_user',$data, true));

En su carpeta de aplicación / vista cree su vista.

En este caso se llama 'new_user.php'.

Puedes peinar esto de cualquier manera que quieras. Aquí hay un ejemplo rápido:

<html>
<head>
    <style type='text/css'>
        body {background-color: #CCD9F9;
             font-family: Verdana, Geneva, sans-serif}

        h3 {color:#4C628D}

        p {font-weight:bold}
    </style>
</head>
<body>

    <h3>Hi <?php echo $name;?>,</h3>
    <h3>Thanks for contacting us.</h3> 

    <p>You've taken your first step into a larger world.</p>   
    <p>We really appreciate your interest.</p>

</body>
</html>

Formulario de contacto

Controlador (Pages.php)

public function contact()
{
    
    $this->load->library('email');
    $this->load->library('form_validation');

    //Set form validation
    $this->form_validation->set_rules('name', 'Name', 'trim|required|min_length[4]|max_length[16]');
    $this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email|min_length[6]|max_length[60]');
    $this->form_validation->set_rules('message', 'Message', 'trim|required|min_length[12]|max_length[200]');

    //Run form validation
    if ($this->form_validation->run() === FALSE)
    {
        $this->load->view('contact');
    } else {

        //Get the form data
        $name = $this->input->post('name');
        $from_email = $this->input->post('email');
        $subject = $this->input->post('subject');
        $message = $this->input->post('message');

        //Web master email
        $to_email = '[email protected]'; //Webmaster email, who receive mails

        //Mail settings
        $config['protocol'] = 'smtp';
        $config['smtp_host'] = 'ssl://smtp.gmail.com';
        $config['smtp_port'] = '465';
        $config['smtp_user'] = '[email protected]'; // Your email address
        $config['smtp_pass'] = 'mailpassword'; // Your email account password
        $config['mailtype'] = 'html'; // or 'text'
        $config['charset'] = 'iso-8859-1';
        $config['wordwrap'] = TRUE; //No quotes required
        $config['newline'] = "\r\n"; //Double quotes required

        $this->email->initialize($config);                        

        //Send mail with data
        $this->email->from($from_email, $name);
        $this->email->to($to_email);
        $this->email->subject($subject);
        $this->email->message($message);
        
        if ($this->email->send())
        {
            $this->session->set_flashdata('msg','<div class="alert alert-success">Mail sent!</div>');

            redirect('contact');
        } else {
            $this->session->set_flashdata('msg','<div class="alert alert-danger">Problem in sending</div>');
            $this->load->view('contact');
        }

    }

Vistas (contact.php)

<div class="container">
<h2>Contact</h2>
<div class="row">
    <div class="col-lg-6">
        <?php echo $this->session->flashdata('msg'); ?>
        <form action="<?php echo base_url('contact'); ?>" method="post">
        <div class="form-group">
            <input name="name" placeholder="Your name" type="text" value="<?php echo set_value('name'); ?>" class="form-control" />
            <?php echo form_error('name', '<span class="text-danger">','</span>'); ?>
        </div>
        <div class="form-group">
            <input name="email" placeholder="Your e-mail" type="text" value="<?php echo set_value('email'); ?>" class="form-control" />
            <?php echo form_error('email', '<span class="text-danger">','</span>'); ?>
        </div>
        <div class="form-group">
            <input name="subject" placeholder="Subject" type="text" value="<?php echo set_value('subject'); ?>" class="form-control" />
        </div>
        <div class="form-group">
            <textarea name="message" rows="4" class="form-control" placeholder="Your message"><?php echo set_value('message'); ?></textarea>
            <?php echo form_error('message', '<span class="text-danger">','</span>'); ?>
        </div>
        <button name="submit" type="submit" class="btn btn-primary" />Send</button>
        </form>
    </div>
</div>


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow