用indy10的idstmp发hotmail的邮箱,提示发送成功了,但为什么收不到呢,而发sohu,163一点问题都没有(100分)

  • 主题发起人 主题发起人 海天子
  • 开始时间 开始时间

海天子

Unregistered / Unconfirmed
GUEST, unregistred user!
无论是直接发送还是通过邮箱中继都行,几上月前发hotmail不需要中转还可以,是不是hotmail捕捉了idsmtp的特征,封杀了,如果是这样,应该何解决呢

如登录sohu/163的邮箱发hotmail是可以收到的,在网上看到其他贴子说indy9是被一些大网站的服务器捕捉了特征直接封杀了的,但indy10已经改过那些问题了,不知道indy10的什么又被这些大网站盯上了,不知道是不是这个原因
 
我用INDY9都能发成功,为什么你的10反而不能成功?
是不是host设置不对?
 
我用indy9可以啊
 
To iseek: 我发sohu可以的啊,发hotmail死活不行,请问题host设置,能给出代码吗?如果正确,分给你了!
 
高难度的题目
 
我大概是在十几天前做过测试.
不过,刚才我想登录hotmail查看我发的那封测试信,发现hotmail登不上,是不是这个原因?
我当时是用线程发的,几个主要的免费邮箱都发了,全部都成功了的.
 
我也是这样的,发送sohu没有问题,hotmail就是不行,很久都没有解决!
 
终于遇以同样问题的人了,多多交流啊
iseek: 不是登录不了hotmail的原因,通过IE登录sohu,然后发也是可以的,甚至于hotmail发也没问题,我估计是hotmail捕捉到idsmtp的特征封杀了
 
和程序没有关系了。唯一的办法是动态的邮件头。
 
邮件头完全是我自己定义了,且也是动态的还能设置多个邮件头,每发一封都有会取随取一个邮件头,每个邮件头中的的内容还会随机的变的,但还是不行啊

就是hotmail不行,发其他邮箱都能收到
 
你肯定是群发才被封杀的。能不能伪造成是邮件服务器?这样就应该没有问题。
 
我刚才又试了一下,发送成功.
不过,发现另一个问题:我发的html格式,邮件内容显示为乱码.
 
网中戏,我一封一封发也不行啊,如果要伪造成是邮件服务器,又怎么伪造??
iseek: 你的代码是怎么样写的,发html格式,要设置Content-Type为text/html 即 “Content-Type: text/html;”
 
我知道要“Content-Type: text/html;
我已经找到解决办法了.
难道你不相信我发成功了?呵呵.
 
不是不相信你,知道是什么原因就说一下嘛
 
我是说我解决了乱码问题.
发信我是一直成功的.代码如下,专门测试用的一个线程:
unit testUnit;

interface

uses
Classes, SysUtils, IdMessage, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdMessageClient, IdSMTP;

type
Ttest = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
end;

implementation

{ Important: Methods and properties of objects in visual components can only be
used in a method called using Synchronize, for example,

Synchronize(UpdateCaption);

and UpdateCaption could look like,

procedure Ttest.UpdateCaption;
begin
Form1.Caption := 'Updated in a thread';
end; }

{ Ttest }

procedure Ttest.Execute;
var IdSMTP:TIdSMTP;
IdMsg:TIdmessage;
begin
{ Place thread code here }
FreeOnTerminate := True;

Idsmtp:=TIdsmtp.Create(nil);
IdMsg:=TIdmessage.Create(nil);
try

//构造邮件体
IdMsg.Subject := 'testhtmlmail';
idMsg.ContentType := 'text/html';
IdMsg.Body.LoadFromFile('c:/test2.htm');
IdMsg.From.Address := 'oldice@tom.com';
IdMsg.Recipients.EMailAddresses := 'iseekwhatiseek@hotmail.com';


//填充SMTP
IdSMTP.Host := 'smtp.tom.com';
IdSMTP.Port := 25;
IdSMTP.Username := 'oldice';
IdSMTP.Password := ********;

//连接到SMTP服务器
try
IdSMTP.Connect;
except
exit;
end;

//验证身分
if (IdSMTP.AuthSchemesSupported.IndexOf('LOGIN')<>-1) then
begin
IdSMTP.AuthenticationType :=atLogin;
try
if not IdSMTP.Authenticate then //未通过验证
begin
if IdSMTP.Connected then IdSMTP.Disconnect;
exit;
end;
except
if IdSMTP.Connected then IdSMTP.Disconnect;
exit;
end;
end;

//发送信件
try
IdSMTP.Send(IdMsg);
except
if IdSMTP.Connected then IdSMTP.Disconnect;
end;
if IdSMTP.Connected then IdSMTP.Disconnect;
finally
IdSMTP.Free;
IdMsg.Free;
end;
end;

end.
 
iseek:你的代码用的是通过邮箱中转发送,经测试可以了
但是不通过邮箱中转发送而直接发送,仍然不行,如hotmail的接收服务器一共有四个:mx1.hotmail.com、mx2.hotmail.com、mx3.hotmail.com、mx4.hotmail.com,你可以直接连接任何一个把信发进去,提示是接收了,可是邮箱中却没有收到,以前是可以的,在同一台电脑上用其他不是Idsmtp的软件(如outlook)直接发送(不通过邮箱中转)是可以收到的
 
你说的可是所谓的特快专递?
这个东东我没试过,因为听说比较容易投失.
如果不是想高速群发,能达目的就可以了.
 
你说的可是所谓的特快专递?
这个东东我没试过,因为听说比较容易投失.
如果不是想高速群发,能达目的就可以了.
>>通过邮箱中转才比较投失啊,特快专递一般只在接收了就能收到的
 
我的可以发了,但是添加了附件以后,发送的速度很慢,比如附件只有1MB发送的进度条显示的

时间要5分钟左右!
 
后退
顶部