Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   eMail mit Anhang versenden XE5 / Outlook 2013 (https://www.delphipraxis.net/181354-email-mit-anhang-versenden-xe5-outlook-2013-a.html)

Sidi61 8. Aug 2014 10:38

eMail mit Anhang versenden XE5 / Outlook 2013
 
Hallo zusammen,

hatte bisher mails mit Anhang unter Delphi 2007 und Outlook 2003 versendet, Indy funktionierte einwandfrei. Nun habe ich Delphi XE5 und Outlook 2013 und ich bekomme immer die Fehlermeldung : Socket-Fehler#10013Zugriff verweigert.

Habe schon alle möglichen Lösungsansätze die ich in verschiedenen Foren gefunden hatte, ausprobiert - leider ohne Erfolg. Hatte jemand das selbe Problem und kennt die Lösung?

Hier mal der letzte Stand meines source

Code:
var
   SR: TSearchRec;
   F : textfile;
   S : string;
   i : integer;

   Fehler : boolean;

begin

  assignfile(F,Arbeitsverzeichnis + Mailkontodat);
  reset(F);
  Listbox_versand.Clear;
  try
    while not eof(F) do
    begin
      readln(F,S);
      Listbox_versand.items.Add(S);
    end;
  finally
    closefile(F);
  end;

  // Message
  idmessage1.Clear;
  idSMTP1.Host := Listbox_versand.Items[2];
  idSMTP1.Port := 25;
  idSMTP1.AuthType := satDefault; {satNone wenn keine Authentifizierung benötigt wird}
  idSMTP1.Username := Listbox_versand.Items[3];
  idSMTP1.Password := Entschluesseln(Listbox_versand.Items[4]);
  IdMessage1.From.Text := Listbox_versand.Items[0];
  IdMessage1.Recipients.EMailAddresses := Listbox_versand.Items[1]; // Empfänger
  IdMessage1.BccList.EMailAddresses := ''; {optional Blincopy Empfänger}
  IdMessage1.CCList.EMailAddresses := ''; {optional Copy Empfänger}
  IdMessage1.Subject := 'Betreff';
  IdMessage1.ContentType := 'multipart/*'; // weil mit Text und Anhang
  //IdMessage1.ContentType := 'text/plain'; // weil nur Text

  IdMessage1.Body.Clear;
  IDMessage1.Body.Text := 'Indy Testmail';

  {es werden die Dateinamen ohne Pfad der im Versandverzeichnis befindlichen Dateien in die Listbox_versand kopiert}
  Listbox_versand.Clear;
  if FindFirst(Versandverzeichnis + '*.*', faAnyFile, SR) = 0 then
  begin
    repeat
      if (SR.Attr <> faDirectory) then
      begin
        Listbox_versand.Items.Add(SR.Name);
      end;
    until FindNext(SR) <> 0;
    FindClose(SR);
  end;

  {Anhänge einlesen}

  for I := 0 to Listbox_versand.Count -1 do
  begin
    TIdAttachmentFile.Create(idMessage1.MessageParts,Versandverzeichnis + Listbox_versand.Items[i]);
  end;

  try
    try
      IdSMTP1.Connect;
      IdSMTP1.Authenticate; {nicht zwingend erforderlich}
      if idSMTP1.Connected then IdSMTP1.Send(IdMessage1);
    except on E:Exception do
      begin
        showmessage(e.Message);
        fehler := true;
      end;
    end;
  finally
    if idSMTP1.Connected then IdSMTP1.Disconnect();
  end;

  if fehler = false then showmessage('die Nachricht wurde erfolgreich versendet');

end;
weiss echt nicht mehr weiter :cry:

hoffe auf eure Hilfe - Danke - Gruß Sidi

Der schöne Günther 8. Aug 2014 10:42

AW: eMail mit Anhang versenden XE5 / Outlook 2013
 
Kannst du ein Minimalbeispiel zu "Verschicke einfache Textnachricht" einstellen? Dann kann jemand mit XE5 und Outlook2013 (wie ich) das auch nachstellen.

Vor allem: Wo kommt die Exception? Connect, Authenticate oder Send?

Sidi61 8. Aug 2014 10:51

AW: eMail mit Anhang versenden XE5 / Outlook 2013
 
hier mal ein Minimalbeispiel

im Form muss aus der Indy Komponentenpallete eine TidMessage und TidSMTP Komponente gezogen sein.

Code:

var
   SR: TSearchRec;
   F : textfile;
   S : string;
   i : integer;

   Fehler : boolean;

begin

  // Message
  idmessage1.Clear;
  idSMTP1.Host := 'smtpmail.t-online.de';
  idSMTP1.Port := 25;
  idSMTP1.AuthType := satDefault; {satNone wenn keine Authentifizierung benötigt wird}
  idSMTP1.Username := 'dein Username';
  idSMTP1.Password := 'dein Passwort';
  IdMessage1.From.Text := 'absender@sowiso.de';
  IdMessage1.Recipients.EMailAddresses := 'Empfänger@sowieso.de'; // Empfänger
  IdMessage1.BccList.EMailAddresses := ''; {optional Blincopy Empfänger}
  IdMessage1.CCList.EMailAddresses := ''; {optional Copy Empfänger}
  IdMessage1.Subject := 'Betreff';
  IdMessage1.ContentType := 'multipart/*'; // weil mit Text und Anhang
 

  IdMessage1.Body.Clear;
  IDMessage1.Body.Text := 'Indy Testmail';

 
  try
    try
      IdSMTP1.Connect;
      IdSMTP1.Authenticate; {nicht zwingend erforderlich}
      if idSMTP1.Connected then IdSMTP1.Send(IdMessage1);
    except on E:Exception do
      begin
        showmessage(e.Message);
        fehler := true;
      end;
    end;
  finally
    if idSMTP1.Connected then IdSMTP1.Disconnect();
  end;

  if fehler = false then showmessage('die Nachricht wurde erfolgreich versendet');

end;

Bernhard Geyer 8. Aug 2014 10:58

AW: eMail mit Anhang versenden XE5 / Outlook 2013
 
Was hat das mit Outlook zu tun?
Du versendest per SMTP direkt an den Server. Dieser muss nun natürlich SMTP zulassen.

mjustin 8. Aug 2014 11:02

AW: eMail mit Anhang versenden XE5 / Outlook 2013
 
Zitat:

Zitat von Sidi61 (Beitrag 1267973)
Socket-Fehler#10013Zugriff verweigert.

10013 könnte ein Firewall Problem sein. Ist es denn mit einem anderen SMTP Client (Thunderbird...) und den gleichen Server und Port Einstellungen vom selbenn Rechner aus möglich, Mails per SMTP zu senden?

Sidi61 8. Aug 2014 11:12

AW: eMail mit Anhang versenden XE5 / Outlook 2013
 
vermute mal dass es mit der Authentifizierung zu tun hat, T-Online hat auf Verschlüsselung umgestellt, man bekam eine Anleitung was in Outlook einzustellen ist. Habe jedoch keinen Plan wie ich das in Delphi umsetzen muß

matthiaskary 8. Aug 2014 11:58

AW: eMail mit Anhang versenden XE5 / Outlook 2013
 
Hallo,
die haben bestimmt auf SSL Verschlüsselung umgestellt.
Suche mal im Forum oder bei Google nach Delphi Indy SSL.
Da findest du Beispiele, wie man das lösen kann und
welche Komponete man nehmen muss.

Aviator 8. Aug 2014 12:08

AW: eMail mit Anhang versenden XE5 / Outlook 2013
 
Der SMTP Port bei der Telekom mit SSL (was nur noch funktionieren sollte) ist 465. Außerdem musst du dann auch die SSL Verschlüsselung in deinem Programm hinzufügen, sonst bekommst du keine Mail mehr raus. So war es zumindest bei uns.

Hier mal die Infoseite der Telekom zu Ports für SMTP usw.


Edit: Der Mailserver heißt btw. auch nicht smtpmail sondern securesmtp

gmc616 8. Aug 2014 12:27

AW: eMail mit Anhang versenden XE5 / Outlook 2013
 
Zitat:

Zitat von Aviator (Beitrag 1267998)
Edit: Der Mailserver heißt btw. auch nicht smtpmail sondern securesmtp

Naja, der SSL-SMTP heißt bestimmt securesmtp und ist auf dem Port 465 zu erreichen.
Aber smtpmail lauscht mit Sicherheit auf 25, wenn er denn überhaupt noch existiert ^^.

Den Socketfehler 10013 kriege ich meist bei einem Timeout. Und wenn der smtp-Server nicht mehr da ist ...

Aber das ganze auf SSL umzutsellen ist kein Hexenwerk. google ist von davon.
Nicht vergessen den Port 465 in der Firewall zu öffnen!

Aviator 8. Aug 2014 12:34

AW: eMail mit Anhang versenden XE5 / Outlook 2013
 
Zitat:

Zitat von gmc616 (Beitrag 1268000)
Aber smtpmail lauscht mit Sicherheit auf 25, wenn er denn überhaupt noch existiert ^^.

Eben drum. Ich meine nämlich, dass der gar nicht mehr funktioniert. Zumindest per Outlook bekommt man keine Mail mehr über Port 25 raus wenn mann Telekom-Nutzer ist bzw. Telekom als Mail Provider hat.

Zitat:

Zitat von gmc616 (Beitrag 1268000)
Nicht vergessen den Port 465 in der Firewall zu öffnen!

Ich bin mir nicht sicher, aber ich meine man muss den nicht explizit von Hand öffnen. Ich glaube der ist schon alleine durch eine Windowsregel geöffnet (vlt. auch schon Windows Mail) oder er braucht überhaupt nicht offen zu sein. Aber zur Sicherheit sollte man das natürlich kontrollieren. :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:45 Uhr.
Seite 1 von 2  1 2      

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