500分求可用的发邮件源码(300分)

  • 主题发起人 主题发起人 lhc4000
  • 开始时间 开始时间
L

lhc4000

Unregistered / Unconfirmed
GUEST, unregistred user!
近日在网站找了很多发邮件原代码,但都无法正常使用,有的根本无法发信,有的发出了却收不到。
现500分求可用的发邮件源码,要求有DEMO,可发附件,可用smtp.163.com发信。

————————————————————————————————————————
发帖时不能定义“问题的价值分”为500, 所以先出300分,有答案后另开帖付200分。
 
是WEB方式,还是APP方式,
INDY的例子绝对正确 ,接收不到和发送邮件的其他问题和你的计算机IP域名有关。
 
APP方式。
用例子可以接收(虽然乱码)。我指的不能接收是直接登陆到163的邮件服务器用WEB方式接收时无法接收到APP发的信。
用例子发送会出错,无论是INDY9或INDY10.
 
我刚才试了一下,使用INDY的例子,
使用域名,不能登录,但是使用IP地址可以,就是性能不好,不过都可以使用。
使用FASTNET例子,可以。
使用IP,可以登录,发送也可以,估计还得自己改写,不过实现是可以的。
 
自己写没有用就是可以发也就是几天。之后他们会把你的当成垃圾邮件封了。写过几次都是这样。前面几天发的好好的。后面就不行了。每次要重编辑邮件头。麻烦
 
那为什么Foxmail之类的邮件程序就那么正常?
 
自己做过一个群发的,可以使用smtp.163.com 发信,收信的没写。
使用的是IdSMTP和IdMessage。
群发速度比较慢的,不知为什么发送几封以后要重新连接一次,好像和网络的反垃圾邮件有关吧。
不知道对你有没有用啊?
 
to hao1701:
有用呀,我不是用来群发的,只是用在程序中在需要时发一封邮件而已。
 
C++的源码是否需要?
-----------------------
 
to lovellybaby:
C++的就不要了,我要D7的
 
我以前写过,找找看。
 
留下QQ或EMail,Indy 发邮件示例,我发给你,确保可用。
 
........................
登陆主机
procedure tform1.BTN_CONNECTCLICK(sender:Tobject);
begin
idsmtp1.host:=ED_HOST.TEXT;
idsmtp1.port:=strtoint(ED_PORT.TEXT);
idsmtp1.username:=ED_USER_ID.TEXT;
idsmtp1.connect;
end;
断开
procedure tform1.BTN_DISCONNECTCLICK(sender:Tobject);
begin
idsmtp1.disconnect;
end;
增加附件
procedure tform1.BTN_ADDCLICK(sender:tobject);
begin
if opendialog1.execute then listbox1.items.add(opendialog.filename);
end;
取消附件
procedure Tform1.BTN_REMOVECLICK(sender:tobject);
begin
listbox1.items.delete(listbox1.itemindex);
end;
寄信
procedure Tform1.BTN_SENDCLICK(sender:tobject);
var i:integer;
s:string;
attachment:TIdAttachment;
begin
for i:=0 to listbox1.Items.Count-1 do
begin
s:=listbox1.Items.strings;
Attachment:=Tidattachment.create(Idmessage.messageparts,s);
end;

with IdMessage do
begin
form.text:=ED_SEND_EMAIL.text;
sender.text:=ED_SEND_NAME_text;
recipients.Emailaddresses:=ED_TO_ADDRESS.text;
cclist.EmailAddresses:=ED_TO_CC.text;
Bcclist.Emailaddresses:=ED_TO_BCC.text;
Subject:=ED_SUB.text;
body:=ED_TO_CONNECT.Lines;
end;

WITH Idsmtp1 DO
begin
statusbar1.SimpleText:='开始发送邮件';
Host:=ED_HOST.text;
try
Statusbar1.simpleText:='连接服务端';
Connect;
Statusbar1.simpleText:='连接成功,开始发送邮件';
Send(Idmessage);
Statusbar1.simpleText:='准备和服务器断开';
Disconnect;
Statusbar1.simpleText:='已经和服务器断开';
Except on E:exception DO
begin
if connected then disconnect;except end;
Statusbar1.simpleText:='邮件发送失败';
showmessage(e.message);
end;
end;
end;
Statusbar1.simpleText:='邮件已经发送成功';
end;
其他的自己补充吧 不知道有没写错字母,反正文本方式写的东西,我从没一次编译成功过。
 
这个问题好象之前有人回答过的~在2000年的帖子~我这里都找不到拉
 
研究一下IDSMTP就可以了,自己写太麻烦了.

DREAMMAIL就是用IDSMTP为基类写的控件开发的.
 
to kaida:
EMAIL: lhc_4000@163.com
 
已发,请查收。
 
清查找:本来不是indy的问题。
而是现在有很多垃圾邮件都是利用delphi的indy空间编写,所以163是屏蔽了indy控件了的。
你需要修改几个填写的头文件参数,让163认不出是indy发送的就可以了。
在论坛当中查询。有人已经修改。
 
to dcsdcs:
谢谢提醒!

试了两位朋友发过来的程序,都不行。一个提示“bad sequence of commands”另一个提示“You are not authorized to send, authentication is required.”
 
用我给你的编好的程序可以发邮件吗?
 
后退
顶部