Ir para conteúdo
Fórum Script Brasil
  • 0

Envio de Email com NMSMTP


wilsonrosa

Pergunta

Pessoal,

Bom Dia!!!

Um outro sistema q tenho aqui usa o componente NMSMTP para enviar email. Pois bem, enquanto estava com o Microsoft Exchange Server 2003 td funcionava bem porém com um upgrade para o MS Exchange Server 2007 o sistema ficou muito lento pra enviar email. Tenho percebido q para enviar um email tem demorado cerca de 30s.

Alguém tem o mesmo problema ou já passou por isso ? Alguém sabe se com outro componente pode funcionar melhor ?

Obrigado

WillRos

Link para o comentário
Compartilhar em outros sites

16 respostass a esta questão

Posts Recomendados

  • 0
Pessoal,

Bom Dia!!!

Um outro sistema q tenho aqui usa o componente NMSMTP para enviar email. Pois bem, enquanto estava com o Microsoft Exchange Server 2003 td funcionava bem porém com um upgrade para o MS Exchange Server 2007 o sistema ficou muito lento pra enviar email. Tenho percebido q para enviar um email tem demorado cerca de 30s.

Alguém tem o mesmo problema ou já passou por isso ? Alguém sabe se com outro componente pode funcionar melhor ?

Obrigado

WillRos

Jhonas,

Não tem arquivo algum.

Só tem o texto escrito no corpo do email.

Vou fazer uns testes com esse componente e te retorno os resultados.

Obrigado

WillRos

Link para o comentário
Compartilhar em outros sites

  • 0
Pessoal,

Bom Dia!!!

Um outro sistema q tenho aqui usa o componente NMSMTP para enviar email. Pois bem, enquanto estava com o Microsoft Exchange Server 2003 td funcionava bem porém com um upgrade para o MS Exchange Server 2007 o sistema ficou muito lento pra enviar email. Tenho percebido q para enviar um email tem demorado cerca de 30s.

Alguém tem o mesmo problema ou já passou por isso ? Alguém sabe se com outro componente pode funcionar melhor ?

Obrigado

WillRos

Jhonas,

Não tem arquivo algum.

Só tem o texto escrito no corpo do email.

Vou fazer uns testes com esse componente e te retorno os resultados.

Obrigado

WillRos

Jhonas,

Analisando passo a passo o sistema com (F8), a demora ocorre quando quando ele passa pela instrução Send, tanto no NMSMTP1 quanto no IdSMTP1. Quando ele está sobre o NMSMTP1.send ou IdSMTP.send e pressiono a tecla F8 o cursor desaparece por uns 30s e reaparece na próxima instrução.

Agradeço qualquer dica.

WillRos

Link para o comentário
Compartilhar em outros sites

  • 0

outra dica: Enviar email pelo Outlook

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
const
olMailItem = 0;

implementation
uses comobj, olectrls;


