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