-
-
- include_once("class.phpmailer.php");
- /**
- * 電子メールモジュール構成情報を定義します
- */
- define("SMTP_HOST","smtp.mail.yahoo.com) "); // SMTP ホスト
- define("SMTP_MAIL"," XXXX@yahoo.cn"); // SMTP ユーザーの電子メール
- define("SMTP_PASS"," XXXX"); // SMTP のパスワード
-
define("SERVICE_MAIL"," XXXX@yahoo.cn"); // SMTP ユーザーのメールアドレス
- define("SERVICE_NAME","PHPBOOK Email Test") // 使用される SMTP 名< p>/**
- * phpmailer を使用してメールモジュールを送信します
- *
- * @param string $email
- * @param string $user
- * @param string $subject
- * @param string $body
- * @return bool
- */
- function sendMail($email,$user,$subject,$body)
- {
- $mail = new PHPMailer();
- //$this;
- $mail ->IsSMTP (); // SMTP を設定します
- $mail->Host = SMTP_HOST; // SMTP サーバーのアドレスを設定します
- $mail->SMTPAuth = true; // SMTP 権限の検証をオンにします
- $mail-> ; // SMTP ユーザー名
- $mail->Password = SMTP_PASS; // SMTP サーバーのパスワード
$mail->From = SERVICE_MAIL; // 送信者のアドレスを設定します= SERVICE_NAME // 送信者の名前を設定します
- $mail->AddAddress($email, $user) // 受信者のアドレスを追加します
- $mail->AddReplyTo(SERVICE_MAIL, SERVICE_NAME); // 返信アドレスを設定しますp>
$mail->WordWrap = 50; // 表示形式を設定します
- $mail->IsHTML(true); // HTML をサポートするようにメールを設定します
- $mail->Subject = $subject;
- $mail->Body = $body;
- $mail->AltBody = ""; // テキスト型 mail
if(!$mail- >Send()) {
- return $mail->ErrorInfo;
- }
- return true;
- }
//テストメールの送信開始: fsockopen() [function.fsockopen ]: php_network_getaddresses: getaddrinfo failed: Name or /var/www/xiehui/admin/mail/class.smtp.php の 89 行目でサービスが不明です
- $tomail = " XXXX@126.com";
- $user = " XXXXlinux ";
- $_mailSubject = "メール テストexample!"; // ユーザーに送信されるメール件名グループ
- $_mailBody = "Sina"; // メールコンテンツチーム
- sendMail($tomail,$user ,$_mailSubject,$_mailBody);
- ?>
-
-
-
コードをコピー
Yahoo の SMTP は非常に使いやすいことが実験で証明されましたが、いわゆる Sina の SMTP は実際には使いにくいです。
メソッド4、ソケットによって書かれたプログラムに与えられます
ソケットを使用して電子メールを送信するためのカプセル化クラス:
- class sendmail{
- var $lastmessage; // 返された最後の応答メッセージを記録します
- var $lastact; // HELO で使用されます。ユーザー歓迎
- var $debug; //デバッグ情報を表示するかどうか
- var $smtp; //smtp サーバー
- var $port; // ソケットハンドル
- // メール送信関数
- function send_mail($smtp, $welcome="", $debug=false) {
- if(empty($smtp)) die("SMTP を空にすることはできません!");
- $this->smtp=$smtp;
- if(empty($welcome)) {
- $this->welcome=gethostbyaddr("localhost");
- }else
- $this->welcome= $welcome;
- $this->debug=$debug;
- $this->lastmessage="";
- $this->lastact="";
- $this->port="25";
- }
- //表示调试情報
- function show_debug($message, $inout) {
- if ($this->debug) {
- if($inout=="in"){ //响应情報
- $m='< ;< ';
- }else
- $m='>> ';
- if(!ereg("n$", $message))
- $message .= "
";
- $message= nl2br($message);
- echo "${m}${message}";
- }
- }
- //実行传递的コマンド
- function do_command($command, $code) {
- $this->lastact=$command;
- $this->show_debug($this->lastact, "out");
- fputs ( $this->fp, $this->gt; lastact );
- $this->lastmessage = fgets ( $this->fp, 512 );
- $this->show_debug($this->lastmessage, "in");
- if(!ereg(" ^$code", $this->lastmessage))
- return false;
- else
- return true;
- }
- //邮件送信处理
- function send( $to,$from,$subject,$message) {
- / /接続サービス
- $this->lastact="connect";
- $this->show_debug("SMTP サーバーへの接続: ".$this->smtp, "out");
- $this->fp = fsockopen ( $this->smtp, $this->port );
- if ( $this->fp ) {
- $this->set_socket_blocking( $this->fp, true );
- $this ->lastmessage=fgets($this->fp,512);
- $this->show_debug($this->lastmessage, "in");
- if (! ereg ( "^220", $this->lastmessage ) ) {
- return false;
- }else{
- $this->lastact="HELO " . $this->ようこそ。 "n";
- if(!$this->do_command($this->lastact, "250")){
- fclose($this->fp);
- return false;
- }
- $this-> ;lastact="メール送信元: $from" 。 "n";
- if(!$this->do_command($this->lastact, "250")){
- fclose($this->fp);
- return false;
- }
- $this-> ;lastact="RCPT TO: $to" 。 "n";
- if(!$this->do_command($this->lastact, "250")){
- fclose($this->fp);
- return false;
- }
- //开始送信邮件正文
- $this->lastact="DATAn";
- if(!$this->do_command($this->lastact, "354")){
- fclose($this->fp);
- return false;
- }
- //开始処理邮件主题头
- $head="Subject: $subjectn";
- if(!empty($subject) && !ereg($head, $message)){
- $message = $ head.$message;
- }
- //处処理邮件From头
- $head="From: $fromn";
- if(!empty($from) && !ereg($head, $message)) {
- $message = $head.$message;
- }
- //開始処理邮件To头
- $head="To: $ton";
- if(!empty($to) && !ereg($head, $message)) {
- $message = $head.$message;
- }
- //处理结束串
- if(!ereg("n.n", $message))
- $message .= "n.n";
- $this->show_debug($message , "out");
- fputs($this->fp, $message);
- $this->lastact="QUITn";
- if(!$this->do_command($this->lastact, "250")){
- fclose($this->fp);
- return false;
- }
- }
- return true;
- }else{
- $this->show_debug("连接失败!!", "in ");
- return false;
- }
- }
- }
- ?>
复制代
ソケットを使用したメール送信の例:
-
- include ("./sendmail.class.php");
- $mail = new sendmail();
- $email = "こんにちは、これはテストメールです!";
- $ sendmail = new send_mail("smtp.mail.126.com","PHPBOOK",true); //調整情報を表示
- if($mail->send("XXXX@126.com", "XXXX@ 126) .com"、"SOCKET メールのテスト"、$email)) {
- echo "送信に成功しました!
"; - }else{
- echo "送信に失敗しました!
"; - }
- ?>
コードをコピー
|