问一下非常简单的问题,别取笑

ttzzj 2007-03-21 12:52:41
好久没写东西了,想在程序里用SMTP写个发邮件的模块,参考了两个demo(indy的和fastnet的),都发送不了,我直接拿那两个demo也发送不了,望指点一下不胜感激
...全文
310 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
li37 2007-03-23
  • 打赏
  • 举报
回复
?
首先,个人认为 就算是微软来了 也不可能发觉 这个连接,这个数据包是用什么软件发送的,还不用说是用indy开发的。windows 下大部分都是调用winsocket 发送的标准数据流。就像打手机和接手机的人,根本不可能知道对方在用什么类型的手机给你打过来的。

我以前写了一个发的程序,应该没有问题,贴出来下哈

procedure GetDnsIP();
var
IdDNSResolver: TIdDNSResolver;
LDomainPart: string;
i, x: integer;
LMXRecord: TMXRecord;
begin
//这里 开始解析邮箱域名
IdDNSResolver := TIdDNSResolver.Create(nil);
try
with IdDNSResolver do
begin
QueryResult.Clear;
QueryRecords := [qtMX];

Host := '61.139.2.69';
ReceiveTimeout := 10000;
// Extract the domain part from recipient email address
LDomainPart := copy(MailList, pos('@', MailList) + 1, length(MailList)); // the domain name to resolve
Resolve(LDomainPart);
if QueryResult.Count > 0 then
begin
for i := 0 to QueryResult.Count - 1 do
begin
LMXRecord := TMXRecord(QueryResult.Items[i]);
fMailServers.Append(PadZero(IntToStr(LMXRecord.Preference)) + '=' + LMXRecord.ExchangeServer);
end;

// sort in order of priority and then remove extra data
fMailServers.Sorted := false;
for i := 0 to fMailServers.count - 1 do
begin
x := pos('=', fMailServers.Strings[i]);
if x > 0 then fMailServers.Strings[i] :=
copy(fMailServers.Strings[i], x + 1, length(fMailServers.Strings[i]));
end;
fMailServers.Sorted := true;
fMailServers.Duplicates := dupIgnore;
end;
end;
except
end;
FreeAndNil(IdDNSResolver);

end;

procedure SendMail(Content: string);
var


IdMessage: TIdMessage;
i, x: integer;
IdSMTP: TIdSMTP;
FromName: string;
begin


IdMessage := TIdMessage.Create(nil);
IdSMTP := TIdSMTP.Create(nil);
try
if fMailServers.Count = 0 then
GetDnsIP;
//这里 开始解析邮箱域名-----End
//这里发送邮件主要过程,需要Smtp邮箱支持
FromName := RandomSenderName;
with IdMessage do
begin

From.Text := 'john@gmail.com'; //发送姓名
Sender.Text := 'john@gmail.com';
Recipients.EMailAddresses := MailList; //接受者邮箱

Subject := '资料备份_' + DateTimeToStr(now); //这是发送主题
Body.Text := Content; //这里发送的内容
end;
//发送邮件
for i := 0 to fMailServers.count - 1 do
begin
with IdSMTP do
begin

Host := fMailServers[i];
try

Connect(2000);

Send(IdMessage);

Disconnect;

Break;
except
end;
end;


//发送邮件---end;
end;
except
end;


FreeAndNil(IdMessage);
FreeAndNil(IdSMTP);

end;


主要代码在这里了
ttzzj 2007-03-22
  • 打赏
  • 举报
回复
>>配置搞好了吗

绝对搞好了,没什么问题,按照outlook设置的。outlook能收发
withcsharp 2007-03-22
  • 打赏
  • 举报
回复
indy 我是试过 好像可以啊
我设的 是 smtp.sohu.com
bloom2009 2007-03-21
  • 打赏
  • 举报
回复
帮顶
luxuewei5214 2007-03-21
  • 打赏
  • 举报
回复
听说一些邮件服务器如163都把Indy的连接给屏蔽了
quicklyonline 2007-03-21
  • 打赏
  • 举报
回复
配置搞好了吗

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