zhangdehua 1 éve
szülő
commit
6bacfb25b4
2 módosított fájl, 70 hozzáadás és 3 törlés
  1. 14 3
      app/index/controller/User.php
  2. 56 0
      app/index/service/passport/UMailer.php

+ 14 - 3
app/index/controller/User.php

@@ -10,6 +10,7 @@ use app\index\model\OrderAddress;
 use app\index\model\user\PointsLog as PointsLogModel;
 use app\index\model\Goods as GoodsModel;
 use app\index\model\Order as OrderModel;
+use app\index\service\passport\UMailer;
 use app\store\model\Express as ExpressModel;
 use think\facade\Cache;
 use think\facade\Log;
@@ -176,16 +177,26 @@ class User extends Controller
         $encryptUserId = encrypt(strval($userId));
 
         $url = 'Your friend shared a product with you. Click on the link to view it now:'
-            . config('app.app_host') . '/index/index/productDetails.html?goodsId=' . $goodsId . '&key=' . $encryptUserId;
+            . config('app.app_host') . '/index/index/productDetails/goodsId/' . $goodsId . '?key=' . $encryptUserId;
         Log::info($url);
 
-        $MailCaptchaService = new MailCaptchaService;
-        if ($MailCaptchaService->sendText($mailbox, 'From Your Friend', $url)) {
+        $smtp = new UMailer(config('smtp.host'), config('smtp.port'), true,
+            config('smtp.username'), config('smtp.password'));
+        $smtp->debug = true;                     //是否显示发送的调试信息
+        $flag = $smtp->sendShareText($mailbox, config('smtp.username'),'Code','TXT','','','', $url);
+        if ($flag) {
             $shareKeyModel = new ShareKey();
             $shareKeyModel->save(['key_string' => $encryptUserId, 'user_id' => $userId, 'store_id' => $this->storeId, 'create_time' => time(), 'is_delete' => 0, 'update_time' => time()]);
             return $this->renderSuccess([], 'Successful! Tell your friends to check for new emails.');
         }
 
+/*        $MailCaptchaService = new MailCaptchaService;
+        if ($MailCaptchaService->sendText($mailbox, 'From Your Friend', $url)) {
+            $shareKeyModel = new ShareKey();
+            $shareKeyModel->save(['key_string' => $encryptUserId, 'user_id' => $userId, 'store_id' => $this->storeId, 'create_time' => time(), 'is_delete' => 0, 'update_time' => time()]);
+            return $this->renderSuccess([], 'Successful! Tell your friends to check for new emails.');
+        }*/
+
         if (is_debug()) {
             $shareKeyModel = new ShareKey();
             $shareKeyModel->save(['key_string' => $encryptUserId, 'user_id' => $userId, 'store_id' => $this->storeId, 'create_time' => time(), 'is_delete' => 0, 'update_time' => time()]);

+ 56 - 0
app/index/service/passport/UMailer.php

@@ -140,6 +140,62 @@ class UMailer extends BaseService
         return $sent;
     }
 
+    function sendShareText($to, $from, $subject = "Code", $mailtype = 'TXT', $cc = "", $bcc = "", $additional_headers = "", $body = '')
+    {
+        if (!$this->record($to)) {
+            return false;
+        }
+
+        $header = '';
+        $mail_from = $this->get_address($this->strip_comment($from));
+        $body = preg_replace("/(^|(\r\n))(\\.)/", "\\1.\\3", $body);
+        $header .= "MIME-Version:1.0\r\n";
+        if ($mailtype == "HTML") {
+            $header .= "Content-Type:text/html\r\n";
+        }
+        $header .= "To: " . $to . "\r\n";
+        if ($cc != "") {
+            $header .= "Cc: " . $cc . "\r\n";
+        }
+        $header .= "From: $from<" . $from . ">\r\n";
+        $header .= "Subject: " . $subject . "\r\n";
+        $header .= $additional_headers;
+        $header .= "Date: " . date("r") . "\r\n";
+        $header .= "X-Mailer:By Redhat (PHP/" . phpversion() . ")\r\n";
+        list($msec, $sec) = explode(" ", microtime());
+        $header .= "Message-ID: <" . date("YmdHis", $sec) . "." . ($msec * 1000000) . "." . $mail_from . ">\r\n";
+        $TO = explode(",", $this->strip_comment($to));
+
+        if ($cc != "") {
+            $TO = array_merge($TO, explode(",", $this->strip_comment($cc)));
+        }
+
+        if ($bcc != "") {
+            $TO = array_merge($TO, explode(",", $this->strip_comment($bcc)));
+        }
+
+        $sent = TRUE;
+        foreach ($TO as $rcpt_to) {
+            $rcpt_to = $this->get_address($rcpt_to);
+            if (!$this->smtp_sockopen($rcpt_to)) {
+                $this->log_write("Error: Cannot send email to " . $rcpt_to . "\n");
+                $sent = FALSE;
+                continue;
+            }
+            if ($this->smtp_send($this->host_name, $mail_from, $rcpt_to, $header, $body)) {
+                $this->log_write("E-mail has been sent to <" . $rcpt_to . ">\n");
+            } else {
+                $this->log_write("Error: Cannot send email to <" . $rcpt_to . ">\n");
+                $sent = FALSE;
+            }
+            fclose($this->sock);
+            $this->log_write("Disconnected from remote host\n");
+        }
+        //echo "<br>";
+        //echo $header; //
+        return $sent;
+    }
+
     /* Private Functions */
 
     function smtp_send($helo, $from, $to, $header, $body = "")