邮件发送问题(mail.163.com的邮箱)大家帮忙啊在线等待!!!!!!!!(300分)

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

liubin44966

Unregistered / Unconfirmed
GUEST, unregistred user!
代码如下<br>IdSMTP1.AuthenticationType:=atLogin;<br> &nbsp; &nbsp; IdSMTP1.Username:=liubin44966@163.com;<br> &nbsp; &nbsp; IdSMTP1.Password:=**********;<br> &nbsp; &nbsp; IdSMTP1.Host:=smtp.163.com;<br> &nbsp; &nbsp; IdSMTP1.Port:=25;<br> &nbsp;try<br> &nbsp; IdSMTP1.Connect;<br> &nbsp; except<br> &nbsp; &nbsp;Application.MessageBox('连接SMTP服务器失败!','提示',MB_OK+MB_ICONEXCLAMATION);<br> &nbsp; &nbsp;Exit;<br> &nbsp;end;<br> try<br> &nbsp; with IdMessage1 do<br> &nbsp; &nbsp;begin<br> &nbsp; &nbsp;clear;<br> &nbsp; &nbsp; body.Clear;<br> &nbsp; &nbsp; Body.Add('上报数据');//内容<br> &nbsp; &nbsp; From.Text:=trim(Ed_yxdz.Text);<br> &nbsp; &nbsp; Recipients.EMailAddresses :=sjr;//收件人<br> &nbsp; &nbsp; Subject:='上报数据';//主题<br> &nbsp; &nbsp; TIdAttachment.Create(IdMessage1.MessageParts,file_name);<br> &nbsp; end;<br>// +++++++++++++++++++++++++++++<br> &nbsp; &nbsp; IdSMTP1.Send(IdMessage1);<br>注意:执行到这产生错误<br><br> &nbsp; &nbsp; Application.MessageBox('邮件发送成功!','提示',MB_OK+MB_ICONASTERISK); &nbsp;<br> &nbsp;finally<br> &nbsp;IdSMTP1.Disconnect;<br> &nbsp;end;<br><br>提示错误<br>bad sequence of commands
 
大家给点意见啊
 
别的邮箱服务器sohu等没问题的啊
 
点击打开更多Tips: http://kingron.delphibbs.com<br>我用下面的代码没有问题:<br>function SMTPSendMail(const AHost, AAccount, APassword, AReciever, ASubject, ABody: string;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;const AAuth: Boolean): Boolean;<br>var<br> &nbsp;AMsg : TIdMessage;<br>begin<br> &nbsp;Result := False;<br> &nbsp;if IsEmptyStr(AReciever) then Exit;<br> &nbsp;<br> &nbsp;AMsg := TIdMessage.Create(nil);<br> &nbsp;with TIdSMTP.Create(nil) do<br> &nbsp;try<br> &nbsp; &nbsp;Host := LeftPart(AHost, ':');<br> &nbsp; &nbsp;Port := StrToIntDef(RightPart(AHost, ':'), 25);<br> &nbsp; &nbsp;Connect;<br> &nbsp; &nbsp;if AAuth then &nbsp;/// 如果需要SMTP认证<br> &nbsp; &nbsp;begin<br> &nbsp; &nbsp; &nbsp;AuthenticationType := atLogin;<br> &nbsp; &nbsp; &nbsp;Password := APassword;<br> &nbsp; &nbsp; &nbsp;Username := AAccount;<br> &nbsp; &nbsp; &nbsp;if not Authenticate then<br> &nbsp; &nbsp; &nbsp;begin<br> &nbsp; &nbsp; &nbsp; &nbsp;WriteLogMsg(ltError, CSErrSMTPLogin);<br> &nbsp; &nbsp; &nbsp; &nbsp;Exit;<br> &nbsp; &nbsp; &nbsp;end;<br> &nbsp; &nbsp;end;<br><br> &nbsp; &nbsp;AMsg.From.Address := AAccount;<br> &nbsp; &nbsp;AMsg.From.Name := LeftPart(AAccount, '@');<br> &nbsp; &nbsp;AMsg.Subject := ASubject;<br> &nbsp; &nbsp;AMsg.Body.Text := ABody;<br><br> &nbsp; &nbsp;if not IsEmptyStr(AReciever) then<br> &nbsp; &nbsp; &nbsp;AMsg.Recipients.EMailAddresses := AReciever;<br> &nbsp; &nbsp;Send(AMsg);<br> &nbsp; &nbsp;Result := True;<br> &nbsp;finally<br> &nbsp; &nbsp;Free;<br> &nbsp; &nbsp;AMsg.Free;<br> &nbsp;end;<br>end;
 
Kingron 谢谢先 ,问题解决立即给分
 
Kingron你好 <br>RightPart是你自己写的函数还是哪个单元的
 
LeftPart和RightPart是根据某个字符分别取传入参数的左边或右边的字符串,自己写一下,用Copy函数就可以了。
 
Kingron 你好<br>原先我的代码没问题的最近网易的邮箱不可以了<br>我用了你的方法还是不可以的啊
 
TO liubin44966<br>你可以尝试把用户名改为'liubin44966',语句如下:<br>IdSMTP1.Username:='liubin44966';<br>注:因为在有一个网站,他允许写全名(即加邮件后缀),有的却不要求加邮件后缀.<br>试试可不可以了!^_^,对不起,我没有测试,只是想法!<br><br>说明一下,你上面的把字符串都要用''括起来,不然编译会提示错误的!
 
_港湾 你好: &nbsp;<br>实际上我就是IdSMTP1.Username:='liubin44966',上面的是写错了<br>因为原先是能用的啊
 
应该是命令顺序问题吧<br>1 初始化TIdsmtp<br>2 连接到smtp服务器<br>3 验证<br>4 发送信息<br>你好象是先请求验证了.<br>还可能是本身163信箱与其他的不一样<br>你可以到D安装目录下source/indy, 打开idmessage.pas<br>注释//value['X-Library']:=gsIDProductName+''+gsIdVersion;...<br>保存,重新编译
 
为什么大家不用9.0.50和10.1.5这两个版本,如果是Indy自己的问题,可在新闻组上直接和RLebeau交流,我的好几个单元都经过了RLebeau的优化。目前我正在努力学习indy的设计和各种RFC标准。同时所有的demo都将升级到10.1.5版本。有兴趣的朋友可以与我交流。<br><br>BTW:像诸如 //value['X-Library']:=gsIDProductName+''+gsIdVersion<br>这样的问题在新版的indy中应该不存在了,至少在我的10.1.5版中是没有了。
 
大家怎么还在讨论?我用的D7自带的Indy组件,使用我前面提供的代码目前对smtp.163.com是有效的!!!
 
看看 http://www.delphibbs.com/delphibbs/dispq.asp?lid=3359545 就明白了。<br>如果图方便,留下信箱,我把 D7 的 Indy 修改后重新编译的文件发给你。
 
自己研究了,揭贴了
 
多人接受答案了。
 
后退
顶部