Einzelnen Beitrag anzeigen

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