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.