Envoi mail ( lien delphi - outlook) [Résolu]

nina0amina 23 Messages postés lundi 28 janvier 2008Date d'inscription 28 janvier 2008 Dernière intervention - 28 janv. 2008 à 13:06 - Dernière réponse :  FABMC2
- 8 févr. 2008 à 15:58
Je voudrais je vous pris une reponse a ma prblématique

je résultat que je veux obternir est le suivant :

quand je click sur une carte visite je peux envoyer un mail a son propiétaire
l'adresse mail s'intalle d'elle même sur la boite de dialogue outlook d'ou l'interessé pourait inserer son mail, donc la procedure ne fera que faire appel a outlook et lui filer le mail du recepteur, l'adresse de l'expéditeur la personne l'inser d'elle mm
   alors j'ai trouvé le code suivant :



procedure SendOutlookMail; <?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>



const




  olMailItem = 0;



var 
outlook: OleVariant;




  vMailItem: variant;



begin




  try



Outlook := GetActiveOleObject('Outlook.Application');




  except



Outlook := CreateOleObject('Outlook.Application');




  end;




  vMailItem := Outlook.CreateItem(olMailItem);




  vMailItem.Recipients.Add('dummy@hotmail.com');




  vMailItem.Subject := 'test email';




  vMailItem.Body := 'This is a test';




  vMailItem.Attachments.Add('C:\temp\sample.txt');




  vMailItem.Send;




 






  VarClear(Outlook);



end;



mais le projet est compilable mais dès que je click sur la carte visite pour l'envoi d'un mail
il me sort un message d'erreur 
pourkoi aucune idée ( ma devise sur ce site est aidez moi je rame )  





je rame aidez moi
Afficher la suite 

39 réponses

Répondre au sujet
Utilisateur anonyme - 28 janv. 2008 à 21:45
+3
Utile
Bon Nina : on se calme un peu.

envoi mail ( lien delphi - outlook)
le 28/01/2008 15:35:06 :
Raison du beug : ShellApi non mis dans les Uses. Trouvables en 15 sec en tapant Delphi+ShellExecute dans google

Re : envoi mail ( lien delphi - outlook)
le 28/01/2008 20:03:06

procedure TForm1.Button1Click(Sender: TObject);
begin
  SendOutlookMail;
end;

procedure SendOutlookMail;

begin  ShellExecute(0,'open',PChar('mailto:'+Form1.Edit1.Text+'&Subject=&body='),nil,nil,sw_Normal);

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit1.Text := 'unquidam@truc.com' ;
end;

Ca compile pas ???

Réponse :

procedure SendOutlookMail;


begin  ShellExecute(0,'open',PChar('mailto:'+Form1.Edit1.Text+'&Subject=&body='),nil,nil,sw_Normal);


end;

A mettre avant

procedure TForm1.Button1Click(Sender: TObject);

begin

  SendOutlookMail;

end;

Soit finallement

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ShellApi;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure SendOutlookMail;
begin
  ShellExecute(0,'open',PChar('mailto:'+Form1.Edit1.Text+'&Subject=&body='),nil,nil,sw_Normal);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  SendOutlookMail;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit1.Text := 'unquidam@truc.com' ;
end;

end.

J'espère que la simplicité de l'erreur et de la solutionca t'ouvrira les yeux sur le fait que tu es a des milliards d'années lumières d'avoir les compétences pour faire une application commerciale. D'ou le sans commentaires, car justement c'est ce qui fait la différence entre un débutant et un professionnel : il y en a qui a les compétences l'autre non.

Nina il faut que tu comprennes que des gens qui disent "Je sais pas"," je trouve pas","faites moi ceci faites moi cela","désolé je suis un débutant bla bla bla", on a ca à longueur de journée et ca devient un peu saoulant à force. Codes Sources est là pour aider les gens mais aider les gens ca ne signifient pas faire leur job à leur place, et ca n'empche pas les gens de chercher : les erreurs que tu signales sont référencés sur des milliards de sites car ils sont rencontrés pour tout les débutants : le tout est de chercher le pourquoi du comment. Sache que de passer des heures voirs des jours pour solutionner des erreurs aussi simples est normal : tout les débutants passent par là et il faut des mois de coding intensif pour dépasse ce stade. Ce qui est sur c'est que l'on ne peut pas répondre à toutes les questions élémentaires pour la 101 niemes fois sous prétextes que quelqu'un est débutant.

