向各位高手请教邮件发送的问题!(300分)

  • 主题发起人 主题发起人 xiongda
  • 开始时间 开始时间
X

xiongda

Unregistered / Unconfirmed
GUEST, unregistred user!
用Indy控件发送HTML格式的邮件时,如果没有附件,则发送正常,如果插入附件,
尽管邮件的格式设置成text/Html,发送的邮件也为文本格式。请高手指教如何解
决。我曾在http://www.delphibbs.com/delphibbs/dispq.asp?lid=1846166的帖子中得到pnljh大侠的指教,问题得以解决。但按pnljh大侠的方法会产生一个无用的附件文件,各位大侠还有没有其它更好的方法(我不想用其它控件)?
 
老兄,我不想发附件,可以发就行了,只要回答了,有贴字给分。http://www.delphibbs.com/delphibbs/dispq.asp?lid=1918584
 
xyf2001721:你老兄不诚实,先问什么图,又改题目为邮件,搞的先到人都向傻子,文不对题,我不喜欢这种方式,我刚做完邮件发送,但不想给你,楼主请留mail
 
To yue_shan:
我的E-mail:xiongda@yahoo.com.cn。谢谢!
 
用aspemail发各种邮件最简单,包括MIME格式+多个附件+多个收件人+...

不过不能收邮件
 
绝对精华: 发送MIME 格式邮件(同时带附件)
aspemail4.5 crack
http://www.hw365.com/kehu/aidetianshi/down/down.asp?downid=1&id=884
这个连接无效了,自己google一下吧

利用aspemail.dll
aspemail 4.5 到处都可以下载
http://download.pchome.net/php/download2.php?sid=869&url=/development/components/aspemail4502.exe&svr=6

 
To tt8:我想做一个客户端邮件收发软件,请问用aspemail 4.5能不能实现呢?
 
帮你向上提!
 
其实DELPHI自身带有这方面的例题。
 
to yue_shan:
老兄,你搞错了吧,你可以看看,我问图纸的时候有些人都是怎么回答的,尤其是sperk***78的那个老兄,这叫回答问题吗,我该了,也是应该的,大富翁没有说不可以改阿
如果你回答的好,我当然给分了。你可以看看我提问的问题,虽然都很菜,但绝没有亏待回
答我的各位朋友。
btw:
邮件发送我已经得到了解决,就是我得不到解决我也我所谓。
 
TO xyf2001721:
互相学习,共同提高!!!
 
TO:yue_shan,
我手中也有一些收发邮件的程序,但总多少有些问题,主要是附件压缩问题!
比如:发送一个扩展名为001的文件,对方收到下载到本地时,自动转化成html形式,数据文件格式已破坏!只能压缩后发送,收到后在解压缩!
再比如:我用邮件发送时自定义的文件(阔展名为 .czb 其实就是个txt文件)。当用附件下载时。提示保存文件格式为(html,则文件格式已变化).如何可以还保存成原文件(.czb,还是txt文件)。
你的程序能实现邮件发送和接受(当然是带附件的文件)!
如果可以实现的话,能否让我学习学习!我用的是delphi7.
收到后给分!我修改后在给你一份!
 
我的现在又出乱子了,老板说必须达OutLook功能,当然它没有不算,狂忙中,稿好一定给大家共享
 
这么多天还没有结贴!
本人觉得还是用sakemail比较好用,试过很多邮件控件,大都处理不了中文,包括DELPHI自带的。
在网络上找一个sakemail包(开放源码的),其中包含有样板程序,应该可以满足各位的要求。本人将其用在一套邮件自动收发系统中,运行已有近一年时间。
 
hclee
建议把你的相关源码拿出来共享。最近有不少人问这方面的问题。
如果要分,我有一个未结的贴子,200分给你。
 
这么多天没人回答,看来我只好用其它控件了。请问各位高手:SakeMail控件怎么将邮件保存为文件和流?怎么从文件和流中加载邮件?
 
TO:hclee
用在一套邮件自动收发系统中,能否给我一份!收到后给300分,不够再加!
若我修改后一定也给你一份!
zhang_yz@163.com
 
关于sakemail,本人也是听从了一位富翁的建议使用的,详细的用法其实不是太复杂,sakemail本身已经有源代码及测试程序。

要给出我的程序的源码是不可能的,因为这是公司的产品;不过可将邮件部分的处理摘出来,其实各位还是看sakemail本身的样板程序可能来得更有效。关于sakemail控件,网络上很多地方都有,请各位自己用google找一下。
也可到该控件的发源地找: http://sak.org.ar
sakemail论坛在: http://groups.yahoo.com/group/sakemail/

