GARANTIR DESCONTO

Fórum Connection Closed Gracefully delphi xe10 #559782

02/08/2016

0

por favor, cara eu já procurei em todo lugar, e não acho a solução para essa coisa que aparece na tela, eu gostaria de pelo menos ignora-la, por favor se alguém souber, me instrua a fazer isso, eu estava tentando fazer uma aplicação de enviar email e não dei conta, e nem sei se funcionar por causa dessa mensagem que aparece "Connection Closed Gracefully"
gostaria apenas de ignora-la, eu visitei outras duvidas aqui relacionada a isso e não conseguir entender nada, por isso abri a pergunta aqui, agradeço desde já.
Mateus

Mateus

Responder

Post mais votado

06/08/2016

Colocou suas configurações de conta correto.
Você deve trocar

//setup SMTP
SMTP.Host := ledHost.Text;
SMTP.Username := 'admin@minhaweb2.com';
SMTP.Password := 'www.mw2';
SMTP.Port := 26;

//setup mail message
MailMessage.From.Address := 'admin@minhaweb2.com'; //ledFrom.Text;
MailMessage.Recipients.EMailAddresses := ledTo.Text; // + ',' + ledCC.Text;

De acordo suas configurações de conta conforme padrão do seu provedor de hospedagem

Raimundo Pereira

Raimundo Pereira
Responder

Gostei + 1

Mais Posts

02/08/2016

Luiz Menin

Essa mensagem já ocorreu pra mim algumas vezes utilizando DataSnap.
Quando existe uma conexão ativa entre client server e por acaso o Server cai e volta, no momento que eu tentasse abrir algum dataset que consultava dados recebia essa mensagem.
A solução era fechar a conexão do Client e abrir novamente. Eu sei que não responde diretamente tua pergunta, mas pode dar uma luz.
Responder

Gostei + 0

06/08/2016

Augusto Angelim

Tem uma solução com o Indy 10!
Segue o exemplo ORIGINAL que funciona bem!!!

Fiz, derivado dele a função SendMail(...) que funciona bem!!!


unit MainUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdComponent, IdTCPConnection, IdTCPClient, IdMessageClient,
  IdSMTP, ComCtrls, StdCtrls, Buttons, ExtCtrls, IdBaseComponent, IdMessage,
  IdExplicitTLSClientServerBase, IdSMTPBase, inifiles;

type
  TMailerForm = class(TForm)
    MailMessage: TIdMessage;
    pnlTop: TPanel;
    pnlBottom: TPanel;
    ledHost: TLabeledEdit;
    Body: TMemo;
    ledAttachment: TLabeledEdit;
    btnAttachment: TBitBtn;
    SMTP: TIdSMTP;
    ledFrom: TLabeledEdit;
    ledTo: TLabeledEdit;
    ledCC: TLabeledEdit;
    ledSubject: TLabeledEdit;
    btnSendMail: TBitBtn;
    StatusMemo: TMemo;
    AttachmentDialog: TOpenDialog;
    procedure btnSendMailClick(Sender: TObject);
    procedure SMTPStatus(ASender: TObject; const AStatus: TIdStatus;
      const AStatusText: String);
    procedure btnAttachmentClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    procedure GetSettings;
    procedure SaveSettings;
  public
    { Public declarations }
  end;

var
  MailerForm: TMailerForm;

implementation

{$R *.dfm}

procedure TMailerForm.btnSendMailClick(Sender: TObject);
begin
  StatusMemo.Clear;

  //setup SMTP
  SMTP.Host     := ledHost.Text;
  SMTP.Username := 'admin@minhaweb2.com';
  SMTP.Password := 'www.mw2';
  SMTP.Port     := 26;

  //setup mail message
  MailMessage.From.Address := 'admin@minhaweb2.com'; //ledFrom.Text;
  MailMessage.Recipients.EMailAddresses := ledTo.Text; // + ',' + ledCC.Text;

  MailMessage.Subject := ledSubject.Text;
  MailMessage.Body.Text := Body.Text;
  MailMessage.ContentType := 'text/html';

  //send mail
  try
    try
      SMTP.Connect;
      if SMTP.Connected then  SMTP.Send(MailMessage)
      else StatusMemo.Lines.Insert(0, 'Connect ERROR: ');
    except on E:Exception do
      StatusMemo.Lines.Insert(0, 'ERROR: ' + E.Message);
    end;
  finally
    if SMTP.Connected then SMTP.Disconnect;
  end;

end; (* btnSendMail Click *)

procedure TMailerForm.SMTPStatus(ASender: TObject; const AStatus: TIdStatus;
  const AStatusText: String);
begin
  StatusMemo.Lines.Insert(0,'Status: ' + AStatusText);
end; (* SMTP Status *)

procedure TMailerForm.btnAttachmentClick(Sender: TObject);
begin
  if AttachmentDialog.Execute then
    ledAttachment.Text := AttachmentDialog.FileName;
end;

procedure TMailerForm.FormCreate(Sender: TObject);
begin
  GetSettings;
end;

procedure TMailerForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  SaveSettings;
end;

procedure TMailerForm.GetSettings;
var
  ini : TIniFile;
begin
  Ini := TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini'));
  try
    ledHost.Text := ini.ReadString('SMTP','Host','');

    ledFrom.Text := ini.ReadString('MAIL','From','');
    ledTo.Text := ini.ReadString('MAIL','To','');
    ledCC.Text := ini.ReadString('MAIL','CC','');
  finally
    ini.Free;
  end;
