Code pour MAPI SENDMAIL (à corriger)

Programmation d'applications complexes
julien
Messages : 846
Inscription : ven. 30/janv./2004 15:06
Contact :

Code pour MAPI SENDMAIL (à corriger)

Message par julien »

Salut

j'ai commencé un code pour envoyer un email avec pièce jointe via Mapi
je me suis basé sur un code Delphi qui fonctionne à merveille.

La traduction en PB n'est pas finie, et je ne comprend pas tout.. donc tout ne marche pas.

Merci pour votre aide et de vos corrections

En PB

Code : Tout sélectionner



#MAPI_NEW_SESSION = $2





Structure MAPIMessage
  Reserved.l
  Subject.s
  NoteText.s
  MessageType.s
  DateReceived.s
  ConversationID.s
  Flags.l
  Originator.s
  RecipCount.l
  Recips.l
  FileCount.l
  Files.l
EndStructure




Structure MapiRecipDesc
  Reserved.l
 RecipClass.l
 Name.s
 Address.s
 EIDSize.l
 EntryID.l
EndStructure


reception.MapiRecipDesc
reception\Reserved = 0
reception\RecipClass = 1
reception\Name = "a" ; nom
reception\Address = "@" ; adresse
reception\EIDSize = 0
reception\EntryID = 0



message.MAPIMessage
message\Reserved=0
message\Subject="sujet"
message\NoteText="corps"
message\MessageType=""
message\DateReceived   = "2006/12/10 16:20"
message\ConversationID=""
message\Flags=0
message\Originator=""
message\RecipCount=1
message\ Recips=@reception
message\FileCount=1
message\Files=@message








If OpenLibrary(1,"mapi32.dll")
res=CallFunction(1, "MAPISendMail",0,0,@message.MAPIMessage,#MAPI_NEW_SESSION,0)
EndIf

En Delphi ( http://www.delphifr.com/code.aspx?ID=11848)

Code : Tout sélectionner

unit Main;

interface

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

type
  TfrmMain = class(TForm)
    edAdr: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    edFile: TEdit;
    Ouvrir: TOpenDialog;
    edSjt: TEdit;
    Label3: TLabel;
    memTexte: TMemo;
    btnSend: TSpeedButton;
    btnBrws: TSpeedButton;
    XPManifest1: TXPManifest;
    procedure btnBrwsClick(Sender: TObject);
    procedure btnSendClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmMain: TfrmMain;

implementation

Uses MAPI;

{$R *.dfm}

procedure TfrmMain.btnBrwsClick(Sender: TObject);
begin

  If Ouvrir.Execute Then edFile.Text := Ouvrir.FileName;

end;

procedure TfrmMain.btnSendClick(Sender: TObject);
Var MAPIMessage: TMAPIMessage;
    MAPIFile     : TMAPIFileDesc;
    MAPIRecip    : TMAPIRecipDesc;
    i            : Integer;
    Name, tmp    : String;
begin

//------------------------ Définition de MAPIFile -----------------------\\
   MAPIFile.ulReserved   := 0;
   MAPIFile.flFlags      := 0;
   MAPIFile.nPosition    := 0;
   MAPIFile.lpszPathName := PChar(edFile.Text);
   MAPIFile.lpszFileName := PChar(ExtractFileName(edFile.Text));
   MAPIFile.lpFileType   := nil;
//-----------------------------------------------------------------------\\

//--------------- Récupération du pseudo du destinataire ----------------\\
  tmp := edAdr.Text;
  For i := 1 To Length(tmp) Do
  Begin
    If tmp[i] = '@' Then Break
    Else Name := Name + tmp[i];
  end;
//-----------------------------------------------------------------------\\

//----------------------- Définition de MAPIRecip -----------------------\\
   MAPIRecip.ulReserved   := 0;
   MAPIRecip.ulRecipClass := MAPI_TO;
   MAPIRecip.lpszName     := PChar(Name);
   MAPIRecip.lpszAddress  := PChar(edAdr.Text);
   MAPIRecip.ulEIDSize    := 0;
   MAPIRecip.lpEntryID    := nil;
//-----------------------------------------------------------------------\\

//---------------------- Définition de MAPIMessage ----------------------\\
  With MAPIMessage Do
  Begin
    ulReserved         := 0;
    lpszSubject        := PChar(edSjt.Text);
    lpszNoteText       := PChar(memTexte.Lines.Text);
    lpszMessageType    := nil;
    lpszDateReceived   := nil;
    lpszConversationID := nil;
    flFlags            := 0;
    lpOriginator       := nil;
    nRecipCount        := 1;
    lpRecips           := @MAPIRecip;
    nFileCount         := 1;
    lpFiles            := @MAPIFile;
  end;
//-----------------------------------------------------------------------\\


//------------------------ Appel de MAPISendMail ------------------------\\
 If MAPISendMail(0, 0, MAPIMessage, MAPI_NEW_SESSION or
                 MAPI_DIALOG, 0) <> 0 Then
 ShowMessage('Une erreur est apparue lors de l''envoi du message')
 Else ShowMessage('Envoi effectué !');
//-----------------------------------------------------------------------\\

end;

end.