/*
* メール送信クラス
* 作成者: Duo Cainiao
* 連絡先メールアドレス: kingerq AT msn DOT com
* 作成時刻: 2005-08-19
* 注: このタイプは変更されています。ソースを忘れました
*/
class smail {
//SMTP サーバー プロバイダー (ドメイン名または IP アドレスにすることができます)
var $smtp = " smtp.163.com";
//SMTP には認証が必要です。値を 1 に設定します。認証が必要ない場合は、値を 0 に設定します。現在、ほとんどの SMTP サービス プロバイダーは認証を必要としています。不明な場合は、お問い合わせください。 SMTP サービスの連絡先。
var $check = 1;
//あなたのメールアカウント名
var $username = "";
//あなたのメールパスワード
var $password = "";
/ /このメールは送信サーバー上のメールである必要があります
var $s_from = "";
/*
* 機能: 送信初期化設定
* $from サーバー上の送信メール
* $password 電子メール パスワード
* $smtp SMTP サーバー プロバイダー (ドメイン名または IP アドレスにすることができます)
* $check SMTP には認証が必要です。 値を 1 に設定します。 いいえ 認証値は次のとおりです。 0 である必要があります。現在、ほとんどの SMTP サービス プロバイダーでは検証が必要です
*/
function smail ( $from, $password, $smtp, $check = 1 ) {
if( preg_match(" /^[^ d-_][w-]*[^-_]@[^-][a-zA-Zd-]+[^-](.[^-][a-zA-Zd-] *[^- ])*.[a-zA-Z]{2,3}/", $from ) ) {
$this->username = substr( $from, 0, strpos( $from , "@" ) );
$this->パスワード = $password;
$this->smtp = $smtp ? $smtp : $this->smtp;
$this-> ;
$this->s_from = $from;
}
}
/*
* 関数: メールを送信
* $to ターゲットメール
* $from 送信元メールアドレス
* $subject メールタイトル
* $message メール内容
*/
function send ( $to, $from, $subject, $message ) {
//サーバーに接続します
$fp = fsockopen ( $this->smtp, 25, $errno, $errstr, 60);
if (!$fp ) return "サーバーに接続できませんでした". __LINE__;
set_socket_blocking($fp, true );
$lastmessage=fgets($fp,512);
if ( substr($lastmessage,0,3) != 220 ) return " エラーメッセージ: ".$lastmessage.__LINE__;
//HELO
$yourname = "YOURNAME";
if($this->check == "1") $lastact =" EHLO ".$yourname."rn";
else $lastact="HELO ".$yourname."rn";
fputs($fp, $lastact);
$lastmessage == fgets($fp,512);
if (substr($lastmessage,0,3) != 220 ) return "エラー メッセージ $lastmessage".__LINE__;
while (true) {
$ lastmessage = fgets($fp,512);
if ( (substr($lastmessage,3,1) != "-") or (empty($lastmessage)) )
Break;
}
//認証
if ($this->check=="1") {
//検証を開始します
$lastat="AUTH LOGIN"."rn" ;
fputs( $fp, $lastat);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != 334) return "エラー メッセージ $ lastmessage ".__LINE__;
//ユーザー名
$lastact=base64_encode($this->username)."rn";
fputs( $fp, $lastact);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != 334) return "エラー メッセージ $lastmessage".__LINE__;
//ユーザー パスワード
$lastact=base64_encode ( $this->password)."rn";
fputs( $fp, $lastat);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0 , 3) != "235") return "エラー メッセージ $lastmessage".__LINE__;
}
//FROM:
$lastact="MAIL FROM: "。 s_from . "rn";
fputs( $fp, $lastact);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != 250) return "エラー メッセージ $lastmessage".__LINE__;
//TO:
$lastat="RCPT TO: $to" .
fputs( $fp, $lastact);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != 250) return "エラー メッセージ $lastmessage".__LINE__;
// DATA
$lastact="DATArn";
fputs($fp, $lastat);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) ) != 354) return "エラーメッセージ $lastmessage".__LINE__;
//件名ヘッダーを処理します
$head="件名: $subjectrn"; head. "rn".$message;
//ヘッダーからの処理
$head="From: $fromrn";
$message = $head.$message;
//ヘッダーへの処理
$head="To: $torn";
$ message = $head.$message;
//終了文字列を追加
$message .= "rn.rn";
//メッセージを送信
fputs ($fp, $message);
$lastat="QUITrn";
fclose($fp); > }
}
/*送信例
$sm = new smail( "ユーザー名@163.com", "パスワード", "smtp.163.com" );
$end = $ sm->send( "宛先メール", "送信元メール", "これがタイトルです", "これがメールの内容です" );
if( $end ) echo $end;
else echo "送信成功! ";
*/
?>