AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Funktion für E-Mail Versand
Thema durchsuchen
Ansicht
Themen-Optionen

Funktion für E-Mail Versand

Ein Thema von Andidreas · begonnen am 27. Feb 2009 · letzter Beitrag vom 27. Feb 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

Funktion für E-Mail Versand

  Alt 27. Feb 2009, 08:55
aloah zusammen,

ich weiß über das aussehen von source code kann man sich streiten...
in diesem falle gehts mir auch nicht dadrum wie schön ich meinen source code formatiert habe (ect.) sonder mir geht es darum ob jemand fehler in der funktionalität sieht...

mit der beigefügten funktion soll man e-mails verschicken können:
edit: zum versand der e-mails verwende ich die indy komponenten

Delphi-Quellcode:
unit AS_Globals;

interface

uses
  Dialogs, Forms, SysUtils, Windows, StdCtrls, Classes, Clipbrd, IdMessage,
  IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase,
  IdMessageClient, IdSMTPBase, IdSMTP;

type
  TIdSMPTP = class(TIdSMTPBase);

  //Functions
  function fnSendEMail(sHost, sUsername, sPassword, sFrom, sSenderEMail, sReceipt,
                       sSubject : String; strlBody : TStrings; iPort : Integer) : Boolean;

implementation


//******************************************************************************
// *
// F U N C T I O N S *
// *
//******************************************************************************

//******************************************************************************
// fnSendEMail --> Send E-Mail *
// Parameter --> sHost = E-Mail Server *
// sUsername = E-Mail User Account *
// sPassword = E-Mail User Account Password *
// sFrom = From Text *
// sSenderEMail = E-Mail Adress from Sender *
// sReceipt = Receipt E-Mail Adress *
// sSubject = E-Mail Subject *
// strlBody = E-Mail Text *
// iPort = E-Mail Server Port *
// Return --> Boolean (True/False) *
//******************************************************************************

function fnSendEMail(sHost, sUsername, sPassword, sFrom, sSenderEMail, sReceipt,
                       sSubject : String; strlBody : TStrings; iPort : Integer) : Boolean;

var
SMTP : TIdSMTP;
idMessage : TIdMessage;

begin

  Result := True;

  //Create TIdSMTP and TIdMessage Componente
  SMTP := TIdSMTP.Create();
  idMessage := TIdMessage.Create();

  //Configure SMPTP
  SMTP.Host := sHost;
  SMTP.Username := sUsername;
  SMTP.Password := sPassword;
  SMTP.Port := iPort;

  //Configure idMessage
  idMessage.From.Text := sFrom;
  idMessage.Sender.Text := sSenderEMail;
  idMessage.Recipients.EMailAddresses := sReceipt;
  idMessage.Subject := sSubject;

  idMessage.Body.Clear;
  idMessage.Body := strlBody;

  //Send E-Mail
  Try
    SMTP.Connect;
    SMTP.Send(idMessage);
    SMTP.Disconnect;
  Except
    Result := False;
    If SMTP.Connected = True Then
    Begin
      Try
        SMTP.Disconnect;
      Except
        MessageDlg('Could not disconnect from the E-Mail Server: ' + sHost, mtError, [mbOK], 0);
      End;
    End;
    MessageDlg('Could not send E-Mail to: ' + sReceipt, mtError, [mbOk], 0);
  End;

  //Destroy TIdSMTP and TIdMessage Componente
  SMTP.Free;
  idMessage.Free;

end;
folgende frage(n) hätte ich hierzu:
1) ist das komponenten erstellen und entfernen so korrekt oder erzeuge ich mir hier speicherlecks?
2) ich erzeuge ja am anfang der unit einen type... muss ich denn auch wieder entsorgen?

die frage(n) mögen vielleicht für manchen zu einfach oder doof klingen, aber ich hab noch nie wirklich funktionen programmiert die keine form zur verfügung hatten und auf dennen man hätte die komponenten ablegen können...

über antworten würde ich mich freuen...
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#2

Re: Funktion für E-Mail Versand

  Alt 27. Feb 2009, 09:52
Ich habe den Source nur überflogen, aber Du solltest das grundsätzlich so machen:
Delphi-Quellcode:
Obj := TKlasse.Create;
try
  MachWasMitObj();
finally
  Obj.Free;
end;
Somit sollten die Objekte auch bei Exceptions immer freigegeben werden. Und die Typdeklaration ist ja nur die Beschreibung einer Klasse und keine Instanz. Da gibt es somit nichts freizugeben.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Micha88
(Gast)

