Uso de la API de Mandrill con macro sc_call_api

En este tutorial vamos a estar mostrando como utilizar la macro sc_call_api con la API de Mandrill.

Nota

Para usar la API de Mandrill, debe crear una cuenta en el sitio web y obtener su clave de acceso. Más información en el sitio web de Mandrill: https://mandrillapp.com/login

Creando la aplicación de Control

1.Creamos los campos necesarios para el formulario de envio de mail.

Primeramente creamos 6 campos para la cabecera del mail.
  • api_key : Clave API de Mandrill
  • from_email : Email del Remitente
  • from_name: Nombre del Remitente
  • mail_to: Email destinatario
  • to_cc: Copia del email para otro destinatario
  • to_bcc: Copia oculta del email para otro destinatario

1.1. A continuación, tenemos que crear un campo de tipo radio para el tipo de mensaje y el asunto.

En la edición de lookup del campo de tipo Radio “msg_type” seleccionamos el metodo de lookup Manual con los valores “template” y “message

1.2. Creamos otros campos utilizados para la Seleccion del Template.

  • template_name: El nombre o slug inmutable de un modelo que existe en la cuenta del usuario.
  • template_editable: El nombre de la región editable “mcedit” para inyectar contenido en el correo electrónico.
  • template_injection: El contenido que se inyectará en el cuerpo del correo electrónico
  • msg : Campo de Edicion HTML usado para crear el cuerpo del correo

2. Ahora debemos crear un código que oculte los campos innecesarios según el tipo de Mensaje que se seleccione, y para eso crearemos el método hide_fields

Código:

if ({msg_type} == 'template') {
    sc_field_display({template_name}, 'on');
	sc_field_display({template_editable}, 'on');
	sc_field_display({template_injection}, 'on');
	sc_field_display({msg}, 'off');
} else {
    sc_field_display({template_name}, 'off');
	sc_field_display({template_editable}, 'off');
	sc_field_display({template_injection}, 'off');
	sc_field_display({msg}, 'on');
}

3. Esta función sera llamada en un evento Ajax onClick del campo msg_type y también en el evento OnLoad del Formulario Control.


4. En el evento onValidateSuccess incluiremos el siguiente código.

function explodeMail($str, $type)
{
   $arr			= explode(',', $str);
   $arr_return	= [];
   foreach ($arr as $item) {
       $arr_return[] = array(
                               'name'	=> '',
                               'type'	=> $type,
                               'email'	=> $item
                           );
   }
   return $arr_return;
}

$arr_to		= explodeMail({mail_to}, 'to');
$arr_cc		= (!empty({to_cc})) ? explodeMail({to_cc}, 'cc') : $arr_cc = array();
$arr_bcc	= (!empty({to_bcc})) ? explodeMail({to_bcc}, 'bcc') : $arr_bcc = array();

$arr_merge		= array_merge($arr_to, $arr_cc, $arr_bcc);
$txt_no_tags	= strip_tags({msg});

$var_profile	= ''; // Enter your profile if you have created it on "Tool >> API menu" or leave it blank
$var_config		= array( 'settings' => ['gateway' => 'mandrill', 'api_key'=> {api_key}] );

$mandrill = sc_call_api($var_profile, $var_config);

$template_name 		= {template_name}; // the immutable name or slug of a template that exists in the user's account.
$template_content 	= array( 
// an array of template content to send. Each item in the array should be a struct with two keys - name: the name of the content block to set the content for, and content: the actual content to put into the block
	array(
		'name'		=> {template_editable}, // the name of the mc:edit editable region to inject into
		'content'	=> {template_injection} // the content to inject
	)
);

$var_msg = array(

			   'from_email'						=> {from_email},
			   'from_name'						=> {from_name},
				'html'							=> {msg},
				'text'							=> $txt_no_tags,
				'to'							=> $arr_merge,			   
				'subject'						=> {subject},
				'important'						=> true,			
				//'attachments'					=> array('/var/www/arquivo.txt','/var/www/arquivo2.txt'),
				//'headers'						=> array('Reply-To' => 'message.reply@example.com'),
				//'track_opens'					=> null,
				//'track_clicks'				=> null,
				'auto_text'						=> null,
				'auto_html'						=> null,
				'inline_css'					=> null,
				//'url_strip_qs'				=> null,
				//'tags'						=> array('password-resets'),
				//'subaccount'					=> 'customer-123',
				//'google_analytics_domains'	=> array('example.com'),
				//'google_analytics_campaign'	=> 'message.from_email@example.com',
				'metadata'						=> array('website' => 'www.scriptcase.net')
		
				// Check another settings at https://mandrillapp.com/api/docs/messages.php.html#method=send

	);


$async = false;
//$ip_pool = 'Main Pool';
//$send_at = 'example send_at';

if( {msg_type} == 'template' ) {
	$retorno = $mandrill->messages->sendTemplate($template_name, $template_content, $var_msg, $async);
}else{
	$retorno = $mandrill->messages->send($var_msg, $async);
}

//echo"<pre>";
//print_r($retorno);
//echo"</pre>";

sc_alert({lang_othr_grid_export_email_sent});

Configurando el Layout

5. En Layout >> Bloques cree un nuevo bloque y configúrelo de acuerdo con la imagen a continuación

En Posicionamiento de los Campos lo configuramos de la siguiente manera.

6. Guarde los cambios y ejecute la Aplicación.

Para ver más ejemplos creados con Scriptcase, vaya a: Ejemplos: Sistemas completos y aplicaciones con Scriptcase.

Compartir este tutorial

Tutoriales en la misma categoria

Tutorial: Gestión de archivos en la nube

Algunos de los servicios de almacenamiento de datos están listos para leer y almacenar de forma se...

Integración con WhatsApp

Para integrar WhastApp con ScriptCase, estaremos utilizando una API en específico que se llama...

Confirmación por Correo Electrónico

En este tutorial veremos cómo crear un formulario de confirmación de registro para programar curs...

Enviar múltiples SMS con la macro sc_send_sms

En este ejemplo estaremos viendo cómo podemos crear una aplicación que nos ayude  a enviar m...

Comentar este post