{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
Outlook: OleVariant;
vMailItem: variant;
begin
try
Outlook := GetActiveOleObject('Outlook.Application');
except
Outlook := CreateOleObject('Outlook.Application');
end;
vMailItem := Outlook.CreateItem(olMailItem);
vMailItem.Recipients.Add('fulando@mundo.com.br'); // 1o destinatário
vMailItem.Recipients.Add('ciclano@mundo.com.br'); // 2o destinatário
vMailItem.Subject := 'teste de email'; // assunto
vMailItem.Body := 'Este é um teste'; // Corpo do e-mail
vMailItem.Attachments.Add('C:\temp\arq.txt'); // arquivo anexado
vMailItem.Send;

VarClear(Outlook);
end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
outra dica: Enviar email pelo Outlook

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
const
olMailItem = 0;

implementation
uses comobj, olectrls;


{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
Outlook: OleVariant;
vMailItem: variant;
begin
try
Outlook := GetActiveOleObject('Outlook.Application');
except
Outlook := CreateOleObject('Outlook.Application');
end;
vMailItem := Outlook.CreateItem(olMailItem);
vMailItem.Recipients.Add('fulando@mundo.com.br'); // 1o destinatário
vMailItem.Recipients.Add('ciclano@mundo.com.br'); // 2o destinatário
vMailItem.Subject := 'teste de email'; // assunto
vMailItem.Body := 'Este é um teste'; // Corpo do e-mail
vMailItem.Attachments.Add('C:\temp\arq.txt'); // arquivo anexado
vMailItem.Send;

VarClear(Outlook);
end;

abraço

Fala Jhonas,

Pode ser muita coincidência mas vasculhando a net achei um post seu falando sobre essa maneira de enviar email e já estava testando no meu sistema e iria postar algumas dúvidas.

Realmente melhora muito a velocidade, parece instantânea, mas tenho alguns inconvenientes q gostaria q se possível você me ajudasse.

Toda vez q tento enviar um email ele me apresenta uma msg de alerta:

"Um programa está tentando acessar os endereços de email q você tem armazenado no outlook. você quer permitir ?

Se for uma msg inexperada pode ser um virus e escolha Não."

Ai aparece 1,3,5,10 minutos e clico em SIm e o email vai.

Como posso fazer para essa msg não aparecer e o email ser enviado?

Obrigado e Abraço

WillRos

Link para o comentário
Compartilhar em outros sites

  • 0
Como posso fazer para essa msg não aparecer e o email ser enviado?

Você recebe a mensagem "Um programa está tentando acessar emails armazenados no Outlook" porque, por razões de segurança, o Catálogo de Endereços do Outlook é protegido por programação.

Essa mensagem é útil para impedir que outro programa acesse automaticamente o seu Catálogo de Endereços ou a lista de Contatos ou que envie mensagens em seu nome sem a sua permissão.

A mensagem serve para permitir que alguns programas, como o Microsoft ActiveSync® ou o Palm Desktop, acessem as informações de seus contatos de modo que você possa sincronizar seu PDA.

Entretanto, um vírus ou outro arquivo de programa indesejado pode usar a mesma funcionalidade para se propagar.

Essa mensagem aparece se um programa tenta acessar o Catálogo de Endereços.

Em geral, não há como impedir a exibição desse aviso.

Essa mensagem não é exibida quando o Outlook interage com software de sincronização confiável.

http://www.techtips.com.br/programacao/out...aves_do_delphi/

possivel solução:

http://www.rsoutlook.com/blog/2004/06/um-p...aceder-aos.html

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Como posso fazer para essa msg não aparecer e o email ser enviado?

Você recebe a mensagem "Um programa está tentando acessar emails armazenados no Outlook" porque, por razões de segurança, o Catálogo de Endereços do Outlook é protegido por programação.

Essa mensagem é útil para impedir que outro programa acesse automaticamente o seu Catálogo de Endereços ou a lista de Contatos ou que envie mensagens em seu nome sem a sua permissão.

A mensagem serve para permitir que alguns programas, como o Microsoft ActiveSync® ou o Palm Desktop, acessem as informações de seus contatos de modo que você possa sincronizar seu PDA.

Entretanto, um vírus ou outro arquivo de programa indesejado pode usar a mesma funcionalidade para se propagar.

Essa mensagem aparece se um programa tenta acessar o Catálogo de Endereços.

Em geral, não há como impedir a exibição desse aviso.

Essa mensagem não é exibida quando o Outlook interage com software de sincronização confiável.

http://www.techtips.com.br/programacao/out...aves_do_delphi/

possivel solução:

http://www.rsoutlook.com/blog/2004/06/um-p...aceder-aos.html

abraço

Fala Jhonas beleza ? Agradeço se post, entendi sobre a msg do outlook.

Porém, navegando na net achei alguma coisa em VB q poderia me ajudar e estou tentando passar para Delphi. O código está abaixo dentro de um timer. Em VB se declará algumas APIs do Windows, porém em Delphi o código abaixo roda sem as declarações.

procedure TForm1.Timer1Timer(Sender: TObject);

var

Wnd : HWND;

I: integer;

begin

Wnd := FindWindow(nil,'Aviso Sistema');

If Wnd <> 0 Then

begin

Wnd := FindWindowEx(Wnd, 0, 'button', 'Sim');

If Wnd <> 0 Then

begin

SendMessage (Wnd, WM_LBUTTONDOWN, 0, 0) ;

SendMessage (Wnd, WM_LBUTTONUP, 0, 0 ) ;

end;

end ;

end;

O único problema é q não estou conseguindo chegar até o botão Sim da janela principal q está com o título "Aviso Sistema", q na realidade é outro projeto feito em Delphi no evento OnCreate do Form só para aparecer dois botões Sim e Não através do Application.Message.

você poderia me ajudar como me referenciar a esse botão na linha do FindWindowEx ?

Obrigado mais uma vez

Abraço

WillRos

Link para o comentário
Compartilhar em outros sites

  • 0
outra dica: Enviar email pelo Outlook

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
const
olMailItem = 0;

implementation
uses comobj, olectrls;


{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
Outlook: OleVariant;
vMailItem: variant;
begin
try
Outlook := GetActiveOleObject('Outlook.Application');
except
Outlook := CreateOleObject('Outlook.Application');
end;
vMailItem := Outlook.CreateItem(olMailItem);
vMailItem.Recipients.Add('fulando@mundo.com.br'); // 1o destinatário
vMailItem.Recipients.Add('ciclano@mundo.com.br'); // 2o destinatário
vMailItem.Subject := 'teste de email'; // assunto
vMailItem.Body := 'Este é um teste'; // Corpo do e-mail
vMailItem.Attachments.Add('C:\temp\arq.txt'); // arquivo anexado
vMailItem.Send;

VarClear(Outlook);
end;

abraço

Jonas

Boa Tarde

Não sei se é aqui q devo pedir isto se for pode responder senão por favor desculpas antecipadas e redirecione para o local correto ok

Para este mesmo exemplo que você usou gostaria de estar usando o Outlook Express.

Obirgado

Milton CArlos

Link para o comentário
Compartilhar em outros sites

  • 0
FindWindow procura pelo titulo de uma janela ...

voce esta querendo que quando aparecer essa menssagem voce possa clicar no botão via código ?

Boa Tarde Jhonas.

Exatamente isso, navegando na internet descobri esse Findwindow e FindWindowEx. Consigo achar a janela pelo título porém, não está encontrando o botão

Yes, com esse código q fiz e coloquei em um timer. Não se se falta alguma coisa.

Codigo:

procedure TForm1.Timer1Timer(Sender: TObject);

var

Wnd : HWND;

I: integer;

begin

Wnd := FindWindow(nil,'Microsoft Office Outlook');

If Wnd <> 0 Then

begin

Wnd := FindWindowEx(Wnd, 0, 'button', nil);

If Wnd <> 0 Then

begin

SendMessage (Wnd, WM_LBUTTONDOWN, 0, 0) ;

SendMessage (Wnd, WM_LBUTTONUP, 0, 0 ) ;

end;

end ;

end;

Obrigado por enquanto

WillRos

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...