AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TSendMail

Ein Thema von HiWieGehts · begonnen am 4. Jul 2019 · letzter Beitrag vom 5. Jul 2019
Antwort Antwort
HiWieGehts

Registriert seit: 19. Aug 2005
101 Beiträge
 
Delphi 10.4 Sydney
 
#1

TSendMail

  Alt 4. Jul 2019, 11:06
hallo,
ich versuche seit Tagen in Delphi 10 eine Mail mit vorangestellten Werten zu erzeugen. Ich finde im WWW keine brauchbare Info, wie die TSendMail-Komponente zu verwenden ist. Wer kann mir helfen? Bekomme immer die Fehlermeldung UserAbort ohne dass das Mail-Fenster geöffnet wird. Codeauszug:
Delphi-Quellcode:
type
  TForm2 = class(TForm)
    ActionList1: TActionList;
    [B] InternetSendMail1: TSendMail;[/B]

procedure TForm2.Button1Click(Sender: TObject);
var
  OK: Boolean;
// RC: TRecipientCollection;
// RI: TRecipientItem;
// CI: TCollectionItem;
begin
  // RI := TRecipientItem.Create(RC);
  // InternetSendMail1.Recipients := rc;
  // RC := TRecipientCollection.Create(InternetSendMail1);
  // RC.Clear;
// InternetSendMail1.Recipients.Clear;
  // ri.Create(CI);
  InternetSendMail1.OnMailSendStatus := SendStatus;
  InternetSendMail1.Recipients.Add;
// InternetSendMail1.Recipients.Count;
  InternetSendMail1.Recipients[0].Address := 'Empfänger@aon.at';
  InternetSendMail1.Recipients[0].RecipientType := rtPrimary;
  InternetSendMail1.Recipients[0].DisplayName := 'Name';
  InternetSendMail1.Subject := 'Test';
  InternetSendMail1.Text.Add('Testtext');
// // rc..Assign(ri);
  // InternetSendMail1.Recipients.Assign(RC);
  // RC.Add;
  // RC. := InternetSendMail1.Recipients;
// InternetSendMail1.Visible := True;
  OK := InternetSendMail1.Execute;
end;
Win 10 64 Bit
Outlook 365
LG, HiWieGehts
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#2

AW: TSendMail

  Alt 4. Jul 2019, 11:11
Muss es dieses TSendMail sein? Wenn nicht, hätte ich eine bessere Lösung für dich.
Ich kenne TSendMail eh nicht. Meine Lösung braucht die Daten eines SMTP-Servers.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: TSendMail

  Alt 4. Jul 2019, 12:16
Hallo,
nimm doch mal das Bsp. aus der Hilfe.

http://docwiki.embarcadero.com/CodeE...ndMail_(Delphi)

Dann musst du zwar ein paar Sache eintragen (Empfänger),
aber wenn das geht, kannst du deine Sachen schrittweise wieder reinnehmen.
Heiko
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#4

AW: TSendMail

  Alt 4. Jul 2019, 15:16
Das Beispiel ist unvollständig:

Welchen SMTP-Server nutzt Du?
Welche Ports nutzt Du?

Der Fehler kann bedeuten, dass mit Benutzername und Passwort, sowie SMTP-Server und / oder Port eine gültige Anmeldung nicht möglich ist.

Bei Nutzung anderer Komponenten wird dieses Problem bestehen bleiben, bis auf jeden Fall alle Angaben korrekt sind.
Sind sie jedoch alle korrekt, sollte die Nutzung der Komponenten egal sein.

Tante Google liefert als erstes Ergebnis : https://www.google.com/search?q=mail...utf-8&oe=utf-8

Dann wäre da noch:
http://telekomcenter.at/mailservereinstellungen/
https://www.a1.net/hilfe-kontakt/art...00000000027481
und viele andere ...
  Mit Zitat antworten Zitat
Michael II
Online

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
719 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: TSendMail

  Alt 4. Jul 2019, 17:42
Ich glaube TSendMail verwendet die MAPI Schnittstelle.

Wenn dem so ist: Wenn du ein MAPI fähiges eMail Programm P installiert hast (und dort MAPI eingeschaltet ist), dann sendet TSendMail an P und dann wird deine eMail von P aus gesendet.

Im Help steht:
the e-mail is shown for editing (with the help of any e-mail application available on the computer).


Sende doch deine eMail direkt an den Mailserver via die entsprechende Indy oder ICSOverbyte (SyncSmtpCli oder SslSmtpClient) oder irgend eine andere eMail Komponente.

Mit ICSOverbyte (via Delphi "Tools > GetIt…" installierbar) SycSMTPCli zum Beispiel so:

