Entwickler-Ecke
Internet / Netzwerk - Mail aus FireMonkey-Programm erstellen
LuMa86 - Di 22.01.13 14:26
Titel: Mail aus FireMonkey-Programm erstellen
Hallo,
ich würde gerne eine Mail aus einem FireMonkey Programm erstellen. Ich benutze FireMonkey nur wegen dem Design und nicht weil ich das ganze in OSX umsetzen möchte. Daher kann ich auch VCL Komponenten manuell deklarieren. Unter VCL habe ich immer JvMail benutzt. Das ging auch super. Habe es unter Firemonkey versucht, aber das geht schief (Anwendungsfehler beim Button OnClick):
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| procedure TfrmCheckOut.BtnCheckoutClick(Sender: TObject); var i: Integer; begin if frmSettings.ListMail.Items.Count > 0 then for i := 0 to frmSettings.ListMail.Items.Count do Mail.Recipient.AddRecipient(frmSettings.ListMail.Items[i]); Mail.Subject := 'Trainingsprotokoll KW' + frmMain.KWS; Mail.Body.Add(frmSettings.MailText.Text); if MPath.Items.Count > 0 then for i := 0 to MPath.Items.Count do Mail.Attachment.Add(MPath.Items[i]); try Mail.SendMail(False); except ShowMessage('Beim erstellen der E-Mail ist ein Fehler aufgetreten.'); end; end; |
Das interessante ist, das der Fehler nur kommt, wenn ich eine Eigenschaft wie Subject oder Body fülle. Lasse ich alles leer, kommt statt des Fehlers die ShowMessage im "try..except"-Block.
Hier nochmal der Fehler:
Ich hoffe mir kann jemand helfen oder eine Alternative zeigen.
Moderiert von
Narses: Topic aus Sonstiges (Delphi) verschoben am Di 22.01.2013 um 16:26
Moderiert von
Narses: Bild als Anhang hochgeladen.
Nersgatt - Di 22.01.13 14:51
Wie und wo ist denn "Mail" deklariert und wo erzeugst Du die Instanz von Mail?
LuMa86 - Di 22.01.13 15:16
Mail ist die TJvMail-Komponente. Da sie nicht in der Komponentenliste am Rand steht, habe ich sie manuell unter public deklariert.
Hmm stimmt, eine Instanz habe ich garnicht erzeugt. Aber wie ist das mit andern Komponenten. Habe auf einer anderen Form die JvSerialMaker. Die läuft zwar unter OSX, ist aber auch nicht in der Komponentenliste aufgeführt. Habe sie auch unter public dekalriert. Deswegen habe ich auch kaine Instanz von Mail erzeugt.
Lukas
Nersgatt - Di 22.01.13 15:18
Die Instanz musst Du aber zwingend erstellen. Aber nur einmal, sonst baust Du dir ggf. ein Speicherleck. Also z.B. im FormCreate erstellen.
LuMa86 - Di 22.01.13 15:26
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| Mail := TJvMail.Create(Self); if frmMain.TPData.FindKey([1]) = true then begin frmMain.TPData.Edit; frmMain.TPDataGewicht.AsString := EdWeight.Text; frmMain.TPData.Post; end;
if frmSettings.ListMail.Items.Count > 0 then for i := 0 to frmSettings.ListMail.Items.Count do Mail.Recipient.AddRecipient(frmSettings.ListMail.Items[i]);
Mail.Subject := 'Trainingsprotokoll KW' + frmMain.KWS; Mail.Body.Add(frmSettings.MailText.Text);
if MPath.Items.Count > 0 then for i := 0 to MPath.Items.Count do Mail.Attachment.Add(MPath.Items[i]);
try Mail.SendMail(True); except ShowMessage('Beim erstellen der E-Mail ist ein Fehler aufgetreten.'); end;
Mail.Free; |
So, jetzt geht es :)
Also der SerialMaker tut seine Arbeit auch ohne das erzeugen einer Instanz :D
Nersgatt - Di 22.01.13 15:31
Entweder ist das mit dem SerialMaker purer Zufall, oder das Dingen hat nur Klassenprozeduren. Aber das wäre wohl ein neues Thema.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!