部分程序摘录如下,没有经过整理,但愿各位能看明白。用的是3.5.1版本,估计有更新的版本。
//------------------------- for email send out ------------------------------
function TjobForm.mailConnectToServer(host: String; bsmtpneedpass: Boolean; acc, pass: String): Boolean;
begin
//不支持需要密码的SMTP连接
sakSMTP.Disconnect;
Cfg.iMailProcState := ST_FREE;
sakSMTP.Host := host;
try
sakSMTP.Connect;
Result := sakSMTP.Connected;
except
Result := False;
end;
end;

function TjobForm.mailSetAccountInfo(myname, myacc, replyto: String): Boolean;
begin
try
sakMsg.UserName := myname;
sakMsg.From := myacc;
sakMsg.ReplyTo := replyto;
Result := True;
except
Result := false;
end;
end;

function TjobForm.mailSetSendData(subject: String; info, acclst: TStrings): Boolean;
var
i: Integer;
begin
try
if Not bSakExists then
begin
SakMsg := TSakMsg.Create(nil);
bSakExists := True;
end;
sakMsg.Subject := subject;
sakMsg.Text.Assign(info);
sakMsg.AttachedFiles.Clear;
for i:=0 to acclst.Count-1 do
sakMsg.AttachedFiles.Add(acclst);
Result := True;
except //文件不存在时,可能产生异常
Result := False;
end;
end;

function TjobForm.mailSendMail(sendto: String; bwait: Boolean): Boolean;
begin
try
if Not sakSmtp.Connected then
sakSmtp.Connect;

sakMsg.SendTo := sendto;
sakSmtp.SendTheMessage(sakMsg);
if bwait then
begin
while Not Cfg.bMailProcEnd do
Delay(100);
Result := Cfg.iMailProcState = ST_SUCESS;
end
else Result := True;
except
Result := False;
end;
end;

procedure TjobForm.mailDisconnect;
begin
sakSmtp.Disconnect;
end;

//------------------------- for email receive -------------------------------
//return code: 0-Sucess, 1-Not Connected, 2-login error, else other error
function TjobForm.mailRecvConnectToServer(host: String; acc, pass: String): Integer;
begin
SakPOP.Disconnect;
SakPOP.Host := host;
SakPOP.UserId := acc;
SakPOP.UserPasswd := pass;
try
SakPOP.connect;
If SakPOP.POPError then
Result := 1
else if not SakPOP.login then
Result := 2
else Result := 0;
except
Result := 1;
end;
if Result <> 0 then
SakPOP.Disconnect;
end;

function TjobForm.mailRecvGetMessages(bdelete: Boolean): Integer; //return messages count
begin
SakMsgList.Clear;
if Not SakPop.Connected then
begin
Result := 0;
Exit;
end;
try
SakPOP.Init;
Result := SakPop.MsgsCount;
mailrecvProgressBar.Max := sakPop.MsgsCount;
if Result > 0 then
begin
try
sakPOP.retrieveAllMessages(SakMsgList);
except
end;
Result := SakMsgList.Count;
If Result > 0 then
iMailRecvCurrentMsg := 0;
if (Result > 0) and bdelete then
mailRecvDeleteMessages();
end;
except
Result := 0;
end;
end;

function TjobForm.mailRecvGetMessage(var msg: TSakMsg): Boolean;
begin
Result := SakMsgList.Count > iMailRecvCurrentMsg;
if Result then
begin
msg := SakMsgList.Items[iMailRecvCurrentMsg];
Inc(iMailRecvCurrentMsg);
end;
end;

function TjobForm.mailRecvDeleteMessages: Boolean; //delete all message in sakmsglist
var
i: Integer;
begin
try
for i:=0 to SakMsgList.Count-1 do
SakPop.DeleteMessage(i+1);//StrToInt(SakMsgList.Items.MessageID));
Result := True;
except
Result := False;
end;
end;

procedure TjobForm.mailRecvDisconnect;
begin
try
SakPop.Disconnect;
except
end;
end;

