Enviar correos con Zend Framework 2

Como en la mayoría de Frameworks de PHP es muy sencillo enviar correos con Zend Framework 2, vamos a ver como se hace utilizando el smtp de Gmail.
En un controlador:

<?php
namespace Modulo\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;

//Componentes necesarios para enviar el correo
use Zend\Mail\Message;
use Zend\Mail\Transport\Smtp as SmtpTransport;
use Zend\Mail\Transport\SmtpOptions;

class IndexController extends AbstractActionController{

    public function indexAction(){
	$destinatario='correo@correo.com';
	$emisor='micorreo@gmail.com';
		
	//Enviar email
	$message = new Message();
	$message->addTo($destinatario)
		->addFrom($emisor)
		->setEncoding("UTF-8")
		->setSubject('Registro de usuarios correcto')
		->setBody("Hola te has registrado correctamente en mi aplicación");

		// Utilizamos el smtp de gmail con nuestras credenciales
		$transport = new SmtpTransport();
		$options   = new SmtpOptions(array(
			'name'  => 'smtp.gmail.com',
			'host'  => 'smtp.gmail.com',
			'port'  => 587,
			'connection_class'  => 'login',
			'connection_config' => array(
				'username' => 'correo@gmail.com',
				'password' => 'contraseña',
			),
		));
		$transport->setOptions($options); //Establecemos la configuración
		$transport->send($message); //Enviamos el correo
	}
}

Víctor Robles WEB

Autor: Victor

Desarrollador web - Formador online - Blogger

Compartir este post

5 Comentarios

  1. Cordial saludo Victor

    Desde el año pasado me he guiado por tus instructivos, son muy buenos. Particularmente en este me sale el siguiente error:

    5.7.0 Must issue a STARTTLS command first. 62sm16961636yhq.22 – gsmtp

    ¿De casualidad sabes a que se debe que salga este error?

    De antemano gracias por tu ayuda.

    Feliz día.

    Responder
      • Creo que se puede arreglar usando el puerto 465 y SSL para que funcione el envio con el smtp de Gmail.

        Espero que podais arreglarlo 😉

        Responder
  2. Tengo el mismo error! han logrado solucionarlo?

    Responder
  3. Saludos, buen post Victor, gracias!
    Para resolver lo del error que plantean solo hay que agregar
    ‘ssl’ => ‘tls’ en la sección ‘connection_config’ de las opciones:

    $options = new SmtpOptions([
    ‘name’ => ‘smtp.gmail.com’,
    ‘host’ => ‘smtp.gmail.com’,
    ‘port’ => 587,
    ‘connection_class’ => ‘login’,
    ‘connection_config’ => [
    ‘username’ => ‘tuusuario@gmail.com’,
    ‘password’ => ‘tupasword’,
    ‘ssl’ => ‘tls’,
    ],
    ]);

    Responder

Poner un comentario

Tu dirección de correo electrónico no será publicada.