Announcement

Collapse
No announcement yet.

Indy10 SMTP Mail mit Text und Anhng verschicken

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Indy10 SMTP Mail mit Text und Anhng verschicken

    Hallo, ich verwende BDS2006 und Indy10 und möchte eine Mail mit einem Text und einer Datei als Anhang versenden. Wenn ich nur NUR ein Attachment versende, funktioniert es und im Outlook wird die Mail mit Anhang dargestellt. Wenn ich zusätzlich noch Text versende, habe ich keinen Anhang mehr sondern Text wie:

    This is a multi-part message in MIME format --5mk7kgf3nwOM7kg5I1tkFg9kYfkb=_uMbJ Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Testmail, sollte mit Anhang sein --5mk7kgf3nwOM7kg5I1tkFg9kYfkb=_uMbJ Content-Type: application/octet-stream; name="logdatei.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="logdatei.txt" dGVzdGxvZ2RhdGVpIHp1bSB2ZXJzZW5kZW4= --5mk7kgf3nwOM7kg5I1tkFg9kYfkb=_uMbJ--

    Hier ein Codeschnipsel:

    IdMsgSend.From.Text := vonMail;
    IdMsgSend.Sender.Text:= vonMail;
    IdMsgSend.ReceiptRecipient.Text := '';
    IdMsgSend.ReplyTo.EMailAddresses := vonMail;
    IdMsgSend.Subject := Betreff;
    IdMsgSend.BccList.EMailAddresses := anMail+';';
    // Message nur plain Text (kein html)
    with TIdText.Create(IdMsgSend.MessageParts, nil) do begin
    ContentType := 'text/plain';
    Body.Text := Nachricht;
    end;
    // Datei anhängen
    TIdAttachmentFile.Create(IdMsgSend.MessageParts, Anhang);

    Was mache ich falsch? Danke

  • #2
    Hallo,

    erst habe ich den ganzen Tag gesucht, dann hier die Frage gestellt und jetzt die Lösung gefunden:

    in

    IdMsgSend.ContentType := 'multipart/*';

    einstellen, dann gehts.
    Nochmal sorry! Kathri

    Comment


    • #3
      hallo kathrin, habe das gleiche problem, kannst du mal die vollständige lösung posten?

      Wäre sehr hilfreich

      Comment


      • #4
        Hallo Judoka,

        hier die vollständige Lösung

        var
        IdMsgSend: TidMessage;
        SMTP: TidSmtp;
        i : Integer;
        begin
        // Message
        IdMsgSend := TidMessage.Create(nil);
        IdMsgSend.Clear;
        IdMsgSend.ContentType := 'multipart/*' // weil mit Text und Anhang
        // Absender der Mail (die meisten Provider nehmen die Mail nur an,
        // wenn tatsächlich die registrierte Mailadresse als Absender drin steht)
        IdMsgSend.From.Text := '[email protected]';
        IdMsgSend.Sender.Text:= 'irgendein Name'; // SenderText (im Auftrag von [email protected])
        IdMsgSend.Recipients.EMailAddresses := '[email protected]' // Empfänger
        IdMsgSend.ReceiptRecipient.Text := ''; // keine Empfangsbestätigung
        IdMsgSend.ReplyTo.EMailAddresses := '[email protected]';
        IdMsgSend.Subject := 'Betreff';
        IdMsgSend.Priority := TIdMessagePriority(StrToIntDef(Priority,2)); // 0-Highest,1-High,2-Normal,3-Low,4-Lowest
        // Messageparts nur Text (kein html)
        with TIdText.Create(IdMsgSend.MessageParts, nil) do begin
        ContentType := 'text/plain';
        Body.Text := 'ein bischen Text';
        end;
        // Anhänge
        for i := 0 to AnhangList.Count-1
        do TIdAttachmentFile.Create(IdMsgSend.MessageParts, AnhangList[i]);
        //
        IdMsgSend.MessageParts.Add(); // Parts zu Message hinzufügen
        // SMTP
        SMTP := TidSmtp.Create(nil);
        SMTP.AuthType := atNone;
        SMTP.Username := ''; // intern, deswegen keine Anmeldung
        SMTP.Password := '';
        SMTP.Host := 'Name des ExchangeServers';
        SMTP.Port := 25;
        try
        SMTP.Connect;
        try
        SMTP.Send(IdMsgSend); // Message senden
        finally
        SMTP.Disconnect;
        end;
        except
        end;
        IdMsgSend.free;
        SMTP.free;
        end;


        Hoffe, Du kommst damit klar.

        Gruss Kathrin

        Comment

        Working...
        X