Shellexecute mailto vers plusieurs adresses email

Signaler
Messages postés
250
Date d'inscription
lundi 9 novembre 2009
Statut
Membre
Dernière intervention
4 septembre 2020
-
Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
-
Salut,
Est-il possible avec shellapi d'envoyer un email vers plusieures adresses email?
Comment y ajouter toujours avec shellapi un fichier attaché?
Merci d'avance,
PhilLu

18 réponses

Messages postés
3825
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 février 2021
42
Salut,

oui ...
regarde cette page

et aussi celle-ci


[hr]@+Cirec
[hr]
Messages postés
250
Date d'inscription
lundi 9 novembre 2009
Statut
Membre
Dernière intervention
4 septembre 2020

Oui, super!!!
Le problème c'est que je souhaite envoyer une variable concernant:
ShellExecute(Self.Handle,
nil,
'mailto:' +
'me@me.com' +
'?Subject=Test Message Subject' + //le sujet
'&Body=Test Message Body' +
'&Attach="c:\Mail //le fichier attaché

Est-ce possible?
Merci d'avance
PhilLu
Messages postés
3825
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 février 2021
42
soit un peut plus précis !
tu la veux ou ta variable ?


[hr]@+Cirec
[hr]
Messages postés
250
Date d'inscription
lundi 9 novembre 2009
Statut
Membre
Dernière intervention
4 septembre 2020

Eh bien:
A la place de: test message subject'
(le sujet du message)
Et a la place de: C:\Mail
(le fichier attaché)
J'ai essayé sans succes!
Merci d'avance pour ta réponse!!!
PhilLu
Messages postés
3825
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 février 2021
42
tu peux faire un truc comme ceci:

const
  MailToStr = 'mailto:%s?Subject=%s&Body=%s&Attach="%s';
var
  VarEMail, VarSubject, VarBody, VarAttach: string;
begin
  ShellExecute(Self.Handle, nil, Format(MailToStr, [VarEMail, VarSubject, VarBody, VarAttach]), ...
end;


tu peux aussi remplacer VarBody par Memo1.Text
par exemple

chaque %s dans la constante MailToStr représente une variable de type string

[hr]@+Cirec
[hr]
Messages postés
250
Date d'inscription
lundi 9 novembre 2009
Statut
Membre
Dernière intervention
4 septembre 2020

Salut,
Ca me semblait ok mais après ce codej'ai encore un soucis:
const
MailToStr = 'mailto:%s?Subject=%s&Body=%s&Attach="%s';

Var EMail, VarSubject, VarBody, VarAttach: string;

maintenant:=Copy(Datetostr(now),0,2)+'_'+Copy(Datetostr(now),4,2)+'_'+Copy(Datetostr(now),7,4);// retourne la ate en format compatible pour être inclus dans un nom de fichier
Form1.GetFormImage.SaveToFile('Résultats du '+maintenant+'.jpg'); // capture la fenètre de l'appli et la sauve dans un fichier jpg
VarAttach:='Résultats du '+maintenant+'.jpg'; //assigne le fichier ataché
VarEMail:='philippe.luyten@skynet.be'; //assigne le destinataire
VarSubject:='Résultats du '+maintenant+'.jpg'; //assigne le sujet de l'email
VarBody:='Voir fichier en annexe'; //assigne le corps du texte de l'email

ShellExecute(Self.Handle, nil, Format(MailToStr, [VarEMail, VarSubject, VarBody, VarAttach]);

Voilà l'erreur retournée:
Retourne derrière cette ligne: Types incompatibles: 'String' et 'PAnsiChar'

Une idée?
PhilLu
Messages postés
3825
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 février 2021
42
ah oui pardon !

PChar(Format(MailToStr, [VarEMail, VarSubject, VarBody, VarAttach]))



[hr]@+Cirec
[hr]
Messages postés
3825
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 février 2021
42
ps:
ta méthode pour obtenir la date en format compatible il y a plus simple:

[hr]  maintenant:= Copy(Datetostr(now),0,2)+'_'+Copy(Datetostr(now),4,2)+'_'+Copy(Datetostr(now),7,4); // 

  maintenant2 : = FormatDateTime('dd_mm_yyyy', Now);
  ShowMessageFmt('ta méthode :%s'+#13#13#10+'ma méthode :%s', [maintenant, maintenant2]);
[hr]

voilà je crois que c'est tout

penses à cliquer sur "Réponse Acceptée" si ça fixe ton problème. Merci


[hr]@+Cirec
[hr]
Messages postés
3825
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 février 2021
42
ah ben non !!

cette ligne :
Form1.GetFormImage.SaveToFile('Résultats du '+maintenant+'.jpg');

n'enregistre pas l'image au format JPEG mais au format Bitmap(.bmp) avec une extension .jpg !!!!!

puisque "GetFormImage" renvoie un TBitmap

ce qui posera forcement un problème lors de la lecture.

et en plus, ça occasionne une fuite de mémoire ... pas cool

il faudrait plutôt procéder ainsi:
[hr]  with Form1.GetFormImage [b]do

  try
    /bSaveToFile('Test.bmp');
  [b]finally
    /bFree;
  end;
[hr]

bon cette fois je crois que c'est tout

[hr]@+Cirec
[hr]
Messages postés
250
Date d'inscription
lundi 9 novembre 2009
Statut
Membre
Dernière intervention
4 septembre 2020

Donc pas moyen de faire une capture en jpg?
Plus léger à envoyer!!!
Encore merci!
PhilLu
Messages postés
3825
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 février 2021
42
Mais si

[hr]uses JPEG;


procedure TForm1.Button2Click(Sender: TObject);
[b]var
  /baBMP: TBitmap;
  aJPEG: TJPEGImage;
[b]begin
  /baJPEG := TJPEGImage.Create;
  [b]try
    /baBMP := Form1.GetFormImage;
    with aBMP [b]do
    try
      /baJPEG.Assign(aBMP);
      aJPEG.SaveToFile('Test.jpg');
    [b]finally
      /bFree;
    end;
  [b]finally
    /baJPEG.Free;
  end;
end;
[hr]
voilà, ceci devrait répondre à ton problème

n'oubliez pas de cliquer sur réponse acceptée ...
[hr]@+Cirec
[hr]
Messages postés
250
Date d'inscription
lundi 9 novembre 2009
Statut
Membre
Dernière intervention
4 septembre 2020

Voici mon code, tout est ok sauf l'envoi du fichier attaché?!?
Qui peux m'aider?

procedure TForm1.Button3Click(Sender: TObject);
begin
maintenant:=Copy(Datetostr(now),0,2)+'_'+Copy(Datetostr(now),4,2)+'_'+Copy(Datetostr(now),7,4);
// capture de l'appli et sauvegarde en jpg -> ok
begin
aJPEG := TJPEGImage.Create;
try
aBMP := Form1.GetFormImage;
with aBMP do
try
aJPEG.Assign(aBMP);
aJPEG.SaveToFile('Résultats du '+maintenant+'.jpg');
finally
Free;
end;
finally
aJPEG.Free;
end;

//remplissage des variables
a := ExtractFilePath(Application.ExeName) ;
b := ExtractFileName('Résultats du '+maintenant+'.jpg');
c := a+b;
VarAttach:=c;
VarEMail:='philippe.luyten@skynet.be;olivier.dony@skynet.be';
VarSubject:='Résultats du '+maintenant+'.jpg';
VarBody:='Voir fichier en annexe';

//appel du shell (ok sauf fichier joint)???
ShellExecute(Self.Handle, nil, PChar(Format(MailToStr, [VarEMail, VarSubject, VarBody, VarAttach])),nil,nil,SW_NORMAL);
end;
end;

Il doit y avoir un petit détail qui m'échappe!?! mais quoi???

Merci d'avance,
PhilLu
Messages postés
3825
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 février 2021
42
Modifie la constante "MailToStr" comme suit:
const
MailToStr = 'mailto:%s?Subject=%s&Body=%s&Attach="%s"';


mais tu pouvais trouver l'erreur par toi même en te servant du premier lien que je t'ai donné... j'ai pas fait autrement ...

ps: pas testé ... mais ça devrait coller !!
n'oubliez pas de cliquer sur réponse acceptée ...
[hr]@+Cirec
[hr]
Messages postés
250
Date d'inscription
lundi 9 novembre 2009
Statut
Membre
Dernière intervention
4 septembre 2020

non, tjrs pareil!?!
:-(
Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
2
Bonjour

De mémoire, il me semble bien que le ShellExecute n'est pas capable de gérer les pièces jointes, du moins pas dans tous les cas. Il faudrait plutot mieux se tourner vers d'autres solutions comme CDO(Collaboration Data Objects) ou MAPI (Messaging Application Programming Interface) pour effectuer se type de tâche.

Cordialement.[hr]"L'imagination est plus importante que le savoir." Albert Einstein
Messages postés
250
Date d'inscription
lundi 9 novembre 2009
Statut
Membre
Dernière intervention
4 septembre 2020

ou alors ne supporte pas les noms longs ou contenant des espaces???
Je tests...
Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
2
Alors ces tests ? sont-ils concluants ?

Cordialement.[hr]"L'imagination est plus importante que le savoir." Albert Einstein
Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
2
Bonsoir

Apparemment, pas concluants...

Bon et si tu remplaçais "Attach=" par "Att:filename=".

Cordialement.[hr]"L'imagination est plus importante que le savoir." Albert Einstein