Links

ส่ง Auto Notification โดยใช้ Windows Service

บริการ Microsoft Windows NT, ช่วยให้คุณสามารถสร้างโปรแกรมประยุกต์ที่ปฏิบัติการยาวทำงานที่ทำงานในช่วงของ Windows ของตัวเอง บริการเหล่านี้สามารถเริ่มต้นโดยอัตโนมัติเมื่อบูทเครื่องคอมพิวเตอร์ที่สามารถหยุดและเริ่มต้นใหม่และไม่ได้แสดงให้เห็นส่วนติดต่อผู้ใช้ใด ๆ คุณสมบัติเหล่านี้ทำให้บริการที่เหมาะสำหรับการใช้งานบนเซิร์ฟเวอร์หรือเมื่อใดก็ตามที่คุณจำเป็นต้องทำงานยาวทำงานที่ไม่ได้ยุ่งเกี่ยวกับผู้ใช้อื่นที่กำลังทำงานบนคอมพิวเตอร์เครื่องเดียวกัน

บริการ Windows ถูกสร้างขึ้นโดยใช้เครื่องมือในการพัฒนาเช่น Microsoft Visual Studio หรือ Embarcadero Delphi เพื่อที่จะให้บริการ Windows โปรแกรมจะต้องมีการเขียนในลักษณะที่จะสามารถจัดการกับการเริ่มต้นหยุดและหยุดข้อความจากตัวจัดการควบคุมบริการ บริการจัดการควบคุมเป็นส่วนประกอบของ Windows ที่เป็นผู้รับผิดชอบสำหรับการเริ่มต้นและหยุดบริการ

  • Open Visual Studio
  • Go to file->new->project
  • Select Windows service
  • Right click on Service1.cs and select properties
  • In the properties window, click on add Installerhttptheintelligenceproject.com19
  • Right click on serviceInstaller1, select properties
  • Change DisplayNameServiceName to SeraMailService
  • StartType to Automatic

theintelligenceproject20

 

  • Right click on serviceProcessInstaller1 then select Properties
  • Change Account to LocalSystem
  • Right click on Service1.cs Design select ViewCode

theintelligenceproject21

 

n the OnStart method :

public void GetMail(object sender, System.Timers.ElapsedEventArgs args)
        {
            NetworkCredential cred = new NetworkCredential("email@lafarge.com", "Password");
            MailMessage msg = new MailMessage();
            msg.To.Add("email@apsissolutions.com");
            msg.Subject = "Welcome JUBAYER";

            msg.Body = "You Have Successfully Entered to Sera's World!!!";
            msg.From = new MailAddress("email@apsissolutions.com"); // Your Email Id
            SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
            SmtpClient client1 = new SmtpClient("smtp.mail.yahoo.com", 465);
            client.Credentials = cred;
            client.EnableSsl = true;
            client.Send(msg);
        }


Add this line before onload method:
System.Timers.Timer createOrderTimer;


In the onStart method, type this code:
createOrderTimer = new System.Timers.Timer();
createOrderTimer.Elapsed += new System.Timers.ElapsedEventHandler(GetMail);
createOrderTimer.Interval = 180000;//Set Three minutes intervals
createOrderTimer.Enabled = true;
createOrderTimer.AutoReset = true;
createOrderTimer.Start();



The full code:

System.Timers.Timer createOrderTimer;

        public Service1()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            createOrderTimer = new System.Timers.Timer();
            createOrderTimer.Elapsed += new System.Timers.ElapsedEventHandler(GetMail);
            createOrderTimer.Interval = 500;
            createOrderTimer.Enabled = true;
            createOrderTimer.AutoReset = true;
            createOrderTimer.Start();           
        }

        public void GetMail(object sender, System.Timers.ElapsedEventArgs args)
        {
            NetworkCredential cred = new NetworkCredential("email@lafarge.com", "Password");
            MailMessage msg = new MailMessage();
            msg.To.Add("email@apsissolutions.com");
            msg.Subject = "Welcome JUBAYER";

            msg.Body = "You Have Successfully Entered to Sera's World!!!";
            msg.From = new MailAddress("email@apsissolutions.com"); // Your Email Id
            SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
            SmtpClient client1 = new SmtpClient("smtp.mail.yahoo.com", 465);
            client.Credentials = cred;
            client.EnableSsl = true;
            client.Send(msg);
        }

Send Mail Form Use C#

httptheintelligenceproject.com18

 

Code

 

<%this is the client side code for the design and display%>
<asp:Panel ID="Panel1" runat="server" DefaultButton="btnSubmit">
    <p>
        Please Fill the Following to Send Mail.</p>
    <p>
        Your name:
        <asp:RequiredFieldValidator ID="RequiredFieldValidator11" runat="server" ErrorMessage="*"
            ControlToValidate="YourName" ValidationGroup="save" /><br />
        <asp:TextBox ID="YourName" runat="server" Width="250px" /><br />
        Your email address:
        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="*"
            ControlToValidate="YourEmail" ValidationGroup="save" /><br />
        <asp:TextBox ID="YourEmail" runat="server" Width="250px" />
        <asp:RegularExpressionValidator runat="server" ID="RegularExpressionValidator23"
            SetFocusOnError="true" Text="Example: username@gmail.com" ControlToValidate="YourEmail"
            ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" Display="Dynamic"
            ValidationGroup="save" /><br />
        Subject:
        <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ErrorMessage="*"
            ControlToValidate="YourSubject" ValidationGroup="save" /><br />
        <asp:TextBox ID="YourSubject" runat="server" Width="400px" /><br />
        Your Question:
        <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ErrorMessage="*"
            ControlToValidate="Comments" ValidationGroup="save" /><br />
        <asp:TextBox ID="Comments" runat="server" 
                TextMode="MultiLine" Rows="10" Width="400px" />
    </p>
    <p>
        <asp:Button ID="btnSubmit" runat="server" Text="Send" 
                    OnClick="Button1_Click" ValidationGroup="save" />
    </p>
</asp:Panel>
<p>
    <asp:Label ID="DisplayMessage" runat="server" Visible="false" />
</p>  




protected void SendMail()
{
    // Gmail Address from where you send the mail
    var fromAddress = "Gmail@gmail.com";
    // any address where the email will be sending
    var toAddress = YourEmail.Text.ToString(); 
    //Password of your gmail address
    const string fromPassword = "Password";
     // Passing the values and make a email formate to display
    string subject = YourSubject.Text.ToString();
    string body = "From: " + YourName.Text + "\n";
    body += "Email: " + YourEmail.Text + "\n";
    body += "Subject: " + YourSubject.Text + "\n";
    body += "Question: \n" + Comments.Text + "\n";
    // smtp settings
    var smtp = new System.Net.Mail.SmtpClient();
    {
        smtp.Host = "smtp.gmail.com";
        smtp.Port = 587;
        smtp.EnableSsl = true;
        smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
        smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);
        smtp.Timeout = 20000;
    }
    // Passing values to smtp object
    smtp.Send(fromAddress, toAddress, subject, body);
}

protected void Button1_Click(object sender, EventArgs e)
{
    try
    {
        //here on button click what will done 
        SendMail();
        DisplayMessage.Text = "Your Comments after sending the mail";
        DisplayMessage.Visible = true;
        YourSubject.Text = "";
        YourEmail.Text = "";
        YourName.Text = "";
        Comments.Text = "";
    }
    catch (Exception) { }
}

PHP MVC & .NET

article

Introduction

ส่วนใหญ่ผมทำงานกับ ASP.NET และดังนั้นจึงตกหลุมรักกับความเรียบง่ายของรูปแบบ MVC ของพวกเขา คุณเพียงแค่คลิกที่ตัวควบคุมใหม่ใช่โปรดให้สร้างมุมมองและคุณจะพบกับชิ้นส่วนของรหัสควบคุมที่ไม่สามารถจะง่ายขึ้น

แต่อินเทอร์เน็ตเป็นส่วนใหญ่สร้างจาก PHP / MySQL และเมื่อคุณกำลังสร้างเว็บไซต์สำหรับเบเกอรี่ที่มุมรวมทั้ง Zend หรือบางขนาดใหญ่อื่น ๆ MVC, อาจจะมีบิตกว่าด้านบน ฉันอยากจะสร้างคำกริยา MVC ง่ายใน PHP ที่ชั้นควบคุมอาจเป็นเพียงแค่ง่ายๆเป็น NET. ที่แตกต่างกัน

ใน. NET คุณสามารถเลือกหลายแม่แบบเครื่องยนต์ ในกิริยาที่ผมนำเสนอให้คุณได้อย่างง่ายดายสามารถ plug-in แม่แบบเครื่องยนต์ใด ๆ ที่คุณต้องการ ฉันไปสำหรับ Smarty http://www.smarty.net/

ฉันอยู่ในขณะนี้วิธีการที่อ้างว่านี้จะไม่ซ้ำกันมีจำนวนมากของกรอบที่ดีออกมีที่ทำตรงเดียวกัน เช่น CodeIgniter แต่ฉันคิดว่ามันจะสนุกกับการดูว่าคุณสามารถม้วนของคุณเอง

อันดับแรก เนื่องจากเราต้องการรุ่น MVC เราต้องขอทั้งหมดจะถูกส่งผ่านแหล่งเดียว นี้จะกระทำโดยการเปลี่ยนไฟล์ htaccess.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(\.css|\.js|\.jpg|\.jpeg|\.png|\.gif|\.flv|\.swf)$
RewriteRule ^.*$ index.php

Bootstrapping

[settings]
controller_path="controllers/"
view_path="views/"
baseURL="/subdir"

baseUrl อาจจะว่างเปล่า ถ้าได้รับการติดตั้งที่ root ของเว็บไซต์

index.php เป็นแล้วจะไปรวมถึง Smarty และทำบางสิ่งพื้นฐาน แล้วทำส่วนที่สำคัญที่สุดของการแยกวิเคราะห์ URL ที่ร้องขอเข้ามา

หาก URL เป็น home แล้ว homeController.php ควรมีการควบคุมที่ ดังนั้นหาก URL ที่เป็น products/details/10, productsController.php ควรจะโหลด

<?php

require_once('libs/Smarty.class.php');    

$config = parse_ini_file("config.ini", TRUE); 

if (isset($_SERVER['REQUEST_URI']) && isset($_SERVER['REQUEST_METHOD'])) {
    //This will hold the request data. If there is any.
    $requestData = '';
    //The method
    $method = $_SERVER['REQUEST_METHOD'];

    if (isset($_SERVER['CONTENT_LENGTH']) && $_SERVER['CONTENT_LENGTH'] > 0) {
        //There is some data in the request. We would like to have this.
        $httpContent = fopen('php://input', 'r');
        while ($data = fread($httpContent, 1024)) {
            $requestData .= $data;
        }
        fclose($httpContent);
    }    

    //If we are installed in a subdirectory, we'd like to analyse the part after this directory
    $urlString = substr($_SERVER['REQUEST_URI'], strlen($config['settings']['baseURL']));
    //Split the url in pieces
    $urlParts = explode('/', $urlString); 

    if (isset($urlParts[0]) && $urlParts[0] == '') {
    	array_shift($urlParts);
    }

    if (!isset($urlParts[0]) || $urlParts[0] == '') {
        //If the url does not contain more then / we're going to start the default controller. Which is home
        $mainViewPath="home/";
        $currentController = "HomeController";
        $controllerFile = "homeController.php";	    		
    	}
    else	{
        //There is a directive after the / so that is going to be our controller
        $mainViewPath=strtolower($urlParts[0]);
        $currentController = ucfirst($urlParts[0]) . "Controller";
        $controllerFile = $urlParts[0] . "Controller.php";	    			
        //This will make the 'action' part of the url the first directive
        array_shift($urlParts);
    	}    

}
else    {
    header($_SERVER["SERVER_PROTOCOL"] . " 400 Bad request");      
}
?>

Abstract class Controller

ตอนนี้เรา รู้ว่าที่ ชั้นควบคุม เรา อยากจะเริ่มต้น ถ้ามีคน ให้เราขอ URL / ผลิตภัณฑ์ที่ เรา ต้องการ ที่จะโหลด productsContoller.php และ สร้างตัวอย่างของ ProductsController

แต่ก่อนอื่น เราจำเป็นต้อง มุ่งเน้นไปที่ การสร้างตัวควบคุม ระดับนามธรรม เพื่อให้ได้รับ การควบคุม ของเรา ได้เช่นโครงสร้างง่าย ที่เรา จะต้องมี ชั้นยอด ที่จะทำ อัลยกของหนัก

ตัวควบคุม ทั้งหมด จะได้รับมรดก จาก ชั้นนี้ ชั้น ควบคุมความต้องการ ที่จะทำ บางสิ่ง จะต้องมีการ มองไปที่ สิ่งที่เหลืออยู่ ของ URL คำขอและ ตรวจสอบว่า การดำเนินการ ควบคุม ภายในควรจะเริ่มต้น ดังนั้น ถ้าเราได้รับ / ผลิตภัณฑ์ที่ มี การดำเนินการ ที่กำหนดไว้ ไม่ได้และ เราจะเริ่มต้น การกระทำ ดัชนี ถ้าเราได้รับ / products / รายละเอียด ที่เรา wil เริ่มต้น การดำเนินการ รายละเอียด

สิ่งที่สองที่ ชั้น ควบคุม ความต้องการที่จะ ทำคือการสร้าง viewBag นี่คือ ‘ กระเป๋า ‘ ของข้อมูลที่สามารถ ควบคุม การดำเนินการ เพิ่มข้อมูลไปยัง แต่ ถัดไปที่ ผมชอบที่จะ ถือว่า ข้อมูล ยัง โพสต์ ที่เป็น JSON และ ว่าข้อมูลที่ โพสต์ ทั้งหมด จะถูกเพิ่ม viewBagก่อนที่จะเริ่ม การดำเนินการ ควบคุม นี้จะช่วยให้ การตั้งค่า ตัวแปร แม่แบบ จาก JavaScript ( แต่ ที่อาจจะ ดีกว่าสำหรับครั้งต่อไป )

สิ่งที่สาม ที่เขาทำ คือการ ตรวจสอบ ไฟล์ view.html

 

public function __construct($controllerName, $urlParts, $data)
{
    $this->fullActionPath=implode("/", $urlParts);

    $this->method=$_SERVER['REQUEST_METHOD'];

    //We are assuming the data to be a JSON string. In a final version this should have some error handling
    if($data=='')   {
        $data='{}';
    }
    $this->viewBag=json_decode($data);

    //The action is the first part	
    $action=$urlParts[0];

    if (count($urlParts) > 1 && $urlParts[1] != '') {
        //Now we need to find the identifiers
        array_shift($urlParts);
        foreach ($urlParts as $uid) {
            if ($uid != '') {
                $this->uid[] = $uid;
            }
        }
    }			
    if(!isset($action) || $action=='')	{
        //If there is no action, we'll start the default action.
        $action="index";
    }

    //The view html
    $this->viewHtml=strtolower($action) . ".html";

    try	{
        //call_user_func gives a fatal error, which we cannot catch.
        //So we cannot handle asking for a unknown action
        //This is why we'll use the ReflectionClass's getMethod which will throw an exception
        $reflector = new ReflectionClass($this);
        $method=$reflector->getMethod($action);
        //If all works. We'll start the action.
        call_user_func($controllerName . "::" . $action, $this->uid);
    }
    catch(Exception $exc)	{
        //If the view doesn't exists, we'll start the default view.
        //In a final version this should start the ViewUnknown action.
        call_user_func($controllerName . "::index");
    }
}

View function

 Collapse | Copy Code
//@method View 
//@description Combines the view with the viewBag data. 
public function View()
{
    //Detertime the full path to the view file
    $viewPath=$GLOBALS['config']['settings']['view_path'] . $this->viewHtml;

    if	(file_exists($viewPath))	{
        //If the file exists use the smart engine
        //This would be the place to use some other engine like Mustache
        $this->smarty = new Smarty();

        foreach($this->viewBag as $key => $value) {
        	$this->smarty->assign($key, $value);
        }

        $this->smarty->display($viewPath);
    }
    else	{
        header('HTTP/1.0 404 Not Found');
        echo "404 Not Found";
        echo "The page that you have requested could not be found.";					
    }
}

HomeController

 Collapse | Copy Code
<?php
/*
    @class HomeControlelr
    @extends Controller
    @description Dit is de controller for home
*/
class HomeController extends Controller
{

    //@method index De index action
    public function index()	
    {
        //Lets set some variable to test the template
        $this->viewBag->hellomessage="Hello world!";
        return $this->View();
    }
}
?>

home/index.html

 Collapse | Copy Code
<html>
<head>
    <title>Index</title>
</head>
<body>
    <h1>{$hellomessage}</h1>
</body>
</html>

C# Crystal Reports String parameter

การสร้าง  Crystal Reports  โดยใช้  String parameter โดยเข้ไปที่ CrystalReport (ตามรูปครับ)

httptheintelligenceproject.com1

เลือก Field Explorer

หลังจากนั้นเลือก Parameter Field จาก Field Explorer แล้ว click ขวาเลือก New (ตามรูป)

httptheintelligenceproject.com2

จากนั้น ใส่ข้อมูล Name and Prompting text

httptheintelligenceproject.com3

 

ก่อนที่เราจะสร้าง parameter field เราต้องมี selection formula สำหรับ Crystal Reports parameter ก่อนนะครับ วิธรการสร้าง Click ขวา ใน Crystal Reports เลือก REPORT -> SELECTION FORMULA -> RECORD .

httptheintelligenceproject.com7

 

แล้วก็เลือก Record ตาม List นะครับ

จากนั้นเลือก form (Form1.cs) แล้วลาก CrystalReportViewer control ไปใส่ในฟอร์มนะครับ

httptheintelligenceproject.com5

 

ใช้ Namespace ตามนี้นะครับ

using CrystalDecisions.CrystalReports.Engine;

using CrystalDecisions.Shared;

Code ตัวอย่างครับ

using System;

using System.Windows.Forms;

using CrystalDecisions.CrystalReports.Engine;

using CrystalDecisions.Shared;

namespace WindowsApplication1

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        private void button1_Click(object sender, EventArgs e)

        {

            ReportDocument cryRpt = new ReportDocument();

            cryRpt.Load("PUT CRYSTAL REPORT PATH HERE\CrystalReport1.rpt");

            ParameterFieldDefinitions crParameterFieldDefinitions ;

            ParameterFieldDefinition crParameterFieldDefinition ;

            ParameterValues crParameterValues = new ParameterValues();

            ParameterDiscreteValue crParameterDiscreteValue = new ParameterDiscreteValue();

            crParameterDiscreteValue.Value = textBox1.Text;

            crParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields;

            crParameterFieldDefinition = crParameterFieldDefinitions["Customername"];

            crParameterValues = crParameterFieldDefinition.CurrentValues;

            crParameterValues.Clear();

            crParameterValues.Add(crParameterDiscreteValue);

            crParameterFieldDefinition.ApplyCurrentValues(crParameterValues);

            crystalReportViewer1.ReportSource = cryRpt;

            crystalReportViewer1.Refresh(); 

        }

    }

}

 

 

 

 

คอนฟิก SMTP ส่งเมลล์ Outlook.com

Code Config SMTP เบื้องต้นนะครับ

using System;
using System.Net.Mail;

namespace SmtpMailConnections
{
    public class OutlookDotComMail
    {
        string _sender = "";
        string _password = "";
        public OutlookDotComMail(string sender, string password)
        {
            _sender = sender;
            _password = password;
        }  

        public void SendMail(string recipient, string subject, string message)
        {
            SmtpClient client = new SmtpClient("smtp-mail.outlook.com");

            client.Port = 587;
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            client.UseDefaultCredentials = false;
            System.Net.NetworkCredential credentials = 
                new System.Net.NetworkCredential(_sender, _password);
            client.EnableSsl = true;
            client.Credentials = credentials;

            try
            {
                var mail = new MailMessage(_sender.Trim(), recipient.Trim());
                mail.Subject = subject;
                mail.Body = message;
                client.Send(mail);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                throw ex;
            }
        }
    }
}

Code Sent Mail ครับ
class Sent
{
    static void Main(string[] args)
    {
        string UserMail = "YourAccount@outlook.com";
        string PwdMail = "YourPassword";

        var sender = new OutlookDotComMail(UserMail, PwdMail);
        sender.SendMail("recipient@example.com", "Mail", "HelloWord!");
    }
}