Script enviador de emails

31/07/2014

Olá, estou desenvolvendo uma aplicação em Delphi que envia emails através de um 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:

nit 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.


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>


Gostaria de saber se existe algum erro no Script que deveria receber os parâmetros e entregar os emails. Desde já agredeço!

PHP

Jonathas Lima

Melhor resposta

31/07/2014

Olá Jonathas,

aparentemente o seu código para envio de e-mail está OK (e não precisa da estrutura HTML que você colocou), mas provavelmente o envio pode não estar funcionando por dois motivos:

- Não há um software de envio de e-mail (tal como o PostFix)
- Falta um header para que "burle" o sistema anti-spam do e-mail de destino (acredito que este seja o problema), para isto basta colocar algumas informações, de forma que o seu script fique da seguinte forma:


<?php
$email = $_POST['email'] ;
$from = $_POST['from'];
$subject = $_POST['subject'];
$message = $_POST['message'] ;
  
$header .= "Reply-To: Some One <someone@mydomain.com>\r\n";
$header .= "Return-Path: Some One <someone@mydomain.com>\r\n";
$header .= "From: Some One <mydomain@myhost.com>\r\n";
$header .= "Organization: My Organization\r\n";
$header .= "Content-Type: text/plain\r\n";


mail( $email, $subject, $message, $header );
?>



Substitua as informações da variável header e assim o seu e-mail não vai ficar preso em algum filtro anti-spam!

Milléo

Responder Citar

Outras Respostas

31/07/2014

Jonathas Lima

Show de bola Milléo! Desculpe minha falta de experiência com a linguagem, mas como seria substituiras informações da variável header?
Responder Citar

31/07/2014

Jonathas Lima

Seria isso?

$header .= "Reply-To: Some One <jonathaslima@live.com>\r\n";
$header .= "Return-Path: Some One <jonathaslima@live.com>\r\n";
$header .= "From: Some One <webmaster@workbit.hospedagemdesites.ws>\r\n";
$header .= "Organization: My Organization\r\n";
$header .= "Content-Type: text/plain\r\n";
Responder Citar

01/08/2014

Milléo

Isso mesmo! Você pode até alterar mais coisas, mas matenha a estrutura, olha só:

$header .= "Reply-To: Jonathas Lima <jonathaslima@live.com>\r\n";
$header .= "Return-Path: Jonathas Lima <jonathaslima@live.com>\r\n";
$header .= "From: WebMaster <webmaster@workbit.hospedagemdesites.ws>\r\n";
$header .= "Organization: Janathas Lima Ltda. S/A Corp.\r\n";
$header .= "Content-Type: text/plain\r\n";


que dessa forma vai aparecer bem bacana no cabeçalho do e-mail de quem receber a mensagem
Responder Citar