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.


- 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.
Comment this post