Enviando Email com Delphi
Estou desenvolvendo uma aplicação onde a mesma interage com um Scrip PHP para envio de dados. Porém, não estou conseguindo ter sucesso com o mesmo. Após a compilação é a presentada uma tela de erro com a seguinte mensagem : Acess violation at adderess 0063d716 in module 'projectEmail.exe'. Read of address 00000008. Li sobre e descobri que isso é uma violação de endereço de memória, ou seja, algum trecho do código está tentando utilizar uma variável ou objeto que ainda não foi criado. Ficaria muito grato se alguém me ajudasse pois ainda não consegui sanar o problema. Abaixo deixo o código da aplicação, Desde já agradeço!
unit UnitEmail;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, IdBaseComponent,
IdComponent, IdTCPConnection, IdTCPClient, IdHTTP;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
IdHTTP: TIdHTTP;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
Lista: TStringList;
IdHTTP: TIdHTTP;
begin
Lista:=TStringList.Create;
try
Lista.Clear;
Lista.Add('email=' + 'kernell19@gmail.com');
Lista.Add('from=' + 'mirovin@gmail.com');
Lista.Add('subject=' + 'Info:::');
Lista.Add('message=' + Memo1.Text);
try
idHTTP.Post('http://month.hol.es/mail.php',Lista);
except
MessageBox(0,'Erro no Envio.','Erro',MB_ICONERROR);
end;
finally
MessageBox(0,'Informações enviadas com sucesso!','Informação',MB_ICONINFORMATION);
end;
end;
end.
Jonathas Lima
Curtidas 0
Melhor post
Marcos Saffran
28/07/2014
Bom dia Jonathas,
esse erro também ocorre quando tenta-se criar um objeto que já está instanciado.
Você está usando a mesma nomenclatura para uma variável global e local, a:
IdHTTP, além de estar sendo usada na uses da interface também.
Tente alterar o nome das variáveis.
esse erro também ocorre quando tenta-se criar um objeto que já está instanciado.
Você está usando a mesma nomenclatura para uma variável global e local, a:
IdHTTP, além de estar sendo usada na uses da interface também.
Tente alterar o nome das variáveis.
GOSTEI 1
Mais Respostas
Jonathas Lima
27/07/2014
Amigo, eu adaptei o código desta forma:
O Problema da Iniciação da variável sumiu, porém, agora está sendo apresentada uma janela de erro com a seguinte mensagem, Hppt/1.1 302 Found . Sinceramente não sei mais o que fazer, aparentemente é um erro simples, mas não sei como tratá-lo. Vou lhe explicar melhor minha situação, eu curso o 6 semestre de Ciência da Computação aqui no Pará, passei no concurso público da Policia Civil e fui chamado, porém, não possuo ainda o superior completo. A solução que encontrei foi conseguir adiantar algumas matérias dos próximos semestres e conseguir logo o certificado. Está sendo uma barra, pois tenho que realizar algumas provas e testes, entre eles, apresentar um programa feito em Delphi que Envie informações de texto via componente Idhttp para um Script PHP hospedado em um host para que o Script faça a entrega do email. Talvez se eu tivesse mais tempo disponível eu já tinha conseguido desenrolar tudo isso, mas trabalho durante toda a semana em um hospital e as vezes mal consigo ligar computador de noite. Amigo, gostaria que você me ajudasse com esse problema, ou talvez me passasse o contato de email de algum programador Delphi que possa me ajudar, estou disponível para pagar pelo serviço do mesmo. Tenho que entregar este exemplo até a semana que vem quando será meu primeiro teste na Faculdade. Desde já agradeço pela compreensão!
unit UnitEmail;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, IdBaseComponent,
IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, IdAuthentication;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
IdHTTP1: TIdHTTP;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
Lista : TStringList;
begin
Lista := TStringList.Create;
Lista.Clear;
Lista.Add('$email=' + 'jonathaslima@live.com');
Lista.Add('$from=' + 'jonathas.lima20@gmail.com');
Lista.Add('$subject=' + 'Info');
Lista.Add('$message=' + Memo1.Text);
try
idHTTP1.Post('http://month.hol.es/mail.php',Lista);
finally
Lista.Free;
end;
end;
end.O Problema da Iniciação da variável sumiu, porém, agora está sendo apresentada uma janela de erro com a seguinte mensagem, Hppt/1.1 302 Found . Sinceramente não sei mais o que fazer, aparentemente é um erro simples, mas não sei como tratá-lo. Vou lhe explicar melhor minha situação, eu curso o 6 semestre de Ciência da Computação aqui no Pará, passei no concurso público da Policia Civil e fui chamado, porém, não possuo ainda o superior completo. A solução que encontrei foi conseguir adiantar algumas matérias dos próximos semestres e conseguir logo o certificado. Está sendo uma barra, pois tenho que realizar algumas provas e testes, entre eles, apresentar um programa feito em Delphi que Envie informações de texto via componente Idhttp para um Script PHP hospedado em um host para que o Script faça a entrega do email. Talvez se eu tivesse mais tempo disponível eu já tinha conseguido desenrolar tudo isso, mas trabalho durante toda a semana em um hospital e as vezes mal consigo ligar computador de noite. Amigo, gostaria que você me ajudasse com esse problema, ou talvez me passasse o contato de email de algum programador Delphi que possa me ajudar, estou disponível para pagar pelo serviço do mesmo. Tenho que entregar este exemplo até a semana que vem quando será meu primeiro teste na Faculdade. Desde já agradeço pela compreensão!
GOSTEI 0