Nao envia email
Ola pessoal, estou com uma situação meio estranha:
criei um programa de envio de emails, até ai tudo tranquilo, eu fiz uma alteração de colocar uma imagem no corpo do email, após essa alteração o programa nao envia mais emails.
abaixo minha unit:
unit ufrmEnviaEmail;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ShellAPI, StdCtrls, DBCtrls, Buttons, FMTBcd, DB, Provider, DBClient, SqlExpr, Grids, DBGrids, IdComponent, IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient, IdSMTPBase, IdSMTP, IdBaseComponent, IdMessage, IdAttachmentFile, Gauges, ComCtrls, ExtCtrls, ExtDlgs, JvExStdCtrls, JvRichEdit;
type TfrmEnviaEmail = class(TForm) OpenDialog1: TOpenDialog; IdMessage: TIdMessage; IdSMTP: TIdSMTP; edtPara: TEdit; edtCC: TEdit; edtCCO: TEdit; edtAssunto: TEdit; cbxPrioridade: TComboBox; cbxConfirmaLeitura: TCheckBox; SpeedButton2: TSpeedButton; ListBox1: TListBox; SpeedButton3: TSpeedButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; SQLQuery1: TSQLQuery; ClientDataSet1: TClientDataSet; DataSetProvider1: TDataSetProvider; DataSource1: TDataSource; DBGrid1: TDBGrid; Gauge: TGauge; Image1: TImage; OpenPictureDialog1: TOpenPictureDialog; JvRichEdit1: TJvRichEdit; procedure SpeedButton1Click(Sender: TObject); procedure FormShow(Sender: TObject); procedure SpeedButton3Click(Sender: TObject); procedure SpeedButton2Click(Sender: TObject); procedure DBGrid1DblClick(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); function BitmapToRtf(graph:TBitmap):string; private { Private declarations } public { Public declarations } end;
var frmEnviaEmail: TfrmEnviaEmail;
implementation
uses ufrmCadEmail, ufrmImportar, uDm, ufrmCadUsuario, ufrmEnviaEmailSSL, ufrmSeguranca;
{$R *.dfm}
function TfrmEnviaEmail.BitmapToRtf(graph: TBitmap): string;var //bi, bb, rtf:string; bi, bb, rtf:Ansistring; bis, bbs:cardinal; achar:ShortString; //HexGraph:string; HexGraph:Ansistring; I:Integer;begin GetDIBSizes(graph.Handle, bis, bbs); SetLength(bi,bis); SetLength(bb,bbs); GetDIB(graph.Handle, graph.Palette, PChar(bi)^, PChar(bb)^); rtf:='{\rtf1 {\pict\dibitmap '; SetLength(HexGraph,(Length(bb) + Length(bi)) * 2); I:=2; For bis:=1 to Length(bi) do begin achar:=Format('%x',[Integer(bi[bis])]); if Length(achar)=1 then achar:='0'+achar; HexGraph[I-1]:= achar[1]; HexGraph[I]:=achar[2]; Inc(I,2); end; For bbs:=1 to Length(bb) do begin achar:=Format('%x',[Integer(bb[bbs])]); if Length(achar)=1 then achar:='0'+achar; HexGraph[I-1]:=achar[1]; HexGraph[I]:=achar[2]; Inc(I,2); end; rtf:=rtf + HexGraph + ' }}'; Result:=rtf;end;
procedure TfrmEnviaEmail.DBGrid1DblClick(Sender: TObject);begin if DBGrid1.SelectedRows.CurrentRowSelected = True then edtPara.Text := edtPara.Text + (ClientDataSet1.FieldByName('EMAIL').AsString) + ',';end;
procedure TfrmEnviaEmail.FormClose(Sender: TObject; var Action: TCloseAction);begin frmEnviaEmail.Free; frmEnviaEmail := nil;end;
procedure TfrmEnviaEmail.FormShow(Sender: TObject);begin ClientDataSet1.Open;{ IdMessage.From.Address := frmSeguranca.email; IdMessage.From.Name := frmSeguranca.nome; IdMessage.From.Text := frmSeguranca.nome + ' ' + frmSeguranca.email; IdMessage.From.User := frmSeguranca.email; IdMessage.From.Domain := 'youcanbe.com.br'; IdSMTP.Username := frmSeguranca.email; IdSMTP.Password := frmSeguranca.senha; }end;
procedure TfrmEnviaEmail.SpeedButton1Click(Sender: TObject);var stringshellexecute: string;begin// stringshellexecute := stringshellexecute +'mailto:' + Edit1.Text {ListBox1.Items.Text} + //'?cc=' + edit2.text + '&cco=' + Edit3.text + '&subject=' + edit4.text +// '&body=' + Memo1.lines.text;// shellexecute(self.handle, 'open',pchar(stringshellexecute),'','',sw_shownormal);end;
procedure TfrmEnviaEmail.SpeedButton2Click(Sender: TObject);var SS:TStringStream; caminho : string;beginif OpenPictureDialog1.Execute then Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName); SS:=TStringStream.Create(BitmapToRtf(Image1.Picture.Bitmap)); JvRichEdit1.PlainText:=False; JvRichEdit1.StreamMode:=[smSelection]; JvRichEdit1.Lines.LoadFromStream(SS); SS.Free;end;
procedure TfrmEnviaEmail.SpeedButton3Click(Sender: TObject);var xAnexo : Integer; x: integer;beginIdMessage.Recipients.EMailAddresses := edtPara.Text;IdMessage.CCList.EMailAddresses := edtCC.Text;IdMessage.BccList.EMailAddresses := edtCCO.Text;
//Trata a Prioridade da mensagemcase cbxPrioridade.ItemIndex of0 : IdMessage.Priority := mpHigh;1 : IdMessage.Priority := mpNormal;2 : IdMessage.Priority := mpLow;end;
IdMessage.Subject := edtAssunto.Text;IdMessage.Body := JvRichEdit1.Lines;
if cbxConfirmaLeitura.Checked thenIdMessage.ReceiptRecipient.Text := IdMessage.From.Text; // Auto Resposta
//Tratando os arquivos anexosfor xAnexo := 0 to ListBox1.Items.Count-1 do TIdAttachmentFile.create(idmessage.MessageParts, TFileName(ListBox1.Items[xAnexo]));
tryIdSMTP.Connect;{Gauge.MaxValue:= mmMensagem.Lines.Count - 1;Gauge.Progress:=0;Gauge.Visible:=True;Gauge.Refresh;for x:=0 to mmMensagem.Lines.Count - 1 do begin Gauge.Progress:= Gauge.Progress + 1; Gauge.Repaint; IdSMTP.Send(IdMessage); end; Gauge.Visible:=False; Gauge.Repaint; }finallyIdSMTP.Disconnect;end;Application.MessageBox('Email enviado com sucesso!', 'Confirmação', MB_ICONINFORMATION + MB_OK);end;
end.
criei um programa de envio de emails, até ai tudo tranquilo, eu fiz uma alteração de colocar uma imagem no corpo do email, após essa alteração o programa nao envia mais emails.
abaixo minha unit:
unit ufrmEnviaEmail;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ShellAPI, StdCtrls, DBCtrls, Buttons, FMTBcd, DB, Provider, DBClient, SqlExpr, Grids, DBGrids, IdComponent, IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient, IdSMTPBase, IdSMTP, IdBaseComponent, IdMessage, IdAttachmentFile, Gauges, ComCtrls, ExtCtrls, ExtDlgs, JvExStdCtrls, JvRichEdit;
type TfrmEnviaEmail = class(TForm) OpenDialog1: TOpenDialog; IdMessage: TIdMessage; IdSMTP: TIdSMTP; edtPara: TEdit; edtCC: TEdit; edtCCO: TEdit; edtAssunto: TEdit; cbxPrioridade: TComboBox; cbxConfirmaLeitura: TCheckBox; SpeedButton2: TSpeedButton; ListBox1: TListBox; SpeedButton3: TSpeedButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; SQLQuery1: TSQLQuery; ClientDataSet1: TClientDataSet; DataSetProvider1: TDataSetProvider; DataSource1: TDataSource; DBGrid1: TDBGrid; Gauge: TGauge; Image1: TImage; OpenPictureDialog1: TOpenPictureDialog; JvRichEdit1: TJvRichEdit; procedure SpeedButton1Click(Sender: TObject); procedure FormShow(Sender: TObject); procedure SpeedButton3Click(Sender: TObject); procedure SpeedButton2Click(Sender: TObject); procedure DBGrid1DblClick(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); function BitmapToRtf(graph:TBitmap):string; private { Private declarations } public { Public declarations } end;
var frmEnviaEmail: TfrmEnviaEmail;
implementation
uses ufrmCadEmail, ufrmImportar, uDm, ufrmCadUsuario, ufrmEnviaEmailSSL, ufrmSeguranca;
{$R *.dfm}
function TfrmEnviaEmail.BitmapToRtf(graph: TBitmap): string;var //bi, bb, rtf:string; bi, bb, rtf:Ansistring; bis, bbs:cardinal; achar:ShortString; //HexGraph:string; HexGraph:Ansistring; I:Integer;begin GetDIBSizes(graph.Handle, bis, bbs); SetLength(bi,bis); SetLength(bb,bbs); GetDIB(graph.Handle, graph.Palette, PChar(bi)^, PChar(bb)^); rtf:='{\rtf1 {\pict\dibitmap '; SetLength(HexGraph,(Length(bb) + Length(bi)) * 2); I:=2; For bis:=1 to Length(bi) do begin achar:=Format('%x',[Integer(bi[bis])]); if Length(achar)=1 then achar:='0'+achar; HexGraph[I-1]:= achar[1]; HexGraph[I]:=achar[2]; Inc(I,2); end; For bbs:=1 to Length(bb) do begin achar:=Format('%x',[Integer(bb[bbs])]); if Length(achar)=1 then achar:='0'+achar; HexGraph[I-1]:=achar[1]; HexGraph[I]:=achar[2]; Inc(I,2); end; rtf:=rtf + HexGraph + ' }}'; Result:=rtf;end;
procedure TfrmEnviaEmail.DBGrid1DblClick(Sender: TObject);begin if DBGrid1.SelectedRows.CurrentRowSelected = True then edtPara.Text := edtPara.Text + (ClientDataSet1.FieldByName('EMAIL').AsString) + ',';end;
procedure TfrmEnviaEmail.FormClose(Sender: TObject; var Action: TCloseAction);begin frmEnviaEmail.Free; frmEnviaEmail := nil;end;
procedure TfrmEnviaEmail.FormShow(Sender: TObject);begin ClientDataSet1.Open;{ IdMessage.From.Address := frmSeguranca.email; IdMessage.From.Name := frmSeguranca.nome; IdMessage.From.Text := frmSeguranca.nome + ' ' + frmSeguranca.email; IdMessage.From.User := frmSeguranca.email; IdMessage.From.Domain := 'youcanbe.com.br'; IdSMTP.Username := frmSeguranca.email; IdSMTP.Password := frmSeguranca.senha; }end;
procedure TfrmEnviaEmail.SpeedButton1Click(Sender: TObject);var stringshellexecute: string;begin// stringshellexecute := stringshellexecute +'mailto:' + Edit1.Text {ListBox1.Items.Text} + //'?cc=' + edit2.text + '&cco=' + Edit3.text + '&subject=' + edit4.text +// '&body=' + Memo1.lines.text;// shellexecute(self.handle, 'open',pchar(stringshellexecute),'','',sw_shownormal);end;
procedure TfrmEnviaEmail.SpeedButton2Click(Sender: TObject);var SS:TStringStream; caminho : string;beginif OpenPictureDialog1.Execute then Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName); SS:=TStringStream.Create(BitmapToRtf(Image1.Picture.Bitmap)); JvRichEdit1.PlainText:=False; JvRichEdit1.StreamMode:=[smSelection]; JvRichEdit1.Lines.LoadFromStream(SS); SS.Free;end;
procedure TfrmEnviaEmail.SpeedButton3Click(Sender: TObject);var xAnexo : Integer; x: integer;beginIdMessage.Recipients.EMailAddresses := edtPara.Text;IdMessage.CCList.EMailAddresses := edtCC.Text;IdMessage.BccList.EMailAddresses := edtCCO.Text;
//Trata a Prioridade da mensagemcase cbxPrioridade.ItemIndex of0 : IdMessage.Priority := mpHigh;1 : IdMessage.Priority := mpNormal;2 : IdMessage.Priority := mpLow;end;
IdMessage.Subject := edtAssunto.Text;IdMessage.Body := JvRichEdit1.Lines;
if cbxConfirmaLeitura.Checked thenIdMessage.ReceiptRecipient.Text := IdMessage.From.Text; // Auto Resposta
//Tratando os arquivos anexosfor xAnexo := 0 to ListBox1.Items.Count-1 do TIdAttachmentFile.create(idmessage.MessageParts, TFileName(ListBox1.Items[xAnexo]));
tryIdSMTP.Connect;{Gauge.MaxValue:= mmMensagem.Lines.Count - 1;Gauge.Progress:=0;Gauge.Visible:=True;Gauge.Refresh;for x:=0 to mmMensagem.Lines.Count - 1 do begin Gauge.Progress:= Gauge.Progress + 1; Gauge.Repaint; IdSMTP.Send(IdMessage); end; Gauge.Visible:=False; Gauge.Repaint; }finallyIdSMTP.Disconnect;end;Application.MessageBox('Email enviado com sucesso!', 'Confirmação', MB_ICONINFORMATION + MB_OK);end;
end.
Fernando Farah
Curtidas 0