En espérant t'avoir fais comprendre les choses avec plus de diplomatie.

A++
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Utilisateur anonyme
cs_MAURICIO 2233 Messages postés mardi 10 décembre 2002Date d'inscription 15 décembre 2014 Dernière intervention - 28 janv. 2008 à 22:05
+3
Utile
Il est sympa ce Francky,

"ah bon tu m'as fais un programme toi rapel moi lekel ( vache a lait toi mm)
evite stp me m'ecrire"
C' est ce que je dis: je suis une vache à lait! Je ne t' ai pas appelé de la sorte et je n' ai pas l' habitude de venir sur delphifr traiter les autres de quoi que ce soit, delphifr est un outil de travail pour moi, c' est pas mIRC ici ...
J' attends tes excuses ...

Cari te donnais :
procedure TForm1.FormCreate(Sender: TObject);
  begin
  Edit1.Text := [mailto:'unquidam@truc.com' 'unquidam@truc.com'] ;
end;


Tu nous dis que tu as le message d' erreur suivant:
[Erreur] Unit1.pas(28): Identificateur non déclaré : 'Edit1'

Ça veut simplement dire que tu as découvert Delphi il y a de cela disons ... depuis aujourd' hui!!!

Ok, je veux bien aider à résoudre ton problème:
1 ) Ouvre le fichier d' aide à Delphi puis comence par lire depuis le début.
2 ) Ouvre un nouveau projet et insère un compo, essayant de te familiariser avec les propriétés et les événements de celui-ci. Ensuite passe au compo suivant.
3 ) Essaye sur msdn.com de trouver des infos sur Outlook et son utilisation via les commandes OLE.
4 ) Essaye cette fois de résoudre ton problème, tu vas voir, ça va être  plus compréhensible, du moins tu sauras utiliser les réponses données.

Non, je ne moque pas de toi: se sont les étapes necessaires, désolé, je suis passé par lá, je crois que c' est le cas pour tout le monde et ça, on pourra pas le faire pour toi ...

Maurício
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_MAURICIO
nina0amina 23 Messages postés lundi 28 janvier 2008Date d'inscription 28 janvier 2008 Dernière intervention - 28 janv. 2008 à 13:25
0
Utile
le message qui sort est le suivant

EOLSYS ERROR    Opération non disponible

je rame aidez moi
Commenter la réponse de nina0amina
Utilisateur anonyme - 28 janv. 2008 à 13:58
0
Utile
Salut

Déja quelqu'un qui dit pas bonjour et qui commence sa phrase par "Je voudrais je vous pris une reponse a ma prblématique", on a pas trop envie de l'aider
Commenter la réponse de Utilisateur anonyme
nina0amina 23 Messages postés lundi 28 janvier 2008Date d'inscription 28 janvier 2008 Dernière intervention - 28 janv. 2008 à 14:04
0
Utile
pardon mais je suis sous pression vraiment dsl

je rame aidez moi
Commenter la réponse de nina0amina
Utilisateur anonyme - 28 janv. 2008 à 14:19
0
Utile
Tu rames, tu rames : Ben moi aussi je rame et alors je dis bien bonjour, je n'ai aucune exigence ma devise sur ce site est aidez moi je rame ), je ne poste pas deux fois le meme message et je demande pas aux gens de jouer aux Madames Irmas (Tu donnes meme pas le message d'erreur).
Commenter la réponse de Utilisateur anonyme
nina0amina 23 Messages postés lundi 28 janvier 2008Date d'inscription 28 janvier 2008 Dernière intervention - 28 janv. 2008 à 14:57
0
Utile
EOLSYS ERROR    Opération non disponible
je l'ai donné le message d'erreur Mr FRANKY


Mais pas grave je le donne !


merci d'avance pour votre aide

je rame aidez moi
Commenter la réponse de nina0amina
Caribensila 2671 Messages postés jeudi 15 janvier 2004Date d'inscription 18 janvier 2018 Dernière intervention - 28 janv. 2008 à 14:58
0
Utile
Bein ouè, on rame tous...
Si on ramait pas, on ne serait pas là. 