Delphi-Quellcode:
  
  SyncSmtpCli1.AbortSync;

  SyncSmtpCli1.SignOn := 'swiss.ch';
  SyncSmtpCli1.FromName := 'supp@swiss.ch';
  SyncSmtpCli1.HdrFrom := 'supp@swiss.ch';
  SyncSmtpCli1.Host := 'mail.swiss.ch';
  SyncSmtpCli1.Password := mailpw;
  SyncSmtpCli1.UserName := mailID;
  SyncSmtpCli1.AuthType := smtpAuthLogin;

  SyncSmtpCli1.HdrTo := ….
  SyncSmtpCli1.RcptName.Clear;
  SyncSmtpCli1.RcptName.Add( SyncSmtpCli1.HdrTo );
  SyncSmtpCli1.HdrSubject := ….
  SyncSmtpCli1.MailMessage.Text := ….

  SyncSmtpCli1.ConnectSync;
  SyncSmtpCli1.EhloSync;
  SyncSmtpCli1.AuthSync;
  SyncSmtpCli1.MailSync;
  SyncSmtpCli1.QuitSync;
Wobei die obigen Methoden TRUE zurückgeben, wenn OK. D.h. du solltest die Rückgabewerte von ConnectSync bis QuitSync noch sinnvoll auswerten...
Michael Gasser

Geändert von Michael II ( 4. Jul 2019 um 20:00 Uhr)
  Mit Zitat antworten Zitat
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
857 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: TSendMail

  Alt 5. Jul 2019, 07:17
Hier mal eine Beispielklasse, wie ich auf allen Betriebssystemen Mails versende,
dies nutzt aber nicht deinen E-Mail-Client, sondern verschickt Mails im Hintergrund über einen SMTP-Server:

Delphi-Quellcode:
unit EmailUtils;

interface

uses
  IdSMTP, IdMessage, IdEMailAddress, IdAttachmentFile,
  IdSSL, IdSSLOpenSSL, IdExplicitTLSClientServerBase, IdIOHandlerStack,
  IdSMTPBase, IdTCPClient, IdIOHandler, IdIOHandlerSocket,
  System.Classes, System.UITypes;

type
  TEMailUtils = class(TObject)
  public
    class function sendEmail(receiver,subject,body,attachment:String):boolean;
  end;

implementation


{$IFDEF IOS}
  uses System.SysUtils,IdSSLOpenSSLHeaders_Static;
{$ELSE}
  uses System.SysUtils;
{$ENDIF}

class function TEMailUtils.sendEmail(receiver,subject,body,attachment:String):boolean;
var IDSMTP1:TIDSMTP;
    IdIOHandler:TIdIOHandler;
    IdMessage: TIdMessage;
    errorInfo:String;
begin
  Result:=false;
  try
    IDSMTP1:=TIDSMTP.Create();
    IdIOHandler:=TIdSSLIOHandlerSocketOpenSSL.Create();
    try
      errorInfo:='fill IDSMTP1';
      IDSMTP1.Host := '[smtp-server]';
      IDSMTP1.Port := [Port];
      IDSMTP1.IOHandler := IdIOHandler;
      IDSMTP1.AuthType := satDefault;
      IDSMTP1.UseTLS := utUseRequireTLS;
      IDSMTP1.Username := '[username]';
      IDSMTP1.Password := '[password]';
      IdMessage := TIdMessage.Create(nil);
      try
        errorInfo:='fill IdMessage';
        IdMessage.From.Name:='[From]';
        IdMessage.From.Address:='[From-Emailaddress]';
        IdMessage.Subject:=subject;
        IdMessage.Body.Add(body);
        IdMessage.Recipients.EMailAddresses:=receiver;
        if (attachment<>'') then
          TIdAttachmentFile.Create(IdMessage.MessageParts,attachment);
        errorInfo:='check IDSMTP1';
        if not IDSMTP1.Connected then
        begin
          errorInfo:='conect IDSMTP1';
          IDSMTP1.Connect;
        end;
        errorInfo:='send IdMessage';
        IDSMTP1.Send(IdMessage);
        Result:=true;
      finally
        IdMessage.Free;
      end;
    finally
      IDSMTP1.Free;
      IdIOHandler.Free;
    end;
  except on E: Exception do
    //do something
  end;
end;

end.
P.S.: Es müssen natürlich die SMTP-Email-Infos eingetragen werden.
P.P.S. : Ich habe meinen Logging-Code entfernt, damit es kompilierbar ist, kann aber nicht ausschließen, dabei etwas übersehen zu haben.
  Mit Zitat antworten Zitat
Antwort Antwort


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 07:25 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