写了一个发送邮件的模块 发到公司信箱的时候就没问题 比如www.jnwork.com的信箱
但发到门户网站比如sohu 或者 hotmail的信箱的时候就会出现
Received Packet is too small. Less than 4 bytes 28.
这是什么原因啊
procedure TForm1.GetMxList(AMxList: TStringList; AQName: string);
var
i: Integer;
begin
with IdDNSResolver do
begin
Host := '211.90.132.1';
ReceiveTimeout := 10000;
ClearVars;with DNSHeader do
begin
Qr := False;
Opcode := 0;
RD := True;
QDCount := 1;
end;
DNSQDList.Clear;
with DNSQDList.Add do
begin
QName := AQName;
QType := cMX;
QClass := cIN;
end;
ResolveDNS; for i := 0 to DNSAnList.Count - 1 do
AMxList.Add(DNSAnList[i].RData.MX.Exchange + '=' +
IntToStr(DNSAnList[i].RData.MX.Preference));
end;
end;
procedure TForm1.btnSendClick(Sender: TObject);
var
MxList: TStringList;
i: Integer;
QName, ThoughAddress: string;
begin with IdMsgSend do
begin
Body.Assign(mmContent.Lines); //邮件正文
From.Address := Trim(edtFrom.Text); //发件人地址
Recipients.EMailAddresses := Trim(edtTo.Text); //收件人地址
Subject := edtSubject.Text; //邮件主题
if FileExists(trim(edit1.Text)) then
TIdAttachment.Create(idmsgsend.MessageParts,trim(edit1.Text));end;QName := TrimRight(copy(edtTo.Text, Pos('@', edtTo.Text) + 1, Length(edtTo.Text)));
MxList := TStringList.Create;
try
GetMxList(MxList, QName);
ThoughAddress := MxList.Names[0];
finally
MxList.Free;
end;
{ 发送邮件 }
with IdSMTP do
begin
Host := ThoughAddress;
Port := 25;
Connect;
try
Send(IdMsgSend);
ShowMessage('发送完毕');
finally
Disconnect;
end;
end;
end; procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
edit1.Text:=OpenDialog1.FileName;end;
但发到门户网站比如sohu 或者 hotmail的信箱的时候就会出现
Received Packet is too small. Less than 4 bytes 28.
这是什么原因啊
procedure TForm1.GetMxList(AMxList: TStringList; AQName: string);
var
i: Integer;
begin
with IdDNSResolver do
begin
Host := '211.90.132.1';
ReceiveTimeout := 10000;
ClearVars;with DNSHeader do
begin
Qr := False;
Opcode := 0;
RD := True;
QDCount := 1;
end;
DNSQDList.Clear;
with DNSQDList.Add do
begin
QName := AQName;
QType := cMX;
QClass := cIN;
end;
ResolveDNS; for i := 0 to DNSAnList.Count - 1 do
AMxList.Add(DNSAnList[i].RData.MX.Exchange + '=' +
IntToStr(DNSAnList[i].RData.MX.Preference));
end;
end;
procedure TForm1.btnSendClick(Sender: TObject);
var
MxList: TStringList;
i: Integer;
QName, ThoughAddress: string;
begin with IdMsgSend do
begin
Body.Assign(mmContent.Lines); //邮件正文
From.Address := Trim(edtFrom.Text); //发件人地址
Recipients.EMailAddresses := Trim(edtTo.Text); //收件人地址
Subject := edtSubject.Text; //邮件主题
if FileExists(trim(edit1.Text)) then
TIdAttachment.Create(idmsgsend.MessageParts,trim(edit1.Text));end;QName := TrimRight(copy(edtTo.Text, Pos('@', edtTo.Text) + 1, Length(edtTo.Text)));
MxList := TStringList.Create;
try
GetMxList(MxList, QName);
ThoughAddress := MxList.Names[0];
finally
MxList.Free;
end;
{ 发送邮件 }
with IdSMTP do
begin
Host := ThoughAddress;
Port := 25;
Connect;
try
Send(IdMsgSend);
ShowMessage('发送完毕');
finally
Disconnect;
end;
end;
end; procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
edit1.Text:=OpenDialog1.FileName;end;
解决方案 »
- Dbgrid 光标定位
- 怎样安排用BDE连接VFP数据库后创建表的目录?
- 求xp风格的form!!
- FastReport生成的报表如何导出到Excel中?
- Delphi7的Midas是不是有问题啊!大家帮我看看...即,如果解决不了,我就必须把工程全部移植到Delphi5中!
- 试算的问题?
- 多表联合统计!诚征高手解答。
- TTcpClient的OnReceive事件为什么不能触发
- QReport打印汇总
- 如何在WIN2000下正确设置系统时间?
- 在VC下用ATL写一个COM的DLL,在VB中调用时没有错误,为什么用同样的数据在Delphi中执行到某一个函数时就会抛出错误。谢谢
- 请问如何获得文件的创建时间,修改时间以及创建作者等信息
然后hotmail 不是pop3协议------------------------------------
心中多少的创伤,不可抵挡的空虚,卑躬屈膝的一生,今天只想冲出那枷锁,就要象狂人,金属者---金属狂人