Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Memo an E-Mail versenden. (https://www.delphipraxis.net/68457-memo-e-mail-versenden.html)

Area51 29. Apr 2006 21:43


Memo an E-Mail versenden.
 
Hallo.
Ich habe erst vor 2 Wochen Delphi7 erhalten und kenne mich damit noch nicht so gut aus.
Ich habe ein Quiz für meine Mitschüler erstellt und würde gerne, dass Sie einen Komentar in einem Memo schreiben können und danach auf einen Button, zum absenden auf meine E-mail Adresse klicken können. Ich wurde aus den Beiträgen hier im Forum nicht so ganz schlau. Vielleicht könnte mir jemand eine "Schritt für Schritt" Erklärung machen, da ich noch nicht so erfahren bin. Ich habe einen GMX.net Account. mfg.

fkerber 29. Apr 2006 21:54

Re: Memo an E-Mail versenden.
 
Hi!

Such mal nach Indy, da gibt es wirklich massenweise Threads im Forum.
Wenn du dann eine konkrete Frage hast, kannst du sie ja dann stellen.

Zu den Indy gibt es auch Beispiele - evtl. iss da ja auch was zum Mailen dabei...


Ciao Frederic

MrKnogge 29. Apr 2006 21:57

Re: Memo an E-Mail versenden.
 
Moin,

Dafür musst du einen eigenen Email-Server integrieren. Schau dir hierzu einfach mal die Indy-Demos an.

Du kannst aber auch einfach den Standard-Email-Client öffnen:
Delphi-Quellcode:
uses ShellApi

...

begin
  shellexecute(handle, 'open',
               PChar('mailto:' + 'Deine@Emailadresse.de' + '?subject=' + 'Komentar zu deinem Programm'),
               '', '', sw_normal);
gruss

jim_raynor 29. Apr 2006 23:26

Re: Memo an E-Mail versenden.
 
Mit der MAPI gehts auch ohne speziellen Server. Allerdings muss dann der Mail-Client korrekt eingerichtet sein.

Delphi-Quellcode:
var
  MapiMsg: TMapiMessage;
  Recips: TMapiRecipDesc;
  Files : TMapiFileDesc;
begin
  with Recips do begin
    ulReserved := 0;
    ulRecipClass := MAPI_TO;
    lpszName := PChar('zieladresse@irgendwo.de');
    lpszAddress := nil;
    ulEIDSize := 0;
    lpEntryID := nil;
  end;
  with Files do
  begin
    ulReserved := 0;
    flFlags:=0;
    nPosition:=0;
  end;
  with MapiMsg do begin
    ulReserved := 0;

// Betreff-Zeile
    lpszSubject := PChar('Titel');

// Text der Mail
    lpszNoteText := PChar('Nachricht');
    lpszMessageType := nil;
    lpszDateReceived := nil;
    lpszConversationID := nil;
    flFlags := 0;

// Informationen über den Sender der Mail (TMapiRecipDescr)
    lpOriginator := nil;

// Anzahl der Empfänger;
    nRecipCount := 1;

// Array der Empfänger (hier nur einer) (TMapiRecipDescr)
    lpRecips := @Recips;

// Anzahl anhängender Dateien
    nFileCount := 0;

// Angehängte Dateien (TMapiFileDescr)
    lpFiles := nil;
  end;
  result:=MapiSendMail(0, 0, MapiMsg, MAPI_DIALOG or MAPI_LOGON_UI or MAPI_NEW_SESSION, 0)=SUCCESS_SUCCESS;
end;
Diese Mail schickt er dann über den installierten Mail-Client falls es nicht klappt. Gibt die Funktion false zurück

Area51 30. Apr 2006 10:06

Re: Memo an E-Mail versenden.
 
Hallo. Zuerst danke für die Antworten.

Dann meine Probleme: Kann ich dieses Mail auch ohne Mailklienten versenden? und wie stelle ich das an, dass mein Memo gesendet wird?? ....und was muss ich bei meinem GMX Account einstellen?? Danke im Vorraus :D

Area51 30. Apr 2006 10:29

Re: Memo an E-Mail versenden.
 
Hallo.
Also ich habe mal zum testen ein Memo und ein Button erstellt. Dann beim onklick beim button den Quelltext reinkopiert. Leider hat es nicht gefunzt. Ich poste hier mal den Queltext :D

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
 var
  MapiMsg: TMapiMessage;
  Recips: TMapiRecipDesc;
  Files : TMapiFileDesc;
begin
  with Recips do begin
    ulReserved := 0;
    ulRecipClass := MAPI_TO;
    lpszName := PChar('supershake@gmx.net');
    lpszAddress := nil;
    ulEIDSize := 0;
    lpEntryID := nil;
  end;
  with Files do
  begin
    ulReserved := 0;
    flFlags:=0;
    nPosition:=0;
  end;
  with MapiMsg do begin
    ulReserved := 0;

// Betreff-Zeile
    lpszSubject := PChar('Titel');

// Text der Mail
    lpszNoteText := PChar('memo1');
    lpszMessageType := nil;
    lpszDateReceived := nil;
    lpszConversationID := nil;
    flFlags := 0;

// Informationen über den Sender der Mail (TMapiRecipDescr)
    lpOriginator := nil;

// Anzahl der Empfänger;
    nRecipCount := 1;

// Array der Empfänger (hier nur einer) (TMapiRecipDescr)
    lpRecips := @Recips;

// Anzahl anhängender Dateien
    nFileCount := 0;

// Angehängte Dateien (TMapiFileDescr)
    lpFiles := nil;
  end;
  result:=MapiSendMail(0, 0, MapiMsg, MAPI_DIALOG or MAPI_LOGON_UI or MAPI_NEW_SESSION, 0)=SUCCESS_SUCCESS;
end;
[edit=Admin]Code in Delphi-Tags gesetzt. Künftig bitte selber machen, danke. ;-) Mfg, Daniel[/edit]