//------------------- for mail send test ------------------------------------
procedure TjobForm.btnSendClick(Sender: TObject);
begin
SakSMTP.host := EditHost.text;
SakMsg.UserName := EditUserName.text;
SakMsg.From := EditFrom.text;
SakMsg.SendTo := EditTo.text;
SakMsg.Subject := EditSubject.text;
SakMsg.Text.Assign(Memo2.Lines);
SakMsg.AttachedFiles.Add('logo1.jpg');
SakSMTP.connect;
if not SakSMTP.SMTPError then
begin
SakSMTP.SendTheMessage(SakMsg);
Delay(5000);
SakSMTP.Disconnect;
end;
SakMsg.Free;
SakMsg := TSakMsg.Create( self);
end;

procedure TjobForm.btnSndConnectClick(Sender: TObject);
begin
mailConnectToServer(edithost.Text, false, '', '');
end;

procedure TjobForm.btnSetAccInfoClick(Sender: TObject);
begin
mailSetAccountInfo(editusername.Text, editfrom.Text, edit1.Text);
end;

procedure TjobForm.btnSetDataClick(Sender: TObject);
var
lst: TStrings;
begin
lst := TStringList.Create();
lst.Add('logo1.jpg');
mailSetSendData(editsubject.text, memo2.Lines, lst);
lst.Free;
end;

procedure TjobForm.btnSendMailClick(Sender: TObject);
begin
mailSendMail(editto.text, false);
end;

procedure TjobForm.btnSndDiscClick(Sender: TObject);
begin
mailDisconnect;
end;

//------------------- for mail receive test ---------------------------------
procedure TjobForm.N7Click(Sender: TObject);
begin
mailrecvPanel.Visible := False;
mailsendPanel.Visible := True;
end;

procedure TjobForm.N8Click(Sender: TObject);
begin
mailrecvPanel.Visible := True;
mailsendPanel.Visible := False;
end;

procedure TjobForm.N10Click(Sender: TObject);
begin
mailrecvPanel.Visible := false;
mailsendPanel.Visible := false;
end;

procedure TjobForm.btnConnectClick(Sender: TObject);
begin
mailRecvConnectToServer(recvHost.Text, recvAcc.Text, recvPass.Text);
end;

procedure TjobForm.btnGetMsgClick(Sender: TObject);
begin
if mailRecvGetMessages(False) > 0 then
begin
showRecvMsg;
end
else Application.MessageBox('你没有新邮件!', '邮件服务', MB_OK);
end;

procedure TjobForm.btnDeleteMailClick(Sender: TObject);
begin
mailRecvDeleteMessages();
end;

procedure TjobForm.btnDisconnectClick(Sender: TObject);
begin
mailRecvDisconnect;
end;

procedure TjobForm.btnNextAccClick(Sender: TObject);
begin
if iMailRecvCurrentMsg < SakMsgList.Count-1 then
begin
Inc(iMailRecvCurrentMsg);
showRecvMsg;
end;
end;

procedure TjobForm.btnPrevAccClick(Sender: TObject);
begin
if iMailRecvCurrentMsg > 0 then
begin
Dec(iMailRecvCurrentMsg);
showRecvMsg;
end;
end;

procedure TjobForm.showRecvMsg;
var
i: Integer;
begin
if (iMailRecvCurrentMsg >= 0) and (iMailRecvCurrentMsg < sakMsgList.Count) then
begin
recvFrom.Text := sakMsgList[iMailRecvCurrentMsg].From;
recvTo.Text := sakMsgList[iMailRecvCurrentMsg].SendTo;
recvSubject.Text := sakMsgList[iMailRecvCurrentMsg].Subject;
recvMemo.Text := sakMsgList[iMailRecvCurrentMsg].Text.Text;
recvAtach.Items.Clear;
for i:=0 to sakMsgList[iMailRecvCurrentMsg].AttachedFiles.Count-1 do
recvAtach.Items.Add(sakMsgList[iMailRecvCurrentMsg].AttachedFiles.FileName);
//btnSave.Enabled := recvAtach.Items.Count > 0;
end;
end;

procedure TjobForm.recvAtachChange(Sender: TObject);
begin
btnSave.Enabled := recvAtach.Text <> '';
end;

procedure TjobForm.btnSaveClick(Sender: TObject);
begin
SaveDialog1.FileName := recvAtach.Text;
if SaveDialog1.Execute then
SakMsgList[iMailRecvCurrentMsg].AttachedFiles[recvAtach.ItemIndex].SaveToFile(saveDialog1.FileName);
end;

procedure TjobForm.btnGetnDelClick(Sender: TObject);
begin
if mailRecvGetMessages(True) > 0 then
begin
showRecvMsg;
end;
end;
 
后退
顶部