Mail-Versand mit Anhang



  • Wer hätte geglaubt, dass ich hier noch mal poste, aber ich bin etwas in Zeitdruck und hier gibt es doch ein paar fähige Leute...

    Wie auch immer, ich hab hier ein altes Projekt zum Mailversand mittels TIdSMTP und TIdMessage. Das klappt auch, nur muß ich jetzt ein PDF an die Mail anhängen - und genau da fangen die Probleme an.

    Ich hab TIdAttachment gefunden, aber das scheint eher für den Empfang zuständig zu sein. Oder muß ich das einsetzen um das PDF in die entsprechenden Mailparts aufzuteilen? Wenn ja, wie? Und was mach ich dann mit den Mailparts?!?

    Über ein paar Tipps oder Hinweise würde ich mich freuen. Fertige Lösungen sind natürlich auch willkommen. 😉

    Grüße

    Joe_M.

    P.S. Ich hab den BCB 6.



  • das ist eigentlich recht einfach 😉

    Hier mal ein Beispiel bei dem die anzuhängen Dateien (kompletter Dateiname mit Pfad) in einer ListBox stehen:

    IdMessage1->Clear();
    IdMessage1->From->Text = from;
    IdMessage1->Recipients->EMailAddresses = Addr;
    IdMessage1->Subject = Form1->ESubject->Text;
    IdMessage1->Priority = TIdMessagePriority(mpNormal);
    IdMessage1->From->Address = Form1->Absender;
    IdMessage1->MessageParts->Add();
    
    TIdText *IdText2 = new TIdText(IdMessage1->MessageParts, Form2->RichEdit1->Lines);
    IdText2->ContentType="text/plain";
    
    if (Form1->ListBox3->Items->Count > 0)
    	{
    	IdMessage1->MessageParts->Add();
    	for (int i=0; i<Form1->ListBox3->Items->Count; i++)
        {
    		new TIdAttachmentFile(IdMessage1->MessageParts,Form1->ListBox3->Items->Strings[i]);
        }
      }
    
    try
    	{
    	IdSMTP1->Send(IdMessage1);
     	}
    catch (...)
    	{
        }
    

    Etwas kompliziert wirds bei HTML-Mails und eingebetteten Bildern, aber dazu sollte man sich eine aktuellere Version von den Indykomponenten erstellen.



  • Hallo

    also das gleiche Problem hatte ich auch. Ich hatte hier im Forum geguckt und auch was gefunden, nur kenn ich den Link nicht mehr. Da ich den Builder in der Version 2010 habe, funktioniert TIdAttachment nicht und er will TIdAttachmentFile haben.

    also hier ist der Code, den du bei dir nur anpassen musst:

    TIdMessage *msg = new TIdMessage(this);
    			SMTP->Host=Form2->Edit1->Text;
    			SMTP->Username=Form2->Edit3->Text;
    			SMTP->Password=Form2->Edit4->Text;
    			SMTP->Port=25
    			msg->From->Text="test@test.de";
    			msg->Sender->Text=Form2->Edit5->Text;
    			msg->Subject="Betreff";
    			msg->Body->Text="Dokument befindet sich im Anhang!";
    			//----Zieladresse
    			msg->Recipients->EMailAddresses="empfaenger@test.de"
    
    			//----Anhang mitschicken
    			msg->MessageParts->Add();
    			TIdAttachmentFile *Att= new TIdAttachmentFile(msg->MessageParts,"c:\\test.txt"); //----hier muss ggf. TIdAttachment hin
    
    			try  //----Senden
    			{
    				SMTP->Connect(0);
    				Application->ProcessMessages();
    				SMTP->Send(msg);
    			}
    			__finally
    			{
    				SMTP->Disconnect();
    				delete Att,msg;
    			}
    

    Gruß
    Hawk



  • Danke Euch beiden. Hat hervorrangend funktioniert... Mails sind gestern noch alle raus...

    TIdAttachmentFile hat mein BCB 6, respektive die Indy-Komponenten daraus nicht, also habe ich TIdAttachment genommen.

    Ich musste auch nur eine Zeile hinzufügen (ok 2, das delete mitgezählt):

    TIdAttachment* IdAttachment = new TIdAttachment(pMessage->MessageParts, "ReadMe.pdf");
    

    pMessage ist vom Typ TIdMessage.

    Irgendwie las sich das in der Doku viel komplizierter...

    Grüße

    Joe_M.


Log in to reply