jim_raynor 30. Apr 2006 11:04

Re: Memo an E-Mail versenden.
 
Warum geht eigentlich jeder davon aus, dass wir hier hellsehen können. :wall: Du musst schon sagen was nicht funktioniert!!!!

Auf jeden Fall Funktioniert PChar('memo1') nicht so wie du dass willst. Du musst natürlich PChar(memo1.Lines.Text) dort schreiben.

Area51 30. Apr 2006 11:43

Re: Memo an E-Mail versenden.
 
Folgende Felher habe ich beim erzeugen :D

Erzeugen
[Fehler] Unit1.pas(29): Undefinierter Bezeichner: 'TMapiMessage'
[Fehler] Unit1.pas(30): Undefinierter Bezeichner: 'TMapiRecipDesc'
[Fehler] Unit1.pas(31): Undefinierter Bezeichner: 'TMapiFileDesc'
[Fehler] Unit1.pas(34): Undefinierter Bezeichner: 'ulReserved'
[Fehler] Unit1.pas(35): Undefinierter Bezeichner: 'ulRecipClass'
[Fehler] Unit1.pas(35): Undefinierter Bezeichner: 'MAPI_TO'
[Fehler] Unit1.pas(36): Undefinierter Bezeichner: 'lpszName'
[Fehler] Unit1.pas(37): Undefinierter Bezeichner: 'lpszAddress'
[Fehler] Unit1.pas(38): Undefinierter Bezeichner: 'ulEIDSize'
[Fehler] Unit1.pas(39): Undefinierter Bezeichner: 'lpEntryID'
[Fehler] Unit1.pas(44): Undefinierter Bezeichner: 'flFlags'
[Fehler] Unit1.pas(45): Undefinierter Bezeichner: 'nPosition'
[Fehler] Unit1.pas(51): Undefinierter Bezeichner: 'lpszSubject'
[Fehler] Unit1.pas(54): Undefinierter Bezeichner: 'lpszNoteText'
[Fehler] Unit1.pas(55): Undefinierter Bezeichner: 'lpszMessageType'
[Fehler] Unit1.pas(56): Undefinierter Bezeichner: 'lpszDateReceived'
[Fehler] Unit1.pas(57): Undefinierter Bezeichner: 'lpszConversationID'
[Fehler] Unit1.pas(61): Undefinierter Bezeichner: 'lpOriginator'
[Fehler] Unit1.pas(64): Undefinierter Bezeichner: 'nRecipCount'
[Fehler] Unit1.pas(67): Undefinierter Bezeichner: 'lpRecips'
[Fehler] Unit1.pas(70): Undefinierter Bezeichner: 'nFileCount'
[Fehler] Unit1.pas(73): Undefinierter Bezeichner: 'lpFiles'
[Fehler] Unit1.pas(75): Undefinierter Bezeichner: 'result'
[Fehler] Unit1.pas(75): Undefinierter Bezeichner: 'MAPI_DIALOG'
[Fehler] Unit1.pas(75): Undefinierter Bezeichner: 'MAPI_LOGON_UI'
[Warnung] Unit1.pas(75): Vorzeichenbehaftete und -lose Typen werden kombiniert - beide Operanden werden erweitert
[Fehler] Unit1.pas(75): Undefinierter Bezeichner: 'SUCCESS_SUCCESS'
[Warnung] Unit1.pas(75): Vorzeichenbehaftete und -lose Typen werden verglichen - beide Operanden werden erweitert
[Fehler] Unit1.pas(78): Deklaration erwartet, aber Dateiende gefunden
[Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden

fkerber 30. Apr 2006 11:46

Re: Memo an E-Mail versenden.
 
Hi!

Dann solltest du auch jeden Fall mal deine Uses erweitern. Ganz sicher mal um "mapi" und zu den anderen musst du halt mal in der OH schauen, in welchen units sie definiert sind.


Ciao Frederic

Area51 30. Apr 2006 18:05

Re: Memo an E-Mail versenden.
 
Hallo.
Danke erstmal.
Wie kan ich Uses erweitern?? Ist diese Erweiterung gratis?? Ich habe die Delphi7 CD nicht mehr. mfg.

fkerber 30. Apr 2006 18:07

Re: Memo an E-Mail versenden.
 
Hi!

Einfach oben bei uses mapi dazuschreiben....
Das sollte ja mit installiert worden sein.

Wieso besitzt du keine CD?


Ciao Frederic

Area51 2. Mai 2006 21:17

Re: Memo an E-Mail versenden.
 
Hallo. Ich habe die komplette Delphi7 CD neuinstalliert. Bring das mit mapi aber nicht ganz fertig. Wie komm ich in den Mapi Modus?? und kann man sowas nicht ohne einen Mailklienten (Outlook ect.) machen?? Es müssen nur 2 Edit Felder gesendet werden auf mein GMX Account. mfg.

fkerber 3. Mai 2006 13:43

Re: Memo an E-Mail versenden.
 
Hi!

Hast du mal nach Indy geschaut?


Ciao Frederic

jim_raynor 3. Mai 2006 13:53

Re: Memo an E-Mail versenden.
 
Zitat:

Zitat von Area51
Bring das mit mapi aber nicht ganz fertig. Wie komm ich in den Mapi Modus?? und kann man sowas nicht ohne einen Mailklienten (Outlook ect.) machen??

lol. Mapi ist kein Modus sondern einfach eine Unit die die per uses einbinden musst. Du kannst aber auch Datei->Unit verwenden nutzen. Dann trägt er die Unit automatisch in uses ein.

Zitat:

Zitat von Area51
Es müssen nur 2 Edit Felder gesendet werden auf mein GMX Account. mfg.

Entweder mit Client und der Mapi oder wirklich mal nach Indy suchen.

Area51 3. Mai 2006 17:59

Re: Memo an E-Mail versenden.
 
Hallo.
Jetzt bin ich fast am Ziel. Ich müsste nur noch wissen wie ich die 2 edit felder bezeichnen muss. beim memo1 ist es ja memo1.Lines.Text. kann mir jemand sagen mit welchem Befehl ich Edit1 und Edit2 reinbringe ?? mfg.

Mackhack 3. Mai 2006 18:01

Re: Memo an E-Mail versenden.
 
Editfelder haben die .Text-Eigenschaft!

Finki 6. Aug 2013 13:51

AW: Memo an E-Mail versenden.
 
Ich hab jetzt nach genauem studieren doch mal die frage geht des jetzt auch ohne den lokalen mailing service?

Aviator 6. Aug 2013 20:01

AW: Memo an E-Mail versenden.
 
Relativ altes Thema aber naja. Du könntest dir mal den Indy Smtp Client anschauen. (IdSmtpClient heißt die Komponente glaube ich)
Mit der kann man auch ohne ein installiertes Mailprogramm eine Mail versenden. Zugangsdaten zu einem SMTP Server brauchst du aber dennoch. Welcher ist dann egal. Dann musst du dir eben die entsprechenden Daten zu dem Server heraussuchen.

bernhard_LA 7. Aug 2013 19:51

AW: Memo an E-Mail versenden.
 
Anbei ein Code Ausschnitt aus meinem E MAil Programm, alles mit DELPHI XE2 und INDY 10 ....



Delphi-Quellcode:


unit Unit_simpleEMail;

///
/// ***   very simple e mail client with INDY 10    ****
///
/// by BDLM   :
///
/// version 01 :  can read e mails from the host
/// can write e mails
///
///
///
///
///
///
///
///
///
///
///
///

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics, email_classes,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Menus, Vcl.ComCtrls,
  IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdSMTP, Idtext, IdGlobalProtocols, IdGlobal,
  IdAttachment, IdMessageParts, IdAttachmentFile,
  IdExplicitTLSClientServerBase, IdMessageClient, IdPOP3, contnrs,
  IdMessage, Vcl.StdCtrls, Vcl.ExtCtrls, inifiles, IdSMTPBase;

type



  TSimpleMailForm = class(TForm)
    MainMenu1: TMainMenu;
    SimpleMailStatusBar: TStatusBar;
    File1: TMenuItem;
    Mail1: TMenuItem;
    SetUp1: TMenuItem;
    Exit1: TMenuItem;
    EmailSettingsMenuItem: TMenuItem;
    MyIndyPOP3: TIdPOP3;
    Connect1: TMenuItem;
    EMails1: TMenuItem;
    Panel1: TPanel;
    Panel2: TPanel;
    EMailInListBox: TListBox;
    Splitter1: TSplitter;
    WriteNewEMail1: TMenuItem;
    Panel3: TPanel;
    MailSubjectLabel: TLabel;
    MailFromLabel: TLabel;
    CCLabel: TLabel;
    BCCLabel: TLabel;
    MailBoxPanel: TPanel;
    Help1: TMenuItem;
    ber1: TMenuItem;
    MyIndySMTP: TIdSMTP;
    MyNewIndyMessage: TIdMessage;
    Benutzerliste1: TMenuItem;
    ffneBenutzerliste1: TMenuItem;
    MyOpenDialog: TOpenDialog;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    TabSheet3: TTabSheet;
    MailBodyMemo: TMemo;
    RichEdit1: TRichEdit;
    procedure Exit1Click(Sender: TObject);
    procedure Connect1Click(Sender: TObject);
    procedure EMails1Click(Sender: TObject);
    procedure EmailSettingsMenuItemClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure EMailInListBoxDblClick(Sender: TObject);
    procedure WriteNewEMail1Click(Sender: TObject);
    procedure ber1Click(Sender: TObject);
    procedure Benutzerliste1Click(Sender: TObject);
    procedure ffneBenutzerliste1Click(Sender: TObject);
  private
    { Private-Deklarationen }
    FEMailUserList: TEMailUserList;
    FuserListFile: String;
    Factiveuserindex: Integer;

  public
    { Public-Deklarationen }
    MsgList: TObjectlist;

    Msg_attach : String;

    msg_to : String;

    msg_sub : String;

    msg_Line : string;



    SelectedMailItem: Integer;

    FActiveEMailUser: TEMailUser;

    Attachment: TIdAttachment;

    procedure SetActiveUser(aUserIndex: Integer);

    procedure LoadPostOfficeParameter(aFile: String);

    procedure SetSMTPValues(Sender: TObject);

    procedure SendMail(edfrom, edto, edcc, edBcc, edSubject: string;
      edContent: TStrings);

    procedure AttachFile(aAttachmentFilename: String);

    procedure DisplayMultiPartAlternative(aMsg: TIdMessage; aParentIndex, aLastIndex: Integer);

    procedure DisplayMultiPartMixed(aMsg: TIdMessage; aParentIndex, aLastIndex: Integer);

    procedure DisplayPlainText(Body: TStrings);

    procedure DisplayHTML(Body: TStrings);

    procedure DisplayMsg(aMsg: TIdMessage);

    procedure CommandLineEMail;

  end;

var
  SimpleMailForm: TSimpleMailForm;





implementation

uses Unit_email_write, Unit_email_settings, ABOUT, Unit_emailBenutzerliste;

{$R *.dfm}

procedure TSimpleMailForm.Benutzerliste1Click(Sender: TObject);
begin

     BenutzerListenAnzeigeForm.Benutzerliste := FEMailUserList;

     BenutzerListenAnzeigeForm.Show;
end;

procedure TSimpleMailForm.ber1Click(Sender: TObject);
begin
  AboutBox.Show;
end;

procedure TSimpleMailForm.Connect1Click(Sender: TObject);
begin
  if not MyIndyPOP3.Connected then
  begin
    MyIndyPOP3.Host := EMailSettingsForm.popedHost.Text;
    MyIndyPOP3.Port := StrToInt(EMailSettingsForm.popedPort.Text);
    MyIndyPOP3.UserName := EMailSettingsForm.popedUser.Text;
    MyIndyPOP3.Password := EMailSettingsForm.popedPassword.Text;
    MyIndyPOP3.Connect;
    Connect1.checked := true;
    SimpleMailStatusBar.SimpleText := ' connected to ' +
      EMailSettingsForm.popedHost.Text;
  end
  else
  begin
    MyIndyPOP3.Disconnect;

    Connect1.checked := false;

    SimpleMailStatusBar.SimpleText := ' disconnected from ' +
      EMailSettingsForm.popedHost.Text;
  end;
end;

procedure TSimpleMailForm.EMailInListBoxDblClick(Sender: TObject);
begin

  SelectedMailItem := EMailInListBox.ItemIndex;

  SimpleMailStatusBar.SimpleText := ' MailItem ' + IntToStr(SelectedMailItem);

  MailBodyMemo.Lines.Clear;

  MyIndyPOP3.Retrieve(SelectedMailItem,
    TIdMessage(MsgList.Items[SelectedMailItem - 1]));

  MailSubjectLabel.Caption := 'Subject: ' +
    TIdMessage(MsgList.Items[SelectedMailItem]).Subject;

  MailFromLabel.Caption := 'From  : ' +
    TIdMessage(MsgList.Items[SelectedMailItem]).FromList.EMailAddresses;

  BCCLabel.Caption := 'BCC   : ' + TIdMessage(MsgList.Items[SelectedMailItem])
    .BccList.EMailAddresses;

  CCLabel.Caption := 'CC   : ' + TIdMessage(MsgList.Items[SelectedMailItem])
    .CCList.EMailAddresses;

//  MailBodyMemo.Lines.AddStrings
//     (LinesFromMsg(TIdMessage(MsgList.Items[SelectedMailItem])));

DisplayMsg( TIdMessage(MsgList.Items[SelectedMailItem]));

end;


procedure TSimpleMailForm.DisplayPlainText(Body: TStrings);
begin
  // display plain text as needed...

  MailBodyMemo.Lines.AddStrings(Body);
end;

procedure TSimpleMailForm.DisplayHTML(Body: TStrings);
begin
  // display html as needed...
  RichEdit1.Lines.AddStrings(Body)
end;

procedure TSimpleMailForm.DisplayMultiPartAlternative(aMsg: TIdMessage; aParentIndex, aLastIndex: Integer);
var
  Part: TIdMessagePart;
  i: Integer;
begin
  for i := aLastIndex-1 downto aParentIndex+1 do
  begin
    Part := aMsg.MessageParts.Items[i];
    if (Part.ParentPart = aParentIndex) and (Part is TIdText) then
    begin
      if IsHeaderMediaType(Part.ContentType, 'text/html') then
      begin
        DisplayHTML(TIdText(Part).Body);
        Exit;
      end;
      if IsHeaderMediaType(Part.ContentType, 'text/plain') then
      begin
        DisplayPlainText(TIdText(Part).Body);
        Exit;
      end;
    end;
  end;
  // nothing supported to display...
end;

procedure TSimpleMailForm.DisplayMultiPartMixed(aMsg: TIdMessage; aParentIndex, aLastIndex: Integer);
var
  Part: TIdMessagePart;
  i: Integer;
begin
  for i := aLastIndex-1 downto aParentIndex+1 do
  begin
    Part := aMsg.MessageParts.Items[i];
    if (Part.ParentPart = aParentIndex) and (Part is TIdText) then
    begin
      if IsHeaderMediaType(Part.ContentType, 'multipart/alternative') then
      begin
        DisplayMultiPartAlternative(aMsg, Part.Index, aLastIndex);
        Exit;
      end;
      if IsHeaderMediaType(Part.ContentType, 'text/html') then
      begin
          DisplayHTML(TIdText(Part).body);
        Exit;
      end;
      if IsHeaderMediaType(Part.ContentType, 'text/plain') then
      begin
          DisplayPlainText(TIdText(Part).body);
        Exit;
      end;
      aLastIndex := i;
    end;
    // nothing supported to display...
  end;
end;

procedure TSimpleMailForm.DisplayMsg(aMsg: TIdMessage);
var
  ContentType: string;
begin
  ContentType := ExtractHeaderMediaType(aMsg.ContentType);

  SimpleMailStatusBar.SimpleText := ' content Type= ' + ContentType ;

  case PosInStrArray(ContentType, ['multipart/mixed', 'multipart/alternative', 'text/html', 'text/plain','text'], False) of
    0: begin
      DisplayMultiPartAlternative(aMsg, -1, aMsg.MessageParts.Count);
      Exit;
    end;
    1: begin
      DisplayMultiPartMixed(aMsg, -1, aMsg.MessageParts.Count);
      Exit;
    end;
    2: begin
      DisplayHTML(aMsg.Body);
      Exit;
    end;
    3,4: begin
      DisplayPlainText(aMsg.Body);
      Exit;
    end;
  else
    // nothing supported to display...
  end;
end ;

procedure TSimpleMailForm.EMails1Click(Sender: TObject);
var
  MailCount: Integer;
  i: Integer;
  Msg: TIdMessage;
begin

  MailBoxPanel.Caption := ' MAILBOX ' + MyIndyPOP3.Host;

   EMailInListBox.Items.Clear;

  if MyIndyPOP3.Connected then
  begin
    MailCount := MyIndyPOP3.CheckMessages;

    SimpleMailStatusBar.SimpleText := 'Mail Box Size ' +
      IntToStr(MyIndyPOP3.RetrieveMailBoxSize) + ' Bytes' + 'Mail Count ' +
      IntToStr(MailCount);

    for i := 1 To MailCount Do
    begin
      Msg := TIdMessage.Create;
      try

        MyIndyPOP3.RetrieveHeader(i, Msg);

        MsgList.Add(Msg);

        EMailInListBox.Items.Add(DateToStr(Msg.Date) + TimeToStr(Msg.Date) +
          ' von ' + Msg.From.Text);
      finally
        ///
      end;
    end;
  end;

end;

procedure TSimpleMailForm.Exit1Click(Sender: TObject);
begin
  close;
end;

procedure TSimpleMailForm.ffneBenutzerliste1Click(Sender: TObject);
begin
   if MyOpenDialog.Execute then
   begin
     if fileexists(FuserListFile) then
  begin

    FuserListFile := MyOpenDialog.FileName;

    FEMailUserList.LoadFromFile(FuserListFile);

    SimpleMailStatusBar.SimpleText := ' load userliste : ' +  FuserListFile + ' nr of e mail users ' + IntToStr(FEMailUserList.count) ;

  end

   end;
end;

procedure TSimpleMailForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  MsgList.Free;

  FEMailUserList.Free;
end;

procedure TSimpleMailForm.FormCreate(Sender: TObject);
begin
  MsgList := TObjectlist.Create;

  MailSubjectLabel.Caption := 'Subject: ';

  MailFromLabel.Caption := 'From  : ';

  BCCLabel.Caption := 'BCC : ';

  CCLabel.Caption := 'CC  : ';

  FEMailUserList := TEMailUserList.Create;

end;

procedure TSimpleMailForm.FormShow(Sender: TObject);
var
  aFile: String;
  i: Integer;
begin

  for i := 1 to ParamCount do
  begin

    if ParamStr(i) = 'userfile' then
    begin
      FuserListFile := ParamStr(i + 1);
    end;

    if ParamStr(i) = 'activeuserindex' then
    begin
      Factiveuserindex := StrToInt(ParamStr(i + 1))-1;
    end;

    if ParamStr(i) = 'msg_to' then
    begin
       Msg_To := ParamStr(i + 1);
    end;

    if ParamStr(i) = 'msg_sub' then
    begin
       Msg_sub := ParamStr(i + 1);
    end;

      if ParamStr(i) = 'msg_line' then
    begin
       Msg_line := ParamStr(i + 1);
    end;

    if ParamStr(i) = 'msg_attach' then
    begin
       Msg_attach := ParamStr(i + 1);
    end;

  end;

  ///
  ///
  /// -----------------------------------
  ///
  ///

  if fileexists(FuserListFile) then
  begin

    FEMailUserList.LoadFromFile(FuserListFile);

    SimpleMailStatusBar.SimpleText := ' load userliste : '   + '      nr of e mail users : ' + IntToStr(FEMailUserList.count) ;

  end
  else
  begin

  SimpleMailStatusBar.SimpleText := ' userliste not found !  command line param : userfile  ' ;

  end;

  if ((Factiveuserindex > -1) and (Factiveuserindex < FEMailUserList.Count ))
  then
  begin

    SetActiveUser(Factiveuserindex);

  end;


    ///
  ///
  /// -----send a mail and close the program at the end ...----------
  ///
  ///

  if (msg_to <> '') and (msg_line<> '') and (msg_sub <>'') then
       begin

       SimpleMailStatusBar.SimpleText := 'sending robot mail .... ';

       CommandLineEMail;

       SimpleMailStatusBar.SimpleText := 'sending robot done .... ';

       Close;

       end;

end;


procedure TSimpleMailForm.CommandLineEMail;
var MyLines : TStrings;
begin
      MyLines :=TStringList.Create;

       SetSMTPValues(nil);

       AttachFile(msg_attach);

       MyLines.Add(msg_line);

       MyLines.Add('********************************************* ');

       MyLines.Add(' this is an automatic generated e mail ');

       MyLines.Add(' generated with FREE SOFTWARE simple mail ' );

       MyLines.Add(' http://sourceforge.net/projects/simpleemail/  ');

       MyLines.Add('********************************************* ');

       SendMail( FActiveEMailUser.UserEMail, msg_to, '','', msg_sub, MyLines );

       MyLines.Free;

       if (Attachment <> nil) then freeandnil( Attachment );


end;

procedure TSimpleMailForm.SetActiveUser(aUserIndex: Integer);

begin

  FActiveEMailUser := TEMailUser(FEMailUserList.Items[aUserIndex]);

  LoadPostOfficeParameter( FActiveEMailUser.UserSettings);

end;

procedure TSimpleMailForm.LoadPostOfficeParameter(aFile: String);
var
  aIniFile: TIniFile;
begin

  aIniFile := TIniFile.Create(aFile);

  EMailSettingsForm.popedHost.Text := aIniFile.ReadString('POP3', 'Host',
    'pop3.myoffice.org');
  EMailSettingsForm.popedPort.Text := aIniFile.ReadString('POP3',
    'port', '110');
  EMailSettingsForm.popedUser.Text := aIniFile.ReadString('POP3', 'user',
    'error no user name found !');
  EMailSettingsForm.popedPassword.Text := aIniFile.ReadString('POP3',
    'password', 'error no user password found !');

  EMailSettingsForm.smtpedHost.Text := aIniFile.ReadString('smtp', 'Host',
    'pop3.myoffice.org');
  EMailSettingsForm.smtpedUser.Text := aIniFile.ReadString('smtp', 'user',
    'error no user name found !');
  EMailSettingsForm.smtpedPassword.Text := aIniFile.ReadString('smtp',
    'password', 'error no user password found !');

  aIniFile.Free;

end;

procedure TSimpleMailForm.EmailSettingsMenuItemClick(Sender: TObject);
begin

  SimpleMailStatusBar.SimpleText := 'Kontoeinstellungen anzeigen und abändern';

  EMailSettingsForm.EMailUserList := FEMailUserList;

  EMailSettingsForm.Show;
end;

procedure TSimpleMailForm.WriteNewEMail1Click(Sender: TObject);
begin

   SimpleMailStatusBar.SimpleText := 'EMails schreiben';

  WriteEMailForm.Show;
end;

procedure TSimpleMailForm.SetSMTPValues(Sender: TObject);
begin
  // Authentifizierung mit dem smtp server ---  Server authentication
  MyIndySMTP.AuthType := TIdSMTPAuthenticationType.satDefault;

  // Benutzerdaten für Authentifizierung --- set Server Username & Password
  MyIndySMTP.UserName := EMailSettingsForm.smtpedUser.Text;
  MyIndySMTP.Password := EMailSettingsForm.smtpedPassword.Text;

  // Server-Daten
  MyIndySMTP.Host := EMailSettingsForm.smtpedHost.Text;
  MyIndySMTP.Port := 25; // confirm this data !
end;

procedure TSimpleMailForm.AttachFile(aAttachmentFilename: String);
begin
  Attachment := TIdAttachmentFile.Create(MyNewIndyMessage.MessageParts,
    aAttachmentFilename);
end;

procedure TSimpleMailForm.SendMail(edfrom, edto, edcc, edBcc, edSubject: string;
  edContent: TStrings);
begin
  MyIndySMTP.Connect;

  try
    MyNewIndyMessage.From.Address := edfrom;
    MyNewIndyMessage.Recipients.EMailAddresses := edto;
    MyNewIndyMessage.CCList.EMailAddresses := edcc;
    MyNewIndyMessage.BccList.EMailAddresses := edBcc;
    MyNewIndyMessage.Subject := edSubject;
    MyNewIndyMessage.Body := edContent;
    MyIndySMTP.Send(MyNewIndyMessage);
  finally
    MyIndySMTP.Disconnect;
  end;
end;



end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz