Enviando Email com Delphi com componente IDHTTP
Olá, estou desenvolvendo uma aplicação em Delphi que envia emails através de uma Script em PHP hospedado na locaweb, na aplicação utilizei um componente idhtt e o método post, o problema é que não estou conseguindo fazer o envio dos emails. Gostaria de saber por qual motivo. Segue abaixo meu código, tanto da aplicação quanto o Script em PHP:
O Script em PHP está hospedado com o endereço www.workbit.net/mail.php e está desta forma:
Peço encarecidamente uma ajudar para solucionar este problema, obrigado!
unit UnitEmail;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, IdBaseComponent, IdComponent,
IdTCPConnection, IdTCPClient, IdHTTP, XPMan;
type
TForm1 = class(TForm)
BitBtn1: TBitBtn;
Memo1: TMemo;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
IdHTTP1: TIdHTTP;
XPManifest1: TXPManifest;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.BitBtn1Click(Sender: TObject);
var
Lista: TStringList;
begin
Lista:=TStringList.Create;
try
Lista.Clear;
Lista.Add('email=' + Edit1.Text);
Lista.Add('from=' + Edit2.Text);
Lista.Add('subject=' + Edit3.Text);
Lista.Add('message=' + Memo1.Text);
try
idHTTP1.Post('http://www.workbit.net/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.O Script em PHP está hospedado com o endereço www.workbit.net/mail.php e está desta forma:
<html>
<head>
<title>Mail PHP</title>
</head>
<body>
<?php
$email = $_POST['email'] ;
$from = $_POST['from'];
$subject = $_POST['subject'];
$message = $_POST['message'] ;
mail( $email, $subject,
$message, "From: $from" );
?>
</body>
</html>Peço encarecidamente uma ajudar para solucionar este problema, obrigado!
Jonathas Lima
Curtidas 0
Melhor post
Renato Rubinho
31/07/2014
Buenas,
Os parâmetros não tem que ser enviados entre aspas por serem texto ?
Tente:
Lista.Add('email=' + QuotedStr(Edit1.Text));
Lista.Add('from=' + QuotedStr(Edit2.Text));
Lista.Add('subject=' + QuotedStr(Edit3.Text));
Lista.Add('message=' + QuotedStr(Memo1.Text));
Abraççç,
Renato
Os parâmetros não tem que ser enviados entre aspas por serem texto ?
Tente:
Lista.Add('email=' + QuotedStr(Edit1.Text));
Lista.Add('from=' + QuotedStr(Edit2.Text));
Lista.Add('subject=' + QuotedStr(Edit3.Text));
Lista.Add('message=' + QuotedStr(Memo1.Text));
Abraççç,
Renato
GOSTEI 1
Mais Respostas
Jonathas Lima
31/07/2014
Amigo, eu tentei da forma como vc sugeriu porém ainda não obtive sucesso, será que o Script PHP está correto?
unit UnitEmail;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, IdBaseComponent, IdComponent,
IdTCPConnection, IdTCPClient, IdHTTP, XPMan;
type
TForm1 = class(TForm)
BitBtn1: TBitBtn;
Memo1: TMemo;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
IdHTTP1: TIdHTTP;
XPManifest1: TXPManifest;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.BitBtn1Click(Sender: TObject);
var
Lista: TStringList;
begin
Lista:=TStringList.Create;
try
Lista.Clear;
Lista.Add('email=' + QuotedStr(Edit1.Text));
Lista.Add('from=' + QuotedStr(Edit2.Text));
Lista.Add('subject=' + QuotedStr(Edit3.Text));
Lista.Add('message=' + QuotedStr(Memo1.Text));
try
idHTTP1.Post('http://www.workbit.net/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.
GOSTEI 0
Renato Rubinho
31/07/2014
Pensei que o script estivesse OK.
Tentei chamar o script passando os parâmetros direito no browser e não recebi o e-mail também, nem com aspas e nem sem aspas.
http://www.workbit.net/mail.php?email=emailteste@teste.com.br&from=emailteste@teste.com.br&subject=assunto&message=menssagem
http://www.workbit.net/mail.php?email='emailteste@teste.com.br'&from='emailteste@teste.com.br'&subject='assunto'&message='menssagem'
Não tenho conhecimento avançado em php para te ajudar com o script, mas pelo menos para validar teste preenchendo os valores fixos nas variáveis e veja se chamando ao chamar a página ele envia o e-mail. Se nem isso funcionar, o problema já vem do script incorreto.
<html>
<head>
<title>Mail PHP</title>
</head>
<body>
<?php
$email = 'emailteste@teste.com.br'; // preencha um e-mail válido
$from = 'emailteste@teste.com.br'; // preencha um e-mail válido
$subject = 'assunto';
$message = 'mensagem';
mail( $email, $subject,
$message, "From: $from" );
?>
</body>
</html>
Tentei chamar o script passando os parâmetros direito no browser e não recebi o e-mail também, nem com aspas e nem sem aspas.
http://www.workbit.net/mail.php?email=emailteste@teste.com.br&from=emailteste@teste.com.br&subject=assunto&message=menssagem
http://www.workbit.net/mail.php?email='emailteste@teste.com.br'&from='emailteste@teste.com.br'&subject='assunto'&message='menssagem'
Não tenho conhecimento avançado em php para te ajudar com o script, mas pelo menos para validar teste preenchendo os valores fixos nas variáveis e veja se chamando ao chamar a página ele envia o e-mail. Se nem isso funcionar, o problema já vem do script incorreto.
<html>
<head>
<title>Mail PHP</title>
</head>
<body>
<?php
$email = 'emailteste@teste.com.br'; // preencha um e-mail válido
$from = 'emailteste@teste.com.br'; // preencha um e-mail válido
$subject = 'assunto';
$message = 'mensagem';
mail( $email, $subject,
$message, "From: $from" );
?>
</body>
</html>
GOSTEI 1
Jonathas Lima
31/07/2014
Fala parceiro, eu fiz o teste com os valores fixos tbm e não pegou, vou verificar com a galera do PHP aí no fórum p ver se descubro o problema, você ajudou demais brother, muito obrigado!
GOSTEI 0