ホームページ  >  記事  >  php教程  >  SOCKET経由で電子メールを送信する

SOCKET経由で電子メールを送信する

WBOY
WBOYオリジナル
2016-06-21 09:07:301072ブラウズ

メールを送信

/*
再印刷する場合は、ソースを示してください。必要な目的を達成するために、このコードに特定の変更と最適化を加えることができます

* 名前: ソケットを使用して電子メールを送信します
* 説明: このクラスは直接実装しますメールを直接送信するには、認証が必要な SMTP サーバーを使用してください。 limodou の記事「Socket を使用してメールを送信する」を参照してください
* したがって、この記事のカテゴリ
にはあまり意味がありません。 [RFC 1869] と PHP マニュアルも参照してください。 !上記の違いは、私が使用しているのが fsockopen() 関数ではないことです
具体的には、自分で確認できます。 !テストに合格したところです、とても素晴らしいです! !実際、このクラスは、添付ファイルの電子メールを直接送信するように書き換えることができます。 。 。数日以内に書きますね! , 私はデバッグしてパスしました。このプログラムをからかうような悪意がなければ、彼はまだ非常に従順です。数日以内に添付ファイルを送信する機能を完了します。 !

仮想ホストが MAIL 機能をサポートしていなくても、もう心配する必要はありません。早速試してみてください!

* 作者: Xiaoluzhu 3.3 QQ: 6550382
* 日付: 2003-09-18

他の人の作品の成功を尊重してください、この著作権情報を保持してください、ありがとう!
作者: Xiaoluzhu 3.3 、PHP QQ6550382 を交換するために私に連絡することを歓迎します
MAIL:liverzhang@tom.com
*/
set_time_limit(120);
class smtp_mail
{
var $host ; /Port は通常 25 です
var $user ; //SMTP 認証アカウント
var $pass;
var $conn;
var $result_str; // 結果
var $to;
var $body; = Base64_encode($user);
$this->パス = Base64_encode($pass);
$this->debug = $debug;$this->socket =ソケット_create (AF_INET, SOCK_STREAM, SOL_TCP); //具体的な使用方法についてはマニュアルを参照してください
if($this->socket)
{
$this->result_str = "ソケットの作成: ".socket_strerror (socket_last_error());
$this->debug_show($this->result_str);
}
else
{
exit("初期化に失敗しました。ネットワーク接続とパラメータを確認してください");
}
$ this->conn =ソケット_connect($this->ソケット,$this->ホスト,$this->ポート);
if($this->conn)
{
$this-> result_str = "SOCKET 接続の作成:".socket_strerror(socket_last_error());
$this->debug_show($this->result_str);
}
else
{
exit("初期化に失敗しました。ネットワーク接続を確認してくださいおよびパラメータ");
}
$this->result_str = "サーバー応答: ".socket_read ($this->socket, 1024)."";
$ this->debug_show($this->result_str);


}
function debug_show($str)
{
if($this->debug)
{
echo $str."}
}
function send($from,$to,$subject,$body)
{
if($from == "" | | $to == "")
{
exit("お願いしますメールアドレスを入力してください");
}
if($subject == "") $sebject = "無題";
if($body == "") $body = "コンテンツなし";
$this->from = $from;
$this->to = $to;
$this->gt;body = "From:".$this- >from."n"; 。= ;
$this->docommand();
$this->in = $this->docommand();$this->in = "MAIL FROM:".$this->from."rn";   
$this->docommand();   

$this->in = "RCPT TO:".$this->to."rn";   
$this->docommand();   

$this->in = "DATArn";   
$this->docommand();   

$this->in = $All."rn.rn";   
$this->docommand();   

$this->in = "終了";   
$this->docommand();   

//结束,关闭连接



}
function docommand()
{
socket_write ($this->socket, $this->in, strlen ($this-&g t;in));   
$this->debug_show("客户机コマンド:".$this->in);   
$this->result_str = "服务器应答:".socket_read ($this->socket, 1024)."";   
$this->debug_show($this->result_str);   
}
}
//これは我為的测试、我用的是smtp.163.com、那你的信箱也必须是163.com的,要不人家不让你発行!!
//你用このような時期に、自己の信箱への変更が可能になりました
$smtp = new smtp_mail("smtp.163.com","25","你的163.com 帐号","你的秘密コード");   
//如果你要表示会话信息,请将上の修正
//$smtp = new smtp_mail("smtp.163.com","25","你的163.comの帐号","你的密暗号",true);   
$smtp->send("你的163.comの帐号@163.com","目标地址","你好","你好");   
?>   



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