Einzelnen Beitrag anzeigen

Benutzerbild von hitmiccs
hitmiccs

Registriert seit: 15. Mär 2005
Ort: Bous
15 Beiträge
 
#1

Indy IdAttachment, zu viele Paramenter ??

  Alt 21. Jul 2005, 09:14
Hallo.

Ich versuche gerade, mit IdAttachment (Indy 10) eine EMail mit Anhang zu verschicken, wenn ich aber TIdAttachment.Create(msg.MessageParts,btDatei); benutze kommt die Fehlermeldung: Zu viele Parameter...

Ich hab mit der Forensuche ein paar Beiträge mit diesem Thema gefunden und bei den anderen soll das so funktionieren, hier der Rest von der Mail-versende-Prozedur:
Delphi-Quellcode:
procedure Tbtagesbericht.send_per_mailClick(Sender: TObject);
var msg: TIdMessage;
   smtp: TIdSMTP;
   atta: TIdAttachment;
   pfad: string;
begin
  msg:=TidMessage.Create;
  smtp:=TidSMTP.Create(nil);
   msg.Clear;
   msg.Body.Text:='Archivdatei vom '+DatetoStr(Now);
   msg.From.Address := 'lalilu@gmx.de';
   msg.Recipients.EMailAddresses := 'lalilu@gmx.de';
   msg.Subject := 'Zeugs halt';
// pfad:=ExtractFilePath('Maengeldatenbank.exe');
// pfad:= pfad+btDateiname;

   TIdAttachment.Create(msg.MessageParts,btDatei);

   smtp.Host := 'mail.gmx.net';
   smtp.Username := 'lalilu@gmx.de';
   smtp.Password := 'gehtkeinenwasan';
   smtp.Port := 25;
   // Am Server Anmelden und abschicken
   SMTP.Connect;
   SMTP.Send(Msg);
   sleep(3000);
   showmessage('Datei wurde versendet!');
end;
Ohne die TIdAttachment-Geschichte funktioniert alles, die Mail kommt auch an, nur fehlt halt die Datei, und das wäre das wichtigste

Danke für evtl. Lösungsvorschläge!

:EDIT:

Ich hab jetzt auch mal folgenden Code ausprobiert:
Delphi-Quellcode:
Procedure SendMail(Subject,Mailtext,
                   FromName,FromAdress,
                   ToName,ToAdress,
                   AttachedFileName,
                   DisplayFileName:string;
                   ShowDialog:boolean);
var
  MapiMessage : TMapiMessage;
  MError : Cardinal;
  Empfaenger : Array[0..1] of TMapiRecipDesc;
  Absender : TMapiRecipDesc;
  Datei : Array[0..1] of TMapiFileDesc;
begin
  with MapiMessage do begin
    ulReserved := 0;

    // Betreff
    lpszSubject := PChar(Subject);

    // Body
    lpszNoteText := PChar(Mailtext);

    lpszMessageType := nil;
    lpszDateReceived := nil;
    lpszConversationID := nil;
    flFlags := 0;

    // Absender festlegen
    Absender.ulReserved:=0;
    Absender.ulRecipClass:=MAPI_ORIG;
    Absender.lpszName:= PChar(FromName);
    Absender.lpszAddress:= PChar(FromAdress);
    Absender.ulEIDSize:=0;
    Absender.lpEntryID:=nil;
    lpOriginator := @Absender;

    // Empfänger festlegen (Hier: nur 1 Empfänger)
    nRecipCount := 1;

    Empfaenger[0].ulReserved:=0;
    Empfaenger[0].ulRecipClass:=MAPI_TO;
    Empfaenger[0].lpszName:= PChar(ToName);
    Empfaenger[0].lpszAddress:= PChar(ToAdress);
    Empfaenger[0].ulEIDSize:=0;
    Empfaenger[0].lpEntryID:=nil;
    lpRecips := @Empfaenger;

    // Dateien anhängen (Hier: nur 1 Datei)
    nFileCount := 1;

    // Name der Datei auf der Festplatte
    Datei[0].lpszPathName:= PChar(AttachedFilename);

    // Name, der in der Email angezeigt wird
    Datei[0].lpszFileName:= PChar(DisplayFilename);
    Datei[0].ulReserved:=0;
    Datei[0].flFlags:=0;
    Datei[0].nPosition:=Cardinal(-1);
    Datei[0].lpFileType:=nil;
    lpFiles := @Datei;

  end;

  // Senden
  if ShowDialog then
    MError := MapiSendMail(0, Application.Handle,
      MapiMessage, MAPI_DIALOG or MAPI_LOGON_UI, 0)
  else
    // Wenn kein Dialogfeld angezeigt werden soll:
    MError := MapiSendMail(0, Application.Handle, MapiMessage, 0, 0);

  Case MError of
    MAPI_E_AMBIGUOUS_RECIPIENT:
      MessageDlg('Empfänger nicht eindeutig. (Nur möglich, wenn Emailadresse nicht angegeben.)',mterror,[mbok],0);
   
    MAPI_E_ATTACHMENT_NOT_FOUND:
      MessageDlg('Datei zum Anhängen nicht gefunden',mterror,[mbok],0);
   
    MAPI_E_ATTACHMENT_OPEN_FAILURE:
      MessageDlg('Datei zum Anhängen konnte nicht geöffnet werden.',mterror,[mbok],0);

    MAPI_E_BAD_RECIPTYPE:
      MessageDlg('Empfängertyp nicht MAPI_TO, MAPI_CC oder MAPI_BCC.',mterror,[mbok],0);

    MAPI_E_FAILURE:
      MessageDlg('Unbekannter Fehler.',mterror,[mbok],0);

    MAPI_E_INSUFFICIENT_MEMORY:
      MessageDlg('Nicht genug Speicher.',mterror,[mbok],0);

    MAPI_E_LOGIN_FAILURE:
      MessageDlg('Benutzerlogin (z.B. bei Outlook) fehlgeschlagen.',mterror,[mbok],0);

    MAPI_E_TEXT_TOO_LARGE:
      MessageDlg('Text zu groß.',mterror,[mbok],0);

    MAPI_E_TOO_MANY_FILES:
      MessageDlg('Zu viele Dateien zum Anhängen.',mterror,[mbok],0);

    MAPI_E_TOO_MANY_RECIPIENTS:
      MessageDlg('Zu viele Empfänger angegeben.',mterror,[mbok],0);

    MAPI_E_UNKNOWN_RECIPIENT: MessageDlg('Empfänger nicht in Adressbuch gefunden. '+
     '(Nur möglich, wenn Emailadresse nicht angegeben.)',mterror,[mbok],0);

    MAPI_E_USER_ABORT:
      MessageDlg('Benutzer hat Senden abgebrochen oder MAPI nicht installiert.',mterror,[mbok],0);

    SUCCESS_SUCCESS:
      MessageDlg('Erfolgreich !!! (Aber Absenden nicht garantiert.)',mtinformation,[mbok],0);

  End;
end;
Jedoch kommt beim klick auf "Senden" ein fenster mit der Meldung: "Benutzer hat senden abgebrochen oder MAPI nicht installiert." Ich hab keine Ahnung was ich noch machen soll, will doch nur ne kleine Datei per Email verschicken
If anything can go wrong, it will !

Murphy's Law
  Mit Zitat antworten Zitat