Usando o Launcher EmailComposeTask no Windows Phone

Veja neste artigo como utilizar o EmailComposeTask, que é uma das APIs do sistema operacional, neste recurso você poderá abrir para o usuário a tela de e-mail do Windows Phone.

Launchers são bibliotecas que permitem executar determinadas tarefas sem retornar nenhuma informação para o aplicativo. O nome dado para uma dessas chamadas é Launcher. No exemplo a seguir será utilizada a classe EmailComposeTask e com a passagem correta de parâmetros, será exibida uma tela para o usuário em que ele poderá optar por enviar ou não um e-mail e qual e-mail de remetente utilizar. Então o Launcher é encerrado e o aplicativo retorna ao estado em que se encontrava.

Para isso abra o Visual Studio e inicie um novo projeto em Windows Phone 7.1.


Figura 1: Criação do projeto para Windows Phone no Visual Studio

Nesse pequeno aplicativo serão criados três templates de e-mails prontos para o envio do usuário. Sendo assim, três TextBlocks com um evento que instanciará a classe e passará como parâmetro o texto escolhido pelo usuário.

Abra o arquivo MainPage.xaml e adicione ao contentPanel um StackPanel com 450 de largura, 400 de altura, verticalmente alinhado ao topo e com um fundo cinza claro. Este StackPanel irá conter os TextBlocks para o usuário.

Listagem 1: StackPanel adicionado ao ContentPanel

<!--ContentPanel - place additional content here--> <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <StackPanel Width="450" Height="400" VerticalAlignment="Top" Background="LightGray"> </StackPanel> </Grid>

Agora adicione o primeiro TextBlock com 420 de largura e 100 de altura, cor (Foreground) preto para que o usuário não tenha dificuldade em ler ao trocar entre os temas claro e escuro, coloque o alinhamento horizontal para a esquerda e o TextWrapping, que é a quebra de linhas de acordo com o tamanho do TextBlock, para Wrap, assim o texto é adaptado de acordo com o tamanho definido.

Listagem 2: Primeiro template TextBlock adicionado ao StackPanel

<!--ContentPanel - place additional content here--> <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <StackPanel Width="450" Height="400" VerticalAlignment="Top" Background="LightGray"> <TextBlock Name="lblTemplateUm" Width="420" Height="100" Foreground="Black" HorizontalAlignment="Left" TextWrapping="Wrap" Text="Bom Dia, estou em reunião mais tarde nos encontramos." Margin="10,0,0,0" Tap="lblTemplateUm_Tap_1"/> </StackPanel> </Grid>

Agora adicione mais um template ao StackPanel, ou seja, mais um TextBlock com as mesmas definições anteriores mudando apenas o conteúdo e o nome do TextBlock.

Listagem 3: Segundo template TextBlock adicionado ao StackPanel

<!--ContentPanel - place additional content here--> <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <StackPanel Width="450" Height="400" VerticalAlignment="Top" Background="LightGray"> <TextBlock Name="lblTemplateUm" Width="420" Height="100" Foreground="Black" HorizontalAlignment="Left" TextWrapping="Wrap" Text="Bom Dia, estou em reunião mais tarde nos encontramos." Margin="10,0,0,0" Tap="lblTemplateUm_Tap_1"/> <TextBlock Name="lblTemplateDois" Width="420" Height="100" Foreground="Black" HorizontalAlignment="Left" TextWrapping="Wrap" Text="Não esquece do nosso almoço na sexta feira no village mall, lá pras 13 hrs. Abraço" Margin="10,0,0,0" Tap="lblTemplateDois_Tap_1"/> </StackPanel> </Grid>

Então, para terminar adicione o último template de e-mail para o StackPanel:

Listagem 4: Terceiro e último template adicionado ao StackPanel

