Bonjour,
Sujet : envoi d'email avec pièce attachée sous Android.
comme je n'avais pas trouvé de post avec solution (et que je viens de trouver la soluce), je partage … merci à ceux qui m'ont aidé.
Le code (simple) suivant ne fonctionne pas : l'email est proposé à l'envoi sans la pièce attachée par l'application par défaut.
Explication :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 sFichierImage est une chaîne = AlbumSélecteur(albumImage) SI sFichierImage = "" ALORS Erreur("Impossible de prendre la photo.", ErreurInfo()) RETOUR FIN Email.Destinataire="xxxxxxxx@gmail.com" Email.NbDestinataire =1 Email.Sujet = "photo" Email.Attaché[1]=sFichierImage Email.NbAttache=1 EmailLanceAppli()
https://doc.pcsoft.fr/?9000108 : ce lien explique que les applications tierces ne peuvent communiquer entre elles des informations autrement qu'en passant par une carte de stockage externe.
Solution 1 : envoi email par application tierce => utilisation du stockage externe
(je code simple sans prendre les résultats booléen pour les traiter)
Déplacement du fichier dans SysRepStockageExterne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 sFichierImage est une chaîne = AlbumSélecteur(albumImage) SI sFichierImage = "" ALORS Erreur("Impossible de prendre la photo.", ErreurInfo()) RETOUR FIN //Créer si nécessaire le répertoire SysRepStockageExterne+"\tmp\ sFichierImageDéplacé est une chaine = SysRepStockageExterne+"\tmp\"+fExtraitChemin(sFichierImage, fFichier + fExtension) fDéplaceFichier(sFichierImage, sFichierImageDéplacé) Email.Destinataire="xxxxxxxx@gmail.com" Email.NbDestinataire =1 Email.Sujet = "photo" Email.Attaché[1]=sFichierImageDéplacé Email.NbAttache=1 EmailLanceAppli() //ne pas oublier de supprimer sFichierImageDéplacé (et peut-être aussi le répertoire tmp) quand l'email a été envoyé par l'application tierce
Solution 2 : envoi email par l'appli directement, sans passer par solution tierce
Si je veux envoyer un email avec une pièce jointe, sans passer par une carte de stockage externe, il faut donc que l'envoi d'email soit fait par l'application directement.
Le code ci-après permet l'envoi d'email avec pièce attachée:
Voilà les p'tits loups! @+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 NServeur est une chaîne NUser est une chaîne NMotDePasse est une chaîne NPort est une chaîne sFichierImage est une chaîne NServeur = "smtp.gmail.com" //votre SMTP NUser = "xxxxxxxx@gmail.com" //adresse email expéditeur NMotDePasse = "xxxxxxx" //mot de passe du compte NPort = 465 //port SMTP EmailChangeTimeOut(20) // Ouverture de la session en SSL SI PAS EmailOuvreSessionSMTP(NUser,NMotDePasse,NServeur,NPort,Faux, optionSSL) ALORS Erreur(ErreurInfo(errComplet)) FIN sFichierImage = AlbumSélecteur(albumImage) //sous android, une copie du fichier sélectionné est mise dans le répertoire exe //AlbumSelecteur retour le chemin vers cette copie // Initialisation de la structure email Email.NbDestinataire = 1 Email.Destinataire[1] = "xxxxxxx@gmail.com" Email.Sujet= "Test Envoie eMail Windev" Email.Message = "Ceci est un contenu d'un mail envoyé par un programme windev. On s'est appuyé sur smtp de gmail." Email.NbAttache=1 Email.Attache=sFichierImage // Envoi du email SI EmailEnvoieMessage(NUser) ALORS Info("L'envoie de l'email a réussi") SINON Erreur(ErreurInfo(errComplet)) FIN fSupprime(sFichierImage) // parce qu'après avoir sali avec du temporaire, il faut nettoyer, sinon ça s'incruste EmailFermeSession(NUser)
Partager