Dot.Blog

C#, XAML, Xamarin, UWP/Android/iOS

Xamarin.Forms Envoyer des pièces jointes avec un email

Créer des mails depuis une App est chose assez aisée, mais envoyer une pièce jointe ne l’était pas jusqu’il y a peu. Mais c’est désormais réglé !

Xamarin.Essentials, toujours

Un temps en mode expérimental et désormais accessible naturellement c’est bien entendu dans les Xamarin.Essentials qu’encore une fois nous allons trouver notre bonheur !

L’API est très simple et nous n’allons pas y rester des heures.

Ce qui compte c’est de savoir que désormais c’est possible, et de voir comment le faire.

Poster un mail avec une pièce jointe générée à la volée

L’exemple le plus simple consiste à créer nous-mêmes la pièce jointe, par exemple en écrivant un fichier texte avant de le joindre au courriel à envoyer :

private async void Button_OnClicked(object sender, EventArgs e)
        {
            var message = new EmailMessage
            {
                Subject = "Hello",
                Body = "World",
            };

           var fn = "Attachment.txt";
            var file = Path.Combine(FileSystem.CacheDirectory, fn);
            File.WriteAllText(file, "Hello World");

           message.Attachments.Add(new EmailAttachment(file));

           await Email.ComposeAsync(message);
        }


Rien de bien spécial dans tout ça, une fois qu’on a bien entendu placé un USING des Xamarin.Essentials !

Le message est créé, un fichier texte contenant “Hello World” est créé puis il est ajouté en tant que pièce jointe.

Enfin ComposeAsync(message) se débrouille pour trouver une application installée qui sait gérer les courriels… Selon les Apps installées sur votre smartphone vous aurez le choix entre Gmail, Drive, et certainement d’autres Apps.

Facile, réglé en quelques lignes, mais bien utile pour offrir un service de suivi ou de remontée d’incident aux utilisateurs par exemple !

Partager des données sous forme de fichier

Puisque que nous y sommes et que cela fonctionne grâce à la même librairie et de façon très similaire occupons-nous de savoir comment partager des données avec d’autres Apps installées sur la machine…

Là encore les choses vont être simplifiées à l’extrême grâce aux Xamarin.Essentials. Et ici aussi pour simplifier nous allons créer un fichier texte qui sera le fichier à partager :

private async void Button_OnClicked(object sender, EventArgs e)
         {
             var fn = "Attachment.txt";
             var file = Path.Combine(FileSystem.CacheDirectory, fn);
             File.WriteAllText(file, "Hello World");

            await Share.RequestAsync(new ShareFileRequest
             {
                 Title = Title,
                 File = new ShareFile(file)
             });
         }

Même principe… Les Apps affichées par l’OS seront différentes bien entendu puisqu’il ne s’agit plus d’un courriel mais d’un fichier et que son type MIME sera déduit pour filtrer les applications qui savent le gérer. De base dans l’émulateur on obtiendra un choix de ce type :

image

Le choix sera d’autant plus large qu’il y a d’Apps installées et que le type du fichier partagé sera connu… Sinon il se peut qu’il n’y ait pas grand-chose (en dehors de Gmail et Drive qui prennent tout ce qui vient).

Conclusion

Oui c’est simple. Heureusement… Ce sont des fonctions vitales pour une App moderne. Et puis surtout c’est simple car il y a le gros travail des bénévoles sur Xamarin.Essentials qui est devenu tellement indispensable qu’il est aujourd’hui installé par défaut dans tout projet Xamarin.Forms !

Je ne l’ai pas montré puisque c’est automatique mais nous aurions pu utiliser une image, un fichier Excel, etc, tout aurait été identique. Seules les Apps montrées pour le partage auraient été différentes.

Ce sont parfois les petites facilités de ce genre qui font toute la différence pour l’utilisateur, pensez-y. Et …

Stay Tuned !

Faites des heureux, partagez l'article !
blog comments powered by Disqus