Páginas

miércoles, 8 de mayo de 2013

monitor aparece "out of range", monitor con "no signal"

estos 2 mensajes aparecen generalmente cuando en tu windows le has puesto una resolución muy alta que no puede soportar el monitor.
La solución seria entrar a modo a prueba de fallos y cambiar la resolución por una de menor.

procedimiento:


  • reinicia la maquina y apretar F8 para que arranque el menú de opciones de arranque y selecciona el modo a prueba de fallos o modo a prueba de fallos con compatibilidad de red.

  • clic derecho en el escritorio, propiedades,una vez seleccionado en propiedades de pantalla seleccionar la pestaña configuración, ahí seleccionar una resolución de pantalla  menor. Aceptar y reiniciar.

martes, 7 de mayo de 2013

enviar correos con archivo adjunto desde delphi 7 e indy10

este es un ejemplo de como enviar correos con archivos adjuntos desde delphi 7 utilizando indy 10, en la red hay varios ejemplos pero ninguno que funcionara bien en mi versión de indy pues en su mayoria son de la version 9 y trae algunas diferencias que les explicare.
la version estable y mas reciente la pueden encontrar en la pagina de indy: http://www.indyproject.org/index.en.aspx

el código completo se los paso tal cual, sin componentes de la paleta, todo se crea en tiempo de ejecucion, lo tengo en un form con 3 botones uno para cerrar, otro de about, y otro donde invoco la función y llamo le paso los parametros, cabe mencionar que lo tengo asi porque me servira para el desarrollo de una aplicacion mas grande.

la diferencia entre la version 9 y la 10 son unas declaraciones y correciones que se tienen que hacer para actualizar los codigos de las version anterior.

1.- tienes que declarar en el apartado uses IdAttachmentFile antes de declaralo en el apartado de variables de tu funcion de envio, estp es var Adjunto: TIdAttachmentFile;;
2.- ya en la funcion de envio cambia la propiedad de autentificacion de la version 9 a la 10 esto es SMTP.AuthenticationType := atLogin pasa a ser  SMTP.AuthType := atDefault
3.- en la parte de comprobacion  cambia la propiedad de creación del mensaje esto es
TIdAttachment.Create( Mensaje.MessageParts, sAdjunto ) pasa a ser en la version 10 que es la nuestra a
TIdAttachmentFile.Create( Mensaje.MessageParts, sAdjunto )

ya con estos cambios debe funcionar los códigos antiguos.

pantalla del ejemplo


finalmente el código:

en pantallas y abajo en texto para que lo copien.






codigo para copiarlo

unit estadoemail;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdSMTP, IdMessage, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient,
  IdAttachment;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses

IdAttachmentFile;   //declaracion

procedure EnviarMensaje( sUsuario, sClave, sHost, sAdjunto, sAsunto, sDestino, sMensaje: String );
var
   SMTP: TIdSMTP;
   Mensaje: TIdMessage;
   Adjunto: TIdAttachmentFile; //declaracion de la nueva variable

begin
  SMTP := TIdSMTP.Create( nil );
  SMTP.Username := sUsuario;
  SMTP.Password := sClave;
  SMTP.Host := sHost;
  SMTP.Port := 25;
  //SMTP.AuthenticationType := atLogin;--indy9
  SMTP.AuthType := atDefault;


  Mensaje := TIdMessage.Create( nil );
  Mensaje.Clear;
  Mensaje.From.Name := sDestino;
  Mensaje.From.Address := sDestino;
  Mensaje.Subject := sAsunto;
  Mensaje.Body.Text := sMensaje;
  Mensaje.Recipients.Add;
  Mensaje.Recipients.Items[0].Address := sDestino;

  if sAdjunto <> '' then
  begin
    if FileExists( sAdjunto ) then
     // Adjunto := TIdAttachment.Create( Mensaje.MessageParts, sAdjunto );  --indy9
      Adjunto := TIdAttachmentFile.Create( Mensaje.MessageParts, sAdjunto );
  end
  else
    Adjunto := nil;

  try
    SMTP.Connect;
  except
    raise Exception.Create( 'Error al conectar con el servidor.' );
  end;

  if SMTP.Connected then
  begin
    try
      SMTP.Send( Mensaje );
    except
      raise Exception.Create( 'Error al enviar el mensaje.' );
    end;

    try
      SMTP.Disconnect;
    except
      raise Exception.Create( 'Error al desconectar del servidor.' );
    end;
  end;

  if Adjunto <> nil then
    FreeAndNil( Adjunto );

  FreeAndNil( Mensaje );
  FreeAndNil( SMTP );

  Application.MessageBox( 'Mensaje enviado correctamente.',
    'Fin de proceso',MB_ICONINFORMATION );
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  EnviarMensaje( 'emisor@correo.com.mx', 'contraseña', 'smtp.correo.com.mx',
             'e:\documento.zip', 'Te envio mi documento',
             'receptor@correo.com.mx', 'Adjunto archivo: documento.zip' );
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Close;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Label1.Caption:= 'ACERCA' + char(13)+ 'DEL AUTOR';
ShowMessage('DESIGN, MARGKETING AND SUPPORT'+ #13 + #13 + 'einvation@gmail.com');
end;

end.


espero les sea de utilidad.