<!--ContentPanel - place additional content here--> <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <StackPanel Width="450" Height="400" VerticalAlignment="Top" Background="LightGray"> <TextBlock Name="lblTemplateUm" Width="420" Height="100" Foreground="Black" HorizontalAlignment="Left" TextWrapping="Wrap" Text="Bom Dia, estou em reunião mais tarde nos encontramos." Margin="10,0,0,0" Tap="lblTemplateUm_Tap_1"/> <TextBlock Name="lblTemplateDois" Width="420" Height="100" Foreground="Black" HorizontalAlignment="Left" TextWrapping="Wrap" Text="Não esquece do nosso almoço na sexta feira no village mall, lá pras 13 hrs. Abraço" Margin="10,0,0,0" Tap="lblTemplateDois_Tap_1"/> <TextBlock Name="lblTemplateTres" Width="420" Height="100" Foreground="Black" HorizontalAlignment="Left" TextWrapping="Wrap" Text="Eu comprei 3 camisas, sendo que uma era pra você passa lá em casa para pegar depois. Beijos" Margin="10,0,0,0" Tap="lblTemplateTres_Tap_1"/> </StackPanel> </Grid>

Lembrando que cada TextBlock tem seu próprio evento para a chamada da composição do e-mail com o corpo do texto. Seu layout deve estar próximo a esse.


Figura 2: Layout da página

Agora falta o tratamento dos eventos criados. Abra o arquivo MainPage.xaml.cs, ele deve estar semelhante ao código abaixo, caso os métodos não tenham sido gerados automaticamente ao adiciona-los aos TextBlocks, escreva-os.

Listagem 5: Código da página MainPage.xaml.cs sem o tratamento nos métodos

using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using Microsoft.Phone.Controls; namespace TesteEmail { public partial class MainPage : PhoneApplicationPage { // Constructor public MainPage() { InitializeComponent(); } private void lblTemplateUm_Tap_1(object sender, GestureEventArgs e) { } private void lblTemplateDois_Tap_1(object sender, GestureEventArgs e) { } private void lblTemplateTres_Tap_1(object sender, GestureEventArgs e) { } } }

Para poder utilizar a classe EmailComposeTask você deve adicionar no início do arquivo a seguinte linha:

Listagem 6: Código de using para utilização da Classe EmailComposeTask

using Microsoft.Phone.Tasks;

A classe EmailComposeTask possui três parâmetros para serem passados. O “To” que é o e-mail de destino, o “Subject” que é o assunto do e-mail, e o “Body” que seria o corpo do e-mail. Portanto preencha-os com valores válidos e utilize o método Show para exibir ao usuário a tela de e-mail pronta para envio.

No primeiro método será utilizado o texto do TextBlock template um.

Listagem 7: Código do primeiro método de envio de template do e-mail

private void lblTemplateUm_Tap_1(object sender, GestureEventArgs e) { EmailComposeTask email = new EmailComposeTask(); email.To = "nsafatli@msn.com"; email.Subject = "Template Dois"; email.Body = lblTemplateUm.Text; email.Show(); }

No segundo método utilize o texto do template dois.

Listagem 9: Código do segundo método de envio de template do e-mail

private void lblTemplateDois_Tap_1(object sender, GestureEventArgs e) { EmailComposeTask email = new EmailComposeTask(); email.To = "nsafatli@msn.com"; email.Subject = "Template Dois"; email.Body = lblTemplateDois.Text; email.Show(); }

No último método utilize o texto do terceiro template.

Listagem 10: Código do terceiro método.

private void lblTemplateTres_Tap_1(object sender, GestureEventArgs e) { EmailComposeTask email = new EmailComposeTask(); email.To = "nsafatli@msn.com"; email.Subject = "Template Três"; email.Body = lblTemplateTres.Text; email.Show(); }

Observação: Você não poderá utilizar este Launcher no emulator, apenas no aparelho com Windows Phone.

Então execute seu aplicativo no seu device e veja o launcher em funcionamento.

Um abraço e até o próximo artigo.

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados