如题。
环境:Delphi7
工具:IdSMPT发送邮件
现在能实现,但是如果使用IE代理设置的时候如何实现,自动收发邮件哪?

解决方案 »

  1.   

    刚做的,可以用
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
      IdTCPClient, IdMessageClient, IdSMTP, IdMailBox, IdIOHandler,
      IdIOHandlerSocket, IdIntercept, IdSocks, IdMessage;type
      TForm1 = class(TForm)
        Button1: TButton;
        Edit1: TEdit;
        Edit2: TEdit;
        Edit3: TEdit;
        Edit4: TEdit;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
            mSmtp: TIdSmtp;
            mMsg: TIdMessage;
    begin
            mMsg := TIdMessage.Create(nil);
            mMsg.ContentType := 'text/plain';
            mMsg.CharSet := 'gb2312';
            mMsg.From.Address := Edit1.Text; //邮件发送方 [email protected]
            mMsg.From.Name := '测试';
            mMsg.Sender.Address := Edit1.Text;
            mMsg.Sender.Name := '测试';        mMsg.Recipients.EMailAddresses := Edit2.Text;  //邮件接收方  [email protected]
            mMsg.Subject := 'test';
            mMsg.Body.Clear;
            mMsg.Body.Add('您好!');        mSmtp := TIdSmtp.Create(nil);
            mSmtp.ReadTimeout := 5000;
            mSmtp.AuthenticationType := atLogin;
            mSmtp.Host := Edit3.Text;       //邮件服务器地址
            mSmtp.Username := Edit1.Text;
            mSmtp.Password := Edit4.Text;   //邮箱密码        mSmtp.IOHandler := TIdIOHandlerSocket.Create(nil);
            mSmtp.Socket.SocksInfo := TIdSocksInfo.Create(nil);        mSmtp.Socket.SocksInfo.Authentication := saUsernamePassword;
            mSmtp.Socket.SocksInfo.Username := 'xxxxx';     //代理服务器设置的用户名
            mSmtp.Socket.SocksInfo.Password := 'yyyyy'; //代理服务器设置的密码
            mSmtp.Socket.SocksInfo.Host := '192.168.1.102';
            mSmtp.Socket.SocksInfo.Port := 2280;  //2280为socks代理
            mSmtp.Socket.SocksInfo.Version := svSocks5;        mSmtp.Connect;
            mSmtp.Authenticate;
            mSmtp.Send(mMsg);
            mSmtp.Disconnect;        mMsg.Destroy;
            mSmtp.Socket.SocksInfo.Destroy;
            mSmtp.IOHandler.Destroy;
            mSmtp.Destroy;
    end;end.
      

  2.   

    如果代理为http代理,不是socket哪?
      

  3.   

    像我们在IE浏览器设置了代理以后,我们如何得知服务器是否设置了socket代理哪,如何获取socket代理的端口哪?
      

  4.   

    注册表HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
    下面键值ProxyServer
    如果设置了套接字形式为:ftp=192.168.1.102:8088;http=192.168.1.102:8088;https=192.168.1.102:8088;socks=192.168.1.102:2280
    如果没设置为:
    192.168.1.102:8088读取出来字符串后pos函数查是否有'socks='串,提取出来即可
      

  5.   

    一下。这个看看,delphi的网络出了能力比较差