ホームページ  >  記事  >  バックエンド開発  >  PHPメール送信クラス

PHPメール送信クラス

WBOY
WBOYオリジナル
2016-07-25 08:45:291164ブラウズ
送信電子邮件、PHP
  1. /*************************************************** * ********************************
  2. 使用説明:
  3. $m= new SendM('smtp サーバー アドレス', 'アカウント', 'パスワード', ポート (int), タイムアウト再試行時間 (int));
  4. $m->Send('受信者のメールアドレス', '件名', 'メール本文');例:
  5. $m= new SendM('smtp.yeah.net','testuser','testuserpwd',25,30);
  6. $m->Send('a@coolmr.com ', 'Test) email', 'これはメール送信のテストメールです。よろしくお願いします');
  7. ************************ *** *********************************************** ** *********/
  8. class SendM{
  9. private $Mailhost,$Mailuser,$Mailpwd,$Mailport,$Mailtimeout,$ms,$ending = "rn", $endingc="n";
  10. function __construct($Mailhost,$Mailuser,$Mailpwd,$Mailport,$Mailtimeout){
  11. $this->Mailhost=$Mailhost;
  12. $this->Mailuser=$ Mailuser;
  13. $this->>Mailpwd=$Mailpwd;
  14. $this->>Mailport=$Mailport;
  15. $this->>Mailtimeout=$Mailtimeout;
  16. $this->>ConnectSmtpServer();
  17. }
  18. プライベート関数 ConnectSmtpServer(){
  19. if(!is_string($this->Mailhost)){ settype(trim($this->Mailhost),"string"); }
  20. if(!is_integer($this->Mailport)){ settype(trim($this->Mailport),"integer"); }
  21. if(!is_integer($this->Mailtimeout)){ settype(trim($this->Mailtimeout),"integer"); }
  22. $this->ms=@fsockopen($this->Mailhost,$this->Mailport,$this->errorno,$this->errorstr,$this->Mailtimeout);
  23. if(substr(PHP_OS,0,3) != "WIN"){ stream_set_timeout($this->ms, $this->Mailtimeout, 0);}
  24. $rcp = $this->get_echo ();
  25. fputs($this->ms,"ehlo bobo".$this->ending);
  26. $rcp = $this->get_echo();
  27. if(substr($rcp, 0,3)!='250'){ false を返します。 }
  28. fputs($this->ms,'認証ログイン'.$this->ending);
  29. $rcp = $this->get_echo();
  30. if(substr($rcp,0,3)=='334'){ $this->Auth($this->Mailuser,$this->Mailpwd); }else{ false を返します。 } }
  31. プライベート関数 Auth($Mailuser,$Mailpwd){
  32. $this->Mailuseren=base64_encode($Mailuser); $this->Mailpwden=base64_encode($Mailpwd);
  33. fputs($this->ms,$this->Mailuseren.$this->ending);
  34. $rcp = $this->get_echo();
  35. fputs($this->ms,$this->Mailpwden.$this->ending);
  36. $rcp = $this->get_echo(); }
  37. プライベート関数 get_echo(){
  38. $edata=""; while($estr=@fgets($this->ms,600)){ $edata .= $estr;
  39. if(substr($estr,3,1) == " ") { Break; } }
  40. $edata を返します。 }
  41. public function Send($to,$subject,$connect){
  42. $host=explode('.',$this->Mailhost);
  43. $fromaddress=$this->Mailuser.'@ '.$host[1].'.'.$host[2];
  44. fputs($this->ms,'メール送信元:<'.$fromaddress.'>'.$this->ending);
  45. $rcp = $this->get_echo();
  46. fputs($this->ms,'rcpt to:<'.$to.'>'.$this->ending);
  47. $rcp = $this->get_echo();
  48. fputs($this->ms,'data'.$this->ending);
  49. $rcp = $this->get_echo();
  50. fputs($this->ms,"to:$to".$this->endingc);
  51. fputs($this->ms,"from:$fromaddress".$this->endingc) );
  52. fputs($this->ms,"subject:$subject".$this->endingc.$this->endingc);
  53. fputs($this->ms,"$connect" .$this->endingc);
  54. fputs($this->ms,'.'.$this->ending);
  55. $rcp = $this->get_echo(); if(substr($rcp,0,3)=='250'){header("Location:main_pro.php?act=msg&errors=on&msg=邮件発行成功!已成功提交至对方服务器!"); }else{ header("Location:main_pro.php?act=msg&errors=on&msg=很遗憾,邮件送信失败了!请检查邮件账户構成是否正确!"); }
  56. }
  57. }
  58. ?>
  59. 复制代

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。