end; (* GetSettings *)

procedure TMailerForm.SaveSettings;
var
  ini : TIniFile;
begin
  Ini := TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini'));
  try
    ini.WriteString('SMTP','Host',ledHost.Text);

    ini.WriteString('MAIL','From',ledFrom.Text);
    ini.WriteString('MAIL','To',ledTo.Text);
    ini.WriteString('MAIL','CC',ledCC.Text);
  finally
    ini.Free;
  end;
end; (* SaveSettings *)

end.


==========================================================================

Função que fiz derivado do exemplo acima!

string := SendMail(sHost,sUser,sPW,iPort,sTO,sCC,sSubject,sBody,sType,sCharSet);


Função:

function SendMail(sHost,sUser,sPW:String;iPort:Integer; sTO,sCC,sSubject,sBody,sType,sCharSet:String): String;
var
MailMessage: TIdMessage;
// ccMail : TIdEMailAddressItem;
// replyTo : TIdEMailAddressItem;
SMTP : TIdSMTP;
begin
//
Result := 'Ok';
//
MailMessage := TIdMessage.Create;
SMTP := TIdSMTP.Create;
//setup SMTP
SMTP.Host := sHost;
SMTP.Username := sUser;
SMTP.Password := sPW;
SMTP.Port := iPort;
SMTP.MailAgent := 'minhaWEB2.MAIL.Sender';
//setup mail message
MailMessage.From.Address := sUser;
// if (Length(Trim(sCC)) = 0) then MailMessage.Recipients.EMailAddresses := sTO
// else MailMessage.Recipients.EMailAddresses := sTO + ',' +sCC;
//
MailMessage.Recipients.EMailAddresses := sTO;
MailMessage.ReplyTo.EMailAddresses := sCC;
//
MailMessage.CharSet := sCharSet; //'ISO-8859-1';
MailMessage.Subject := sSubject;
MailMessage.Body.Text := sBody;
MailMessage.ContentType := sType; //'text/html';
//send mail
try
try
SMTP.Connect;
if SMTP.Connected then SMTP.Send(MailMessage)
else Result := 'ConnectFail';
except on E:Exception do
Result := E.Message;
end;
finally
if SMTP.Connected then SMTP.Disconnect;
end;
//
end;
//===============================================================[ SendMail ]===
Responder

Gostei + 0

06/08/2016

Mateus

beleza, vou tentar
Responder

Gostei + 0

06/08/2016

Mateus

beleza, vou tentar
Responder

Gostei + 0

06/08/2016

Mateus

cara beleza, aqui deu time out, oque deve estar causando isso?
Responder

Gostei + 0

07/08/2016

Mateus

beleza tentarei assim, eu tinha posto a porta diferente dessa
o resto ta igualzinho
Responder

Gostei + 0

08/08/2016

Mateus

perdoe-me a minha falta de conhecimento, vc poderia preencher tudo isso que vc disse que deve ser mudado pra eu entender oque devo por conforme minhas configurações, sou muito noob
Responder

Gostei + 0

08/08/2016

Raimundo Pereira

1. Passo é ter uma conta de email qual será usada para enviar os emails
2. Basta preencher de acordo com o provedor do seu email

Exemplo:

Supomos que eu tenho uma conta no Gmail logo o meu provedor é gmail.
Minha configuração ficará assim

{ Aqui você coloca o seu servidor SMTP }
NMSMTP1.Host := 'smtp.gmail.com.br';

{ Porta SMTP, Esta porta não deve ser alterada!}
NMSMTP1.Port := 587;

{Seu Nome de login }
NMSMTP1.UserID := 'p2@gmail.com';

{ Aqui você se Conecta ao servidor }
NMSMTP1.Connect;

{ Se ocorrer algum erro durante a conexão com o servidor, o aplicativo dá uma mensagem de erro }
if not NMSMTP1.Connected then
raise Exception.Create('Erro de conexão');

with NMSMTP1.PostMessage do begin
{Aqui você digita o seu e-mail }
FromAddress := 'p2@gmail.com';
{Aqui você digita seu nome }
FromName := 'P2';
{Aqui o E-mail do destinatário }
ToAddress.Clear;
ToAddress.Add('rcp@outlook.com.br');

{ Aqui é a parte do assunto da mensagem }
Subject := 'Assunto da mensagem';

{ Este será o corpo da mensagem }
Body.Clear;
Body.Add('1ª linha da mensagem');
Body.Add('2ª linha da mensagem');
Body.Add(''); { Linha em branco }
Body.Add('última linha da mensagem');

{ Anexar arquivos(Se não quiser anexar arquivos pode apagar as tres linhas seguintes) }

Attachments.Clear;

{ Aqui deve conter o endereço do anexo }
Attachments.Add('c:\diretorio_do_arquivo\arquivo.txt');

end;

{ Mandar o e-mail }
NMSMTP1.SendMail;
{ É importante esta parte pois ela disconecta do servidor }
NMSMTP1.Disconnect;
end;
Responder

Gostei + 1

09/08/2016

Mateus

acho que obtive progresso por que o erro agora é diferente-> must issue a STARTTLS command first. <-- oque será que deve ser agora?
Responder

Gostei + 0

09/08/2016

Raimundo Pereira

Qual seu provedor de email? Alguns requer configuração autenticação TSL
Responder

Gostei + 0

09/08/2016

Mateus

gmail, mais se por outro provedor ser mais facil posso começar tentar por outro
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar