首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

在代理环境上怎么使用IdSMPT自动发送邮件如果

2012-08-10 
在代理环境下如何使用IdSMPT自动发送邮件如果如题。环境:Delphi7工具:IdSMPT发送邮件现在能实现,但是如果使

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

[解决办法]
刚做的,可以用

Delphi(Pascal) code
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; //邮件发送方 xxx@xxx.com        mMsg.From.Name := '测试';        mMsg.Sender.Address := Edit1.Text;        mMsg.Sender.Name := '测试';        mMsg.Recipients.EMailAddresses := Edit2.Text;  //邮件接收方  yyy@yyy.com        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.
[解决办法]
非得http代理,就换indy 10
[解决办法]
注册表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='串,提取出来即可

热点排行