Essaie quand même ça:


uses ShellApi;

procedure SendOutlookMail;
  var Adresse : String;
  begin
  Adresse :'une URL';
  ShellExecute(0,'open',PChar('mailto:'+Adresse+'&Subject=&body='),nil,nil,sw_Normal);
end;
Commenter la réponse de Caribensila
Utilisateur anonyme - 28 janv. 2008 à 15:06
0
Utile
Hey tu sur d'avoir écris correctement le message d'erreur : car il n'est référencé nul part. Le seul lien qui pointe sous google vers EOLSYS ERROR est ici même. A priori tu es la seule à avoir rencontré ce problème. A priori le problème ne vient pas de ton code car il semble bon.

Entre toi et moi : utiliser outlook n'est pas très judicieux. Tu devrais te tourner vers les composants Indy. OutLook n'est pas spécialement très utilisé mais au sein des entreprises.
Commenter la réponse de Utilisateur anonyme
nina0amina 23 Messages postés lundi 28 janvier 2008Date d'inscription 28 janvier 2008 Dernière intervention - 28 janv. 2008 à 15:19
0
Utile
Merci franky


mais vois tu je voudrais créer un produit destiné au entreprise
l'idée et une fois qu'on click sur une carte ou une touche on peut envoyer un mail a la personne
mais pour envoyer un mail a une personne il faut deux paramétress
le mail de la personne en question---- disponible sur delphi
et le mail de celui qui envoie ( élément extérieur ) que l'expéditeur entre au moment des faits
 c'est pour ça que je voulais un code qui ne faisait que appeler outlook et inserer l'adresse receptrice dans son emplacement mais pour le message et l'adresse de l'expéditeur ne seront pas du ressort du prgramme delphi
et le message complet est le suivant :

notification d'une exception du débogeur
le projet projet1.exe à porvoqué une classe d'exception EOLeSysrror avec le message 'opération indiponible 'processus stoppé. utiliser pas à pas ou éxecuter pour continuer 

merci encore franky
je rame aidez moi
Commenter la réponse de nina0amina
nina0amina 23 Messages postés lundi 28 janvier 2008Date d'inscription 28 janvier 2008 Dernière intervention - 28 janv. 2008 à 15:29
0
Utile
je rame aidez moi
Commenter la réponse de nina0amina
nina0amina 23 Messages postés lundi 28 janvier 2008Date d'inscription 28 janvier 2008 Dernière intervention - 28 janv. 2008 à 15:35
0
Utile
le mail est parti vide pardon


 


Pour votre code lorsque je l'ecris tel qu'il est je reçois ces deux messages



Adresse :'une URL';

:= attendu mais : trouvé ( le premier message)

begin attendu mais end trouvé ( le second)
le programme ne se compile pas 


merci
 

je rame aidez moi
Commenter la réponse de nina0amina
Caribensila 2671 Messages postés jeudi 15 janvier 2004Date d'inscription 18 janvier 2018 Dernière intervention - 28 janv. 2008 à 15:41
0
Utile
Pardon...

uses ShellApi;





procedure SendOutlookMail;
  var Adresse : String;
  begin
  Adresse :=  'Une URL';
  ShellExecute(0,'open',PChar('mailto:'+Adresse+'&Subject=&body='),nil,nil,sw_Normal);
end;
Commenter la réponse de Caribensila
nina0amina 23 Messages postés lundi 28 janvier 2008Date d'inscription 28 janvier 2008 Dernière intervention - 28 janv. 2008 à 15:43
0
Utile
votre code marche
mais j'aboutis en cliquant sur yahoo ( qui est ma boite de messagerie par défaut)
mais ce la suppose que j'ai le mail de la personne sur ma boite mail ce qui n'est pas le cas
les adresses mails doivent êtres gérées par delphi, c'est le programme delphi qui donne les adresse une a une toutes fois qu'il est sollicité ( en cliquant sur un bouton) et qui l'insert directement dans le champs recépeteur de outlook
Commenter la réponse de nina0amina
Caribensila 2671 Messages postés jeudi 15 janvier 2004Date d'inscription 18 janvier 2018 Dernière intervention - 28 janv. 2008 à 15:58
0
Utile
uses ShellApi;