n/a Beiträge
 
#3

Re: Funktion für E-Mail Versand

  Alt 27. Feb 2009, 11:08
Also ich weis nicht ..

ich regele meine eMail-Versendungen immer über IdHTTP zusammen mit einem PHP-Script.
IdHTTP geht per GET an das Script und regelt alles ohne IE, FF oder sonstwas.

Vorteile:
Man ist nicht Login-Daten-bezogen.

Zwar kann der Server off sein, dann geht beides nicht mehr, aber ich verwende der unkompliziertheit halber lieber ein PHP-Script.
( Stichwort, PHP:Mail() )
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

Re: Funktion für E-Mail Versand

  Alt 27. Feb 2009, 11:27
Zitat von MichaelLinden:
ich regele meine eMail-Versendungen immer über IdHTTP zusammen mit einem PHP-Script.
dann mußt du aber den PHP-Script aufpassen, nicht daß da jemand Fremdes dieses benutzt und darüber nette Spam-Mails verschickt
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

Re: Funktion für E-Mail Versand

  Alt 27. Feb 2009, 11:29
@deddyh

danke für den tipp...
ich habs versenden nun so abgeändert:

Delphi-Quellcode:
  //Send E-Mail
  Try
    Try
      SMTP.Connect;
      SMTP.Send(idMessage);
      SMTP.Disconnect;
    Except
      Result := False;
      If SMTP.Connected = True Then
      Begin
        Try
          SMTP.Disconnect;
        Except
          MessageDlg('Could not disconnect from the E-Mail Server: ' + sHost, mtError, [mbOK], 0);
        End;
      End;
      MessageDlg('Could not send E-Mail to: ' + sReceipt, mtError, [mbOk], 0);
    End;
  Finally
    //Destroy TIdSMTP and TIdMessage Componente
    SMTP.Free;
    idMessage.Free;
  End;
@michallinden
danke für dein anmerkung... aber warum sollte ich mir hier jetzt noch die arbeit machen und ein php script schreiben?
für meinen e-mail versand brauch ich auch keinen IE oder FF oder sonst irgend nen i-explorer...
und login daten brauch ich hierfür auch nicht einmal... die sind nur zur vollständigkeit drinne...
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Micha88
(Gast)

n/a Beiträge
 
#6

Re: Funktion für E-Mail Versand

  Alt 27. Feb 2009, 11:36
"und login daten brauch ich hierfür auch nicht einmal"

Nicht?

Die Funktion fnSendEMail connected sich doch da mit irgentwas?

Oder, da müssen doch zumindest Logindaten in der SMTP-Komponente stehen.
  Mit Zitat antworten Zitat
Micha88
(Gast)

n/a Beiträge
 
#7

Re: Funktion für E-Mail Versand

  Alt 27. Feb 2009, 11:38
Zitat von himitsu:
Zitat von MichaelLinden:
ich regele meine eMail-Versendungen immer über IdHTTP zusammen mit einem PHP-Script.
dann mußt du aber den PHP-Script aufpassen, nicht daß da jemand Fremdes dieses benutzt und darüber nette Spam-Mails verschickt
Das habe ich fachlich abgesichert

Die Adresse des Scripts kennt wohl niemand. Natürlich könnte man die irgentwie während der Laufzeit meiner Anwendung abzweigen, aber wird wohl nicht so sein.
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#8

Re: Funktion für E-Mail Versand

  Alt 27. Feb 2009, 11:41
Zitat von MichaelLinden:
Die Adresse des Scripts kennt wohl niemand. Natürlich könnte man die irgentwie während der Laufzeit meiner Anwendung abzweigen, aber wird wohl nicht so sein.
Pillepalle. Solange du nicht irgendwelche One-Time-Keys zur Authentifizierung mitsendest ist das ein offenes Loch in deinem Server.
  Mit Zitat antworten Zitat
Micha88
(Gast)

n/a Beiträge
 
#9

Re: Funktion für E-Mail Versand

  Alt 27. Feb 2009, 11:47
OneTimeKeys muss man mir wohl erst erklären
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#10

Re: Funktion für E-Mail Versand

  Alt 27. Feb 2009, 11:49
Zitat von MichaelLinden:
OneTimeKeys muss man mir wohl erst erklären
Naja, irgendein Schlüssel halt, der für jeden Aufruf generiert wird und nur einmal (für genau diesen Aufruf) funktioniert. Weil sonst könnte man ja den Schlüssel mit klauen und schon wär man wieder am Punkt ganz ohne Sicherung...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz