三种邮件发送介绍:(Smtp,Mail以及phpmailer)ThinkPhp 框架下开发。

  邮件发送配置先前准备(用该账号做测试用):(这里用新浪邮箱服务器)将自己的新浪邮箱开通 POP3/SMTP服务:

新浪邮箱中  :设置->账户下面的 POP3/SMTP服务 选择开通(然后一步一步完成开通)。

 客户端html代码:

  1. <body>
  2. <!--<h1>发送信息测试</h1>-->
  3. <div>请输入发送地址(1):<input id="adds" type="text" style="width:180px;" /></div>
  4. <div>主题:<input id="title" type="text" style="width:100px;" /></div>
  5. <div style="width:600px;vertical-align:top;">
  6. 发送信息:
  7. <textarea id="msgbody" property="请输入需要发送的信息..." style="width:180px;height:100px;"></textarea>
  8. </div>
  9. <div>
  10. <input type="button" value="发送1" onclick="sendmsg()" />
  11. </div>
  12. <body>

js:

  1. <script>
  2. function sendmsg() {
  3. var id = document.getElementById("adds").value;
  4. var msg = document.getElementById("msgbody").value;
  5. var title = document.getElementById("title").value;
  6. var par = /^[a-zA-Z0-9_+.-]+\@([a-zA-Z0-9-]+\.)+[a-zA-Z0-9]{2,4}$/;
  7.  
  8. if (id == "") {
  9. alert("输入发送地址");
  10. return;
  11. } else if (!par.exec(id)) {
  12. alert("填写地址错误!");
  13. return;
  14. }
  15. showloading();
  16. $.post('__ROOT__/Home/SendEmail/sendMails', { email: id,title:title, msg: msg }, function (data) {
  17. if (data.status == 1) {
  18. hideloading();
  19. // try {
  20. alert("信息发送成功!");
  21. alert(data.data);
  22. // } catch (e) {
  23. // alert(e.message);
  24. // }
  25. } else {
  26. hideloading();
  27. alert("未知错误!");
  28. }
  29. }, 'json');
  30. }
  31. </script>

 第一种:Smtp(PHP)。

  1:在ThinkPHP/LibraryLibrary文件夹下新建一个文件夹  HomeClass,在HomeClass 文件夹下新建一个类 命名为:smtp.class.php。(网上能找到的)

  1. <?php
  2. class smtp
  3. {
  4. /* Public Variables */
  5. var $smtp_port;
  6. var $time_out;
  7. var $host_name;
  8. var $log_file;
  9. var $relay_host;
  10. var $debug;
  11. var $auth;
  12. var $user;
  13. var $pass;
  14.  
  15. /* Private Variables */
  16. var $sock;
  17.  
  18. /* Constractor */
  19.  
  20. function smtp($relay_host = "", $smtp_port = 25,$auth = false,$user,$pass)
  21. {
  22. $this->debug = FALSE;
  23. $this->smtp_port = $smtp_port;
  24. $this->relay_host = $relay_host;
  25. $this->time_out = 30; //is used in fsockopen()
  26.  
  27. #
  28.  
  29. $this->auth = $auth;//auth
  30. $this->user = $user;
  31. $this->pass = $pass;
  32.  
  33. #
  34.  
  35. $this->host_name = "localhost"; //is used in HELO command
  36. $this->log_file = "";
  37. $this->sock = FALSE;
  38. }
  39. /* Main Function */
  40.  
  41. function sendmail($to, $from, $subject = "", $body = "", $mailtype, $cc = "", $bcc = "", $additional_headers = "")
  42. {
  43. $mail_from = $this->get_address($this->strip_comment($from));
  44. $body = ereg_replace("(^|(\r\n))(\.)", "\1.\3", $body);
  45. $header = "MIME-Version:1.0\r\n";
  46.  
  47. if($mailtype=="HTML"){
  48. $header .= "Content-Type:text/html\r\n";
  49. }
  50.  
  51. $header .= "To: ".$to."\r\n";
  52.  
  53. if ($cc != "") {
  54. $header .= "Cc: ".$cc."\r\n";
  55. }
  56.  
  57. $header .= "From: 报名邮件.<".$from.">\r\n";
  58. $header .= "Subject: ".$subject."\r\n";
  59. $header .= $additional_headers;
  60. $header .= "Date: ".date("r")."\r\n";
  61. $header .= "X-Mailer:By Redhat (PHP/".phpversion().")\r\n";
  62. $utfheader=iconv("UTF-8","GB2312",$header);
  63. list($msec, $sec) = explode(" ", microtime());
  64.  
  65. $header .= "Message-ID: <".date("YmdHis", $sec).".".($msec*1000000).".".$mail_from.">\r\n";
  66.  
  67. $TO = explode(",", $this->strip_comment($to));
  68.  
  69. if ($cc != "") {
  70. $TO = array_merge($TO, explode(",", $this->strip_comment($cc)));
  71. }
  72.  
  73. if ($bcc != "") {
  74. $TO = array_merge($TO, explode(",", $this->strip_comment($bcc)));
  75. }
  76.  
  77. $sent = TRUE;
  78.  
  79. foreach ($TO as $rcpt_to) {
  80. $rcpt_to = $this->get_address($rcpt_to);
  81.  
  82. if (!$this->smtp_sockopen($rcpt_to)) {
  83. $this->log_write("Error: Cannot send email to ".$rcpt_to."\n");
  84. $sent = FALSE;
  85. continue;
  86. }
  87.  
  88. if ($this->smtp_send($this->host_name, $mail_from, $rcpt_to, $utfheader, $body)) {
  89. $this->log_write("E-mail has been sent to <".$rcpt_to.">\n");
  90. } else {
  91. $this->log_write("Error: Cannot send email to <".$rcpt_to.">\n");
  92. $sent = FALSE;
  93. }
  94.  
  95. fclose($this->sock);
  96.  
  97. $this->log_write("Disconnected from remote host\n");
  98. }
  99. return $sent;
  100. }
  101. /* Private Functions */
  102. function smtp_send($helo, $from, $to, $header, $body = "")
  103. {
  104. if (!$this->smtp_putcmd("HELO", $helo)) {
  105.  
  106. return $this->smtp_error("sending HELO command");
  107. }
  108.  
  109. #auth
  110.  
  111. if($this->auth){
  112. if (!$this->smtp_putcmd("AUTH LOGIN", base64_encode($this->user))) {
  113. return $this->smtp_error("sending HELO command");
  114. }
  115.  
  116. if (!$this->smtp_putcmd("", base64_encode($this->pass))) {
  117. return $this->smtp_error("sending HELO command");
  118. }
  119. }
  120.  
  121. #
  122.  
  123. if (!$this->smtp_putcmd("MAIL", "FROM:<".$from.">")) {
  124. return $this->smtp_error("sending MAIL FROM command");
  125. }
  126.  
  127. if (!$this->smtp_putcmd("RCPT", "TO:<".$to.">")) {
  128. return $this->smtp_error("sending RCPT TO command");
  129. }
  130.  
  131. if (!$this->smtp_putcmd("DATA")) {
  132. return $this->smtp_error("sending DATA command");
  133. }
  134. if (!$this->smtp_message($header, $body)) {
  135. return $this->smtp_error("sending message");
  136. }
  137. if (!$this->smtp_eom()) {
  138. return $this->smtp_error("sending <CR><LF>.<CR><LF> [EOM]");
  139. }
  140. if (!$this->smtp_putcmd("QUIT")) {
  141. return $this->smtp_error("sending QUIT command");
  142. }
  143. return TRUE;
  144. }
  145.  
  146. function smtp_sockopen($address)
  147. {
  148. if ($this->relay_host == "") {
  149. return $this->smtp_sockopen_mx($address);
  150. } else {
  151. return $this->smtp_sockopen_relay();
  152. }
  153. }
  154. function smtp_sockopen_relay()
  155. {
  156. $this->log_write("Trying to ".$this->relay_host.":".$this->smtp_port."\n");
  157. $this->sock = @fsockopen($this->relay_host, $this->smtp_port, $errno, $errstr, $this->time_out);
  158. if (!($this->sock && $this->smtp_ok())) {
  159. $this->log_write("Error: Cannot connenct to relay host ".$this->relay_host."\n");
  160. $this->log_write("Error: ".$errstr." (".$errno.")\n");
  161. return FALSE;
  162. }
  163. $this->log_write("Connected to relay host ".$this->relay_host."\n");
  164. return TRUE;
  165. }
  166.  
  167. function smtp_sockopen_mx($address)
  168. {
  169. $domain = ereg_replace("^.+@([^@]+)$", "\1", $address);
  170. if (!@getmxrr($domain, $MXHOSTS)) {
  171. $this->log_write("Error: Cannot resolve MX \"".$domain."\"\n");
  172. return FALSE;
  173. }
  174. foreach ($MXHOSTS as $host) {
  175. $this->log_write("Trying to ".$host.":".$this->smtp_port."\n");
  176. $this->sock = @fsockopen($host, $this->smtp_port, $errno, $errstr, $this->time_out);
  177. if (!($this->sock && $this->smtp_ok())) {
  178. $this->log_write("Warning: Cannot connect to mx host ".$host."\n");
  179. $this->log_write("Error: ".$errstr." (".$errno.")\n");
  180. continue;
  181. }
  182. $this->log_write("Connected to mx host ".$host."\n");
  183. return TRUE;
  184. }
  185. $this->log_write("Error: Cannot connect to any mx hosts (".implode(", ", $MXHOSTS).")\n");
  186. return FALSE;
  187. }
  188.  
  189. function smtp_message($header, $body)
  190. {
  191. fputs($this->sock, $header."\r\n".$body);
  192. $this->smtp_debug("> ".str_replace("\r\n", "\n"."> ", $header."\n> ".$body."\n> "));
  193. return TRUE;
  194. }
  195.  
  196. function smtp_eom()
  197. {
  198. fputs($this->sock, "\r\n.\r\n");
  199. $this->smtp_debug(". [EOM]\n");
  200. return $this->smtp_ok();
  201. }
  202.  
  203. function smtp_ok()
  204. {
  205. $response = str_replace("\r\n", "", fgets($this->sock, 512));
  206. $this->smtp_debug($response."\n");
  207. if (!ereg("^[23]", $response)) {
  208. fputs($this->sock, "QUIT\r\n");
  209. fgets($this->sock, 512);
  210. $this->log_write("Error: Remote host returned \"".$response."\"\n");
  211. return FALSE;
  212. }
  213. return TRUE;
  214. }
  215.  
  216. function smtp_putcmd($cmd, $arg = "")
  217. {
  218. if ($arg != "") {
  219. if($cmd=="") $cmd = $arg;
  220. else $cmd = $cmd." ".$arg;
  221. }
  222. fputs($this->sock, $cmd."\r\n");
  223. $this->smtp_debug("> ".$cmd."\n");
  224. return $this->smtp_ok();
  225. }
  226.  
  227. function smtp_error($string)
  228. {
  229. $this->log_write("Error: Error occurred while ".$string.".\n");
  230. return FALSE;
  231. }
  232.  
  233. function log_write($message)
  234. {
  235. $this->smtp_debug($message);
  236. if ($this->log_file == "") {
  237. return TRUE;
  238. }
  239. $message = date("M d H:i:s ").get_current_user()."[".getmypid()."]: ".$message;
  240. if (!@file_exists($this->log_file) || !($fp = @fopen($this->log_file, "a"))) {
  241. $this->smtp_debug("Warning: Cannot open log file \"".$this->log_file."\"\n");
  242. return FALSE;;
  243. }
  244. flock($fp, LOCK_EX);
  245. fputs($fp, $message);
  246. fclose($fp);
  247. return TRUE;
  248. }
  249.  
  250. function strip_comment($address)
  251. {
  252. $comment = "\([^()]*\)";
  253. while (ereg($comment, $address)) {
  254. $address = ereg_replace($comment, "", $address);
  255. }
  256. return $address;
  257. }
  258.  
  259. function get_address($address)
  260. {
  261. $address = ereg_replace("([ \t\r\n])+", "", $address);
  262. $address = ereg_replace("^.*<(.+)>.*$", "\1", $address);
  263. return $address;
  264. }
  265. function smtp_debug($message)
  266. {
  267. if ($this->debug) {
  268. echo $message;
  269. }
  270. }
  271. }
  272. ?>

  2:提交到的后台控制器  SendEmailController.class.php

  1. public function sendmsg(){
  2. $email = I ( 'post.email' );
  3. $msgs = I('post.msg');
  4. $title=I('post.title');
  5.  
  6. import("HomeClass.smtp");//引用发送邮件类
  7.  
  8. $smtpserver = "smtp.sina.cn";//SMTP服务器
  9. $smtpserverport = 25;//SMTP服务器端口
  10. $smtpusermail = "******@sina.cn";//SMTP服务器的用户邮箱
  11. $smtpuser = "****";//SMTP服务器的用户帐号
  12. $smtppass = "*****";//SMTP服务器的用户密码
  13.  
  14. $smtpemailto = $email;//发送给谁
  15. $mailsubject = $title;//邮件主题
  16. $mailtime = date("Y-m-d H:i:s");
  17. $mailbody = $msgs;//邮件内容
  18.  
  19. $utfmailbody = iconv("UTF-8","GB2312",$mailbody);//转换邮件编码
  20. $mailtype = "TXT";//邮件格式(HTML/TXT),TXT为文本邮件
  21.  
  22. $smtp = new \smtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppass);//这里面的一个true是表示使用身份验证,否则不使用身份验证.
  23. $smtp->debug = FALSE;//是否显示发送的调试信息 FALSE or TRUE
  24.  
  25. $datas = $smtp->sendmail($smtpemailto, $smtpusermail, $mailsubject, $utfmailbody, $mailtype);
  26.  
  27. $this->ajaxReturn ( array (
  28. 'data' => $datas,
  29. 'status' => 1
  30. ) );
  31. }

其中:$smtpusermail 为你的新浪邮箱账号,$smtpuser 为你新浪邮箱账号(邮箱去掉@sina.com),$smtppass  为你的邮箱密码。第一种邮件发送搞定,你可以发送邮件去另一个邮箱了!!!

第二种:Mail(ThinkPHP)。

1:配置服务器邮箱:在 Application/conf/config.php 文件中添加邮箱配置:

  1. 'THINK_EMAIL' => array (
  2.  
  3. 'SMTP_HOST' => 'smtp.sina.cn',
  4. 'SMTP_PORT' => '25',
  5. 'SMTP_USER' => '******@sina.cn', // SMTP服务器用户名
  6. 'SMTP_PASS' => '******', // SMTP服务器密码
  7. 'FROM_EMAIL' => '******@sina.cn', // 发件人EMAIL
  8. 'FROM_NAME' => '****', // 发件人名称
  9. 'REPLY_EMAIL' => '', // 回复EMAIL(留空则为发件人EMAIL)
  10.  
  11. 'REPLY_NAME' => ''
  12. ),

SMTP_USER  与 FROM_EMAIL 可为同一 邮箱地址。

2:在 HomeClass  文件夹下 新建一个类:Mail.class.php:(网上能找到)

  1. <?php
  2.  
  3. namespace HomeClass;
  4.  
  5. class Mail {
  6. /**
  7. * 系统邮件发送函数
  8. *
  9. * @param string $to
  10. * 接收邮件者邮箱
  11. * @param string $name
  12. * 接收邮件者名称
  13. * @param string $subject
  14. * 邮件主题
  15. * @param string $body
  16. * 邮件内容
  17. * @param string $attachment
  18. * 附件列表
  19. * @return boolean
  20. */
  21. function sendMail($to, $name, $subject = '', $body = '', $attachment = null) {
  22. $config = C ( 'THINK_EMAIL' );
  23. vendor ( 'PHPMailer.class#phpmailer' ); // 从PHPMailer目录导class.phpmailer.php类文件
  24. $mail = new \PHPMailer (); // PHPMailer对象
  25. $mail->CharSet = 'UTF-8'; // 设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码
  26.  
  27. //$mail->AddAddress($address);//添加联系人
  28.  
  29. $mail->IsSMTP (); // 设定使用SMTP服务
  30. $mail->SMTPDebug = 0; // 关闭SMTP调试功能
  31. // 1 = errors and messages
  32. // 2 = messages only
  33. $mail->SMTPAuth = true; // 启用 SMTP 验证功能
  34. //$mail->SMTPSecure = 'ssl'; // 使用安全协议
  35. $mail->Host = $config ['SMTP_HOST']; // SMTP 服务器
  36. $mail->Port = $config ['SMTP_PORT']; // SMTP服务器的端口号
  37. $mail->Username = $config ['SMTP_USER']; // SMTP服务器用户名
  38. $mail->Password = $config ['SMTP_PASS']; // SMTP服务器密码
  39. $mail->SetFrom ( $config ['FROM_EMAIL'], $config ['FROM_NAME'] );
  40. $replyEmail = $config ['REPLY_EMAIL'] ? $config ['REPLY_EMAIL'] : $config ['FROM_EMAIL'];
  41. $replyName = $config ['REPLY_NAME'] ? $config ['REPLY_NAME'] : $config ['FROM_NAME'];
  42. $mail->AddReplyTo ( $replyEmail, $replyName );
  43. $mail->Subject = $subject;
  44.  
  45. $mail->MsgHTML ( $body );
  46. $mail->AddAddress ( $to, '亲' );
  47. if (is_array ( $attachment )) { // 添加附件
  48. foreach ( $attachment as $file ) {
  49. is_file ( $file ) && $mail->AddAttachment ( $file );
  50. }
  51. }
  52. return $mail->Send () ? true : $mail->ErrorInfo;
  53. }
  54. }

3:将前面JS代码的post提交链接改为 __ROOT__/Home/SendEmail/sendMails2,在刚才的控制器 SendEmailController.class.php 中添加一个方法: sendMail2().

  1. public function sendMails2(){
  2. $email = I ( 'post.email' );
  3. $msgs = I('post.msg');
  4. $title=I('post.title');
  5.  
  6. $msg = \HomeClass\Mail::sendMail ( $email, $email, $title, $msgs );
  7.  
  8. $this->ajaxReturn ( array (
  9. 'data' => $msg,
  10. 'status' => 1
  11. ) );
  12. }

第三种:PHPMailer(ThinkPHP)

  1:看看ThinkPHP框架的 Library/Vendor 文件夹下是否存在 文件夹  PHPMailer,如果不存在,则在网上找个加入在该文件夹下。

  2:将前面的JS提交链接改为 __ROOT__/Home/SendEmail/sendMails3 ,在控制器里添加方法 sendMail3():

  1. public function sendmsg3($sendto_email, $user_name='', $subject, $bodyurl)
  2. {
  3.  
  4. $email = I ( 'post.email' );
  5. $title=I('post.title');
  6. $msgs = I('post.msg');
  7.  
  8. vendor ( 'PHPMailer.class#phpmailer' );
  9. $mail = new \PHPMailer();
  10. $mail->IsSMTP(); // send via SMTP
  11.  
  12. $mail->Host = "smtp.sina.cn"; // SMTP 服务器
  13. $mail->Port = 25; // SMTP服务器的端口号
  14. $mail->SMTPAuth = true; // turn on SMTP authentication
  15. $mail->Username = "*****@sina.cn"; // SMTP服务器用户名
  16. $mail->Password = "******"; // SMTP服务器密码
  17.  
  18. $mail->From = "*******@sina.cn"; // 发件人邮箱
  19. //$mail->FromName = "****";; // 发件人
  20.  
  21. $mail->CharSet = "utf-8"; // 这里指定字符集!
  22. $mail->Encoding = "base64";
  23.  
  24. if($user_name == '')
  25. {
  26. $user_name=$sendto_email;
  27. }
  28. $mail->AddAddress($sendto_email,$sendto_email); // 收件人邮箱和姓名
  29.  
  30. //$mail->WordWrap = 50; // set word wrap 换行字数
  31. //$mail->AddAttachment("/var/tmp/file.tar.gz"); // attachment 附件
  32. //$mail->AddAttachment("/tmp/image.jpg", "new.jpg");
  33.  
  34. $mail->IsHTML(true); // send as HTML
  35. // 邮件主题
  36. $mail->Subject = $subject;
  37.  
  38. //$urls=urlencode($bodyurl);
  39. $mail->Body="Hi,欢迎注册!";
  40. $mail->AltBody = "text/html";
  41.  
  42. if (!$mail->Send())
  43. {
  44. $mail->ClearAddresses();
  45. return "邮件错误信息: " . $mail->ErrorInfo;
  46. exit;
  47. }
  48. else
  49. {
  50. $mail->ClearAddresses();
  51. // $this->assign('waitSecond', 6);
  52. // $this->success("注册成功,系统已经向您的邮箱:{$sendto_email}发送了一封激活邮件!请您尽快激活~~<br />");
  53. //$this->redirect('sendhtml', array('send' => 5,'email'=>$sendto_email));
  54. return "亲!已经向您的邮箱:{$sendto_email}发送了一封激活邮件!请您尽快激活~~";
  55. }
  56. }

  现在可以给另一个邮箱发送邮件了!!!

