Anhänge per DvAPI an eine Mail anfügen???

  • Hallo.

    Mittels

    Code
    oAttachment =  oNewMailItem.Attachments.Add("c:\test.txt")

    kann ich die Datei mit test.txt an eine Mail anhängen.

    Wenn ich nun aber an eine Email mehere Dateien z.B. in einer Schleife wie

    Code
    for i=1 to 10
    oAttachment =  oNewMailItem.Attachments.Add("c:\test" & i &  ".txt")
    next

    anhängen will, dann befindet sich nach dem Versenden der Mail nur die letzte Datei (im Bsp test10.txt) im Anhang. Das liegt vermutlich daran, dass mit jedem neuen Aufruf von "oAttachment = ..." dieses Object überschrieben wird. Wie kann ich es aber erreichen, dass ich an eine EMail mehrere Anhänge anfügen kann?

    Bitte um Hilfe.
    DANKE.

    Benni

    There are only 10 types of people in the world:
    Those who understand binary and those who don´t.

  • Das Problem ist doch Dein Objekt (!), dass Du immer wieder überschreibst - das ganze ist nicht ByValue sondern ByRef!

    Wenn Du in eine ganz normale Variable die Zahlen von 1 - 10 reinschreibst, steht doch auch am Ende die 10 drin :)

    Code
    for i=1 to 10 
    a= i 
    next

    Dann steht 10 drin - das Verhalten ist also richtig - nur das Konzept suboptimal 8) :rolleyes: 8)

    Du musst also bei jedem Schleifendurchgang ein neues oAttachment erzeugen.

  • Warum es so ist, das habe ich selbst bereits heruasgefunden.
    Das Problem ist, dass ich zwar ein wenig Programmiererfahrung habe, aber bisher nicht viel mit VB.NET gemacht habe und daher nicht weiß, wie ich das in Visual Basic anstelle, dass dynamisch zur Laufzeit ein solches Objekt erzeugt wird, wobei ich vorher die Anzahl der benötigten Objekte nicht weiß. Vielleicht kann mir da jemand konkreter helfen?

    DANKE.

    There are only 10 types of people in the world:
    Those who understand binary and those who don´t.

  • Hallo dj2k.

    Hast du ein Zeit für derartiges Beispiel gehabt?

    Vielen Dank schonmal im Voraus.

    LG
    Benni

    There are only 10 types of people in the world:
    Those who understand binary and those who don´t.

  • Hier das Beispiel, ist zwar Csharp, aber OK:

    Code
    MailItem oNewMailItem = (MailItem)oTestArchive.NewItem(DvItemTypes.DvEMailItem); 
    oNewMailItem.BodyText.PlainText = "blabla"; 
    oNewMailItem.Subject = "test"; for (int i = 1; i < 3; i++) 
    { 
    Attachment oAttachment = oNewMailItem.Attachments.Add(@"c:\test" + i.ToString() + ".txt","Test" + i.ToString()); 
    } 
    oNewMailItem.Save(oTestArchive, DvMessageSelectionTypes.DvMsgSelEMail);

    Was Dir also fehlt ist die Erzeugung eines neuen Attachment-Objekts: Attachment oAttachment

  • Völlig richtig. Die Erzeugnung eines neuen Objektes vom Typ DvApi32.Attachment fehlt mir. Aber genau das bekomme ich in VB.NET nicht hin. Ich hab keine Ahnung, wie das in VB geht. In vielen anderen Sprachen bekomme ich es hin (z.B. in C# ;) )

    In PHP würde ich es mit einem dynamischen Variablennamen machen
    $tmp = "att".$i;
    ${$tmp} = oNewMailItem.Attachments.Add("c:\".$tmp.".EML");

    Oder in JavaScript mit einer Evaluation (ähnlich wie PHP nur hier mittels eval($tmp) = oNewMailItem.Attachments.Add("c:\".$tmp.".EML");

    Aber wie geht sowas in VB.NET? Ich weiß, dass es in VB keine Evaluations-Funktion gibt, aber wie kann ich dynamisch zur Laufzeit Variablen deklarieren? Das ist die entscheidende Frage.

    Vielen Dank trotzdem für deine Mühe dj2k.

    LG
    Benni

    There are only 10 types of people in the world:
    Those who understand binary and those who don´t.

  • Das ist ja echt peinlich.
    Diese Variante hab ich schon ganz am Anfang meiner "Odysee" versucht und habe eine Fehler bekommen. Jetzt erst beim nochmaligen durchsehen habe ich bemerkt, dass der "damalige" Fehler ein Tipfehler im Variablennamen war.

    Shame on me!

    Vielen Dank.

    There are only 10 types of people in the world:
    Those who understand binary and those who don´t.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!