procedure TForm1.FormCreate(Sender: TObject);
  begin
  Edit1.Text :=
[mailto:'unquidam@truc.com'
'unquidam@truc.com'
]
;
end;



procedure SendOutlookMail;
  begin
  ShellExecute(0,'open',PChar('mailto:'+Form1.Edit1.Text+'&Subject=&body='),nil,nil,sw_Normal);
end;



procedure TForm1.Button1Click(Sender: TObject);
begin
SendOutlookMail;
end;
Commenter la réponse de Caribensila
Caribensila 2671 Messages postés jeudi 15 janvier 2004Date d'inscription 18 janvier 2018 Dernière intervention - 28 janv. 2008 à 16:02
0
Utile
Chez moi, ça marche. J'ai bien « [mailto:unquidam@truc.com unquidam@truc.com]; » dans le Destinataire...
Commenter la réponse de Caribensila
cs_MAURICIO 2233 Messages postés mardi 10 décembre 2002Date d'inscription 15 décembre 2014 Dernière intervention - 28 janv. 2008 à 17:29
0
Utile
Haaa le OleAutomation ...

ça me rappelle que j' ai cette fonctionnalité dans certaines de mes appli (Ole server, comme Outlook Word etc ...).

Le problème devrait très rapidement trouver solution avec illustration après recherche sur google.com que je ferai pas, j' ai plus de lait ...

A+
Commenter la réponse de cs_MAURICIO
nina0amina 23 Messages postés lundi 28 janvier 2008Date d'inscription 28 janvier 2008 Dernière intervention - 28 janv. 2008 à 20:03
0
Utile
[Erreur] Unit1.pas(26): Identificateur non déclaré : 'FormCreate'
[Erreur] Unit1.pas(28): Identificateur non déclaré : 'Edit1'
[Erreur] Unit1.pas(28[Erreur] Unit1.pas(33): Types incompatibles : 'String' et 'Text'): '(' attendu(e) mais ':=' trouvé(e)
[Erreur] Unit1.pas(41): '.' attendu(e) mais ';' trouvé(e)
[Erreur fatale] Project1.dpr(5): Impossible de compiler l'unité utilisée 'Unit1.pas'
voila le message qui me sort ou j'ai pu faire une betise et voila le code tel que je l'ai ecris :
ses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,ShellApi;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text := 'unquidam@truc.com' ;
end;

procedure SendOutlookMail;
begin
ShellExecute(0,'open',PChar('mailto:'+Form1.Edit1.Text+'&Subject=&body='),nil,nil,sw_Normal);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
SendOutlookMail;
end;

end;

end.
Commenter la réponse de nina0amina
nina0amina 23 Messages postés lundi 28 janvier 2008Date d'inscription 28 janvier 2008 Dernière intervention - 28 janv. 2008 à 20:59
0
Utile
non rien à faire je viens d'essayer un autre code le voici:
uses
ComObj;

procedure EnvoyerCourriel;
const
olMailItem = 0;
olByValue = 1;

var
OutlookApp, MailItem, MyAttachments: OLEVariant;

begin
try
OutlookApp := GetActiveOleObject('Outlook.Application');
except
OutlookApp := CreateOleObject('Outlook.Application');
end;

try
MailItem := OutlookApp.CreateItem(olMailItem);
MailItem.To := 'nom@monserveur.ca';
MailItem.Subject := 'Mon sujet';
MailItem.Body := 'Mon message';
myAttachments := MailItem.Attachments;
myAttachments.Add('C:\test.txt', olByValue, 1, 'Mon fichier');
MailItem.Display(false);

finally
myAttachments := VarNull;
OutlookApp := VarNull;
end;
end;

là encore je reçois le même message d'erreur c'est à dire
eolesyserror ( le prog reste se compile et toutes les autres fonctionnalités fonctionne sauf l'envoi du mail via outlook )
Commenter la réponse de nina0amina
Caribensila 2671 Messages postés jeudi 15 janvier 2004Date d'inscription 18 janvier 2018 Dernière intervention - 28 janv. 2008 à 21:00
0
Utile
:))))
j'suis nul !

Et tu obtiens ce que tu voulais?
Commenter la réponse de Caribensila

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

envoi mail ( lien delphi - outlook) - page 2