Tutorial: Usando a API Mandrill com a macro sc_call_api

Neste tutorial, veremos como usar a macro sc_call_api para realizar o envio de emails utilizando a API do Mandrill.

Nota: Para usar a API do Mandrill, você deve criar uma conta no site e obter sua chave de acesso. Mais informações no site Mandrill: https://mandrillapp.com/

Criando a aplicação de Controle

1 – Crie uma aplicação do tipo Controle

2 – Devemos criar os campos necessários para o nosso formulário de envio de email. 

2.1 – Primeiramente temos os campos de cabeçalho do email

  • api_key: Chave de API do Mandrill
  • from_email: Email do remetente
  • from_name: Nome do remetente
  • mail_to: Email do destinatário
  • to_cc: Cópia do email para outro destinatário
  • to_bcc: Cópia oculta do email para outro destinatário

2.2 – Em seguida temos um campo de seleção do tipo de mensagem e o assunto.

  • msg_type: Com este campo, permitimos que o usuário utilize um template de email pré-existente em sua conta do Mandrill, ou que ele possa escrever uma mensagem nova. 

Na configuração deste campo, utilize o Tipo de dado “Radio”, e um Lookup de Edição Manual com os valores “template” e “message”.

  • subject: O assunto da mensagem. É utilizada para qualquer um dos tipos selecionado.

2.3 – Campos utilizados para seleção de Template.

  • template_name: O nome imutável ou slug de um modelo que existe na conta do usuário. 
  • template_editable: O nome da região editável “mc: edit” para injetar conteúdo no email.
  • template_injection: O conteúdo a ser injetado no corpo do email.

2.4 – Campo utilizado para a criação de nova mensagem.

  • msg: Campo de edição HTML usado para criar o corpo do email.

3 – Devemos agora, criar um código de controle que esconderá os campos desnecessários de acordo com o tipo de Mensagem que for selecionada, e para isso, criaremos o 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');
}

4 – Esta função será chamada em um evento ajax onChange do campo msg_type e também no evento onLoad do formulário.

5 – No evento OnValidateSuccess adicionaremos o seguinte 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});

Alterando o layout

6 – Em Layout>>Blocos crie um novo bloco e configure de acordo com a imagem abaixo.

7 – Em “Posicionamento dos campos”, organize os campos nos blocos.

8 – Salve e execute a aplicação.

Tutoriais na mesma categoria

Gerenciamento de Arquivos na Nuvem

Alguns dos serviços de armazenamento de dados estão prontos para ler e armazenar com segurança ...

Enviar SMS com a macro sc_send_sms

Neste exemplo, veremos como podemos criar uma aplicação que nos ajuda a enviar mensagens por mei...

Integração com WhatsApp

Para integrar o WhatsApp ao ScriptCase, estaremos utilizando uma API específica chamada Chat...

Enviar multiplos SMS com a macro sc_send_sms

Neste exemplo, veremos como podemos criar uma aplicação que nos ajuda a enviar várias mensagens...

Comente este post