[delphi]利用TidHTTP控件向目标PHP网页POST参数
2011-07-03 23:32
483 查看
[序言]
最近在做一个功能(delphi),需要向163邮箱发送EMAIL,本想偷懒利用现成的Indy的smtp控件发送,结果发现163邮箱已对这类发送方式纳入垃圾邮件了.虽然在网上查阅相关资料可以通过修改Indy的单元来达到发送成功的目的,可本人不太喜欢这种行为.网上也提供了原生套接字封装的EMAIL发送类,但又不是大公司封装,还是罢了.还有流行Jmail发送组件,本人也尝试查找delphi版本的,找了几个测试代码,没有成功.实在不行了,只能采用最稳妥的方法POST一个PHP网页通过Jmail组件发送到163邮箱.如果大家有条件的,可以采用这种方式.该方式我绝对是最稳定的.
[代码示例]
[Delphi写的客户端Post目标PHP网页]
[目标PHP网页接受来自Delphi写的客户端参数]
最近在做一个功能(delphi),需要向163邮箱发送EMAIL,本想偷懒利用现成的Indy的smtp控件发送,结果发现163邮箱已对这类发送方式纳入垃圾邮件了.虽然在网上查阅相关资料可以通过修改Indy的单元来达到发送成功的目的,可本人不太喜欢这种行为.网上也提供了原生套接字封装的EMAIL发送类,但又不是大公司封装,还是罢了.还有流行Jmail发送组件,本人也尝试查找delphi版本的,找了几个测试代码,没有成功.实在不行了,只能采用最稳妥的方法POST一个PHP网页通过Jmail组件发送到163邮箱.如果大家有条件的,可以采用这种方式.该方式我绝对是最稳定的.
[代码示例]
[Delphi写的客户端Post目标PHP网页]
procedure TForm1.RzButton1Click(Sender: TObject); var strlist_ParamPost : TStringList ; class_IdHttp : TIdHTTP ; begin strlist_ParamPost := TStringList.Create() ; class_IdHttp := TIdHTTP.Create(nil); try // 向目标PHP网址POST参数 strlist_ParamPost.Add('Subject=PHP+Jmail测试邮件') ; strlist_ParamPost.Add('1=中国人') ; strlist_ParamPost.Add('2=aaaaa') ; strlist_ParamPost.Add('3=变态'); // TidHTTP属性设置 class_IdHttp.ReadTimeout := 30*1000 ; // 超时设置 class_IdHttp.Post('http://www.xxxxxxxxxxx.com/sendemail/sendemail.php', strlist_ParamPost) ; finally FreeAndNil(class_IdHttp); strlist_ParamPost.Free() ; end; end;
[目标PHP网页接受来自Delphi写的客户端参数]
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title></title> </head> <body> <?php if(count($_POST) != 0) { $var_PostAllParma = "" ; foreach($_POST as $var_Key => $var_Value) { $var_PostAllParma .= $var_Value."\r\n" ; } $var_Jmail = new COM('JMail.Message') or die("Can not call Jmail COM") ; $var_Jmail->silent = true ; $var_Jmail->charset = "gb2312" ; $var_Jmail->from = "xxxxxxx_tp@163.com" ; $var_Jmail->fromName= "xxxxxxx_tp"; $var_Jmail->AddRecipient("xxxxxx_cd@163.com") ; $var_Jmail->Subject = $_POST['Subject'] ; $var_Jmail->Body = $var_PostAllParma ; $var_Jmail->MailServerUserName = "xxxxx_tp@163.com" ; $var_Jmail->MailServerPassword = "xxxxx" ; try{ $var_Ret = $var_Jmail->Send("smtp.163.com") ; if($var_Ret) echo "Send Success" ; else echo "Send Faile" ; }catch(Exception $e){ echo $e->GetMessage() ; } } ?> </body> </html>
相关文章推荐
- 用Delphi的TIdHttp控件发起POST请求和Java的Servlet响应
- [Delphi]实现使用TIdHttp控件向https地址Post请求
- Delphi xe5 控件TIdhttp的用法post,get解决中文乱码问题
- 用Delphi的TIdHttp控件发起POST请求和Java的Servlet响应
- Delphi xe5 控件TIdhttp的用法post,get解决中文乱码问题
- PHP使用http_build_query()构造URL字符串的方法(可将POST参数组转换拼接成GET请求链接)
- PHP中Http协议post请求参数
- 用PHP模拟HTTP中的POST请求JSP网页,提交数据
- Delphi IDHTTP控件:GET/POST 请求
- PHP中Http协议post请求参数
- Python利用urllib/2模拟Http的Post请求调用php
- Delphi XE10,Json 生成和解析,再利用indyhttp控件Post
- 利用Indy的TIdFtp控件实现FTP协议 for http://www.cittm.net/Article/sheji/delphi/200601/1227.html
- 利用volley进行http设置请求头、超时及请求参数设置(post)
- delphi中利用Indy的TIdFtp控件实现FTP协议
- 关于如何判断网页是静态还是伪静态的方法——本文来自雅致生活网『www.yzsh0514.com』原帖地址:http://www.yzsh0514.com/bbs/viewthread.php?tid==0
- 用PHP模拟HTTP中的POST请求JSP网页,提交数据
- 利用HttpClient的POST方式发起带参数的请求时,点击注册按钮无反应状态分析
- delphi中利用Indy的TIdFtp控件实现FTP协议
- Delphi indy TIdHTTP TIdHTTPServer Post Get