发送邮件页面:

        

    接收到的邮件:

      

注:以上配置我只在给新浪邮箱发送邮件时成功,给QQ邮箱发送邮件时都已失败而告终,还搞不懂是为啥??

ThinkPHP官网邮件发送:  http://www.thinkphp.cn/code/32.html

  PHP邮件发送: http://www.oschina.net/code/snippet_1182150_25127

ThinkPHP邮件发送S(Smtp + Mail + phpmailer)的更多相关文章

  1. ThinkPHP邮件发送函数示例

    ThinkPHP邮件发送函数示例详解 /** * 发送邮件 * @param $tomail * @param $subject * @param $body * @param string $con ...

  2. 3.13 练习题4:邮件发送(smtp)

    3.13 练习题4:邮件发送(smtp) 前言本篇总结了QQ邮箱和163邮箱发送邮件,邮件包含html中文和附件,可以发给多个收件人,专治各种不行,总之看完这篇麻麻再也不用担心我的邮件收不到了.以下代 ...

  3. thinkphp 邮件发送

    最近项目上要求,要做个邮件发送的功能,因为用到的框架是ThinkPHP,于是就自己整理一下. 引入class.phpmailer.php,大家可以去这个链接去下载: http://pan.baidu. ...

  4. Drupal 7 电子邮件的发送设置 SMTP, Mail System, Mime Mail

    尽管Drupal自带发送email功能,可是非常多server须要SMTP验证.这个时候就须要安装 SMTP 模块. 激活 SMTP 模块 进入配置 admin/config/system/smtp ...

  5. 一次邮件发送协议SMTP问题排查

    项目中需要用到smtp协议来发送邮件告警,后端的技术栈主要是Java和C++,Java项目里直接在网上找的现成的类完美实现,163邮箱,腾讯邮箱和阿里邮箱均测试通过,不幸的是C++的项目也需要使用sm ...

  6. php邮件发送 phpmailer

    首先要安装phpmailer开源项目. 将class.phpmailer.php转移到php文件夹下, 编写代码: <?php require("class.phpmailer.php ...

  7. C# SMTP邮件发送 分类: C# 2014-07-13 19:10 334人阅读 评论(1) 收藏

    邮件发送在网站应用程序中经常会用到,包括您现在看到的博客,在添加评论后,系统会自动发送邮件通知到我邮箱的,把系统发送邮件的功能整理了下,做了一个客户端Demo,希望对有需要的童鞋有所帮助: 核心代码: ...

  8. C# SMTP邮件发送 分类: C# 2014-07-13 19:10 333人阅读 评论(1) 收藏

    邮件发送在网站应用程序中经常会用到,包括您现在看到的博客,在添加评论后,系统会自动发送邮件通知到我邮箱的,把系统发送邮件的功能整理了下,做了一个客户端Demo,希望对有需要的童鞋有所帮助: 核心代码: ...

  9. Linux mail 邮件发送

    Linux mail 邮件介绍 在Linux系统下我们可以通过”mail“命令,发送邮件,在运维中通常我们它来实现邮件告警. 安装 (方案1) 一.安装邮件服务 yum install -y send ...

随机推荐

  1. 把sublime3打造成c++开发环境

    安装sublime 3 sudo add-apt-repository ppa:webupd8team/sublime-text-3 sudo apt-get update sudo apt-get ...

  2. OpenStack Weekly Rank 2015.07.20

    Module Reviews Drafted Blueprints Completed Blueprints Filed Bugs Resolved Bugs Cinder 8 1 3 9 10 Sw ...

  3. java多线程 synchronized关键字的一些用法

    看这篇文章啦: http://blog.csdn.net/xiao__gui/article/details/8188833

  4. WPF根据数据项获取条目控件的方法-ItemContainerGenerator

    一.方法: ContainerFromIndex:返回 ItemCollection 中指定索引处的项的容器. ContainerFromItem:返回与制定的项对应的容器(ComboxItem等条目 ...

  5. MVC与MVVM的关系

    什么是MVC? M(Model数据层) 职能单一,只负责操作数据库,执行对于的 Sql 语句,进行数据的CRUD C: create 增加 R: Read 读取 U: update 修改 D: Del ...

  6. 牛客NOIP提高组(三)题解

    心路历程 预计得分:$30 + 0 + 0 = 30$ 实际得分:$0+0+0= 0$ T1算概率的时候没模爆long long了... A 我敢打赌这不是noip难度... 考虑算一个位置的概率,若 ...

  7. Linux文件的三个时间属性(Atime,Mtime,Ctime)

    Linux下,一个文件有三种时间,分别是: 访问时间:atime 修改时间:mtime 状态时间:ctime 访问时间:对文件进行一次读操作,它的访问时间就会改变.例如像:cat.more等操作,但是 ...

  8. DB2数据库备份还原

    恢复及备份NC DB2数据库步 一. 安装DB2数据库 解压db2v9.5ins.rar安装,在写此文档时客户一般用的是9.5: 注意不要将db2安装到系统盘: 二. Windows版本 1.数据库备 ...

  9. html5 app开发实例 Ajax跨域访问C# webservices服务

    通过几天的研究效果,如果在vs2010工具上通过webservice还是比较简单的,毕竟是一个项目. 如果您想通过HTML5 做出来的移动APP去访问c#做出来的webservice,那么就没那么简单 ...

  10. 【微软大法好】VS Tools for AI全攻略(3):低配置虚拟机也能玩转深度学习,无需NC/NV系列

    接着上文,现在我们需要一种穷人的方法来搭建好Azure虚拟机. 思路很简单,因为AI组件的原理其实是传送了script文件和命令上去,那么我们这个虚拟机只要做好了所有的配置,那么我们就可以将它当作深度 ...