異世界


2012年5月24日 星期四

利用 GMail 傳送 EMAIL

首先要擁有一個 GMail 帳號,並了解其主機及Port 號。

我們為gMail 建立一個 Class,命名為ClassGMail:

   1: using System;
   2: using System.Text;
   3: using System.Net.Mail;
   4: using System.ComponentModel;
   5:  
   6: namespace Cht_MobileNms
   7: {
   8:     class ClassGMail
   9:     {
  10:             /* gMail的 SMTP 主機及 Port*/
  11:             private System.Net.Mail.SmtpClient MySmtp;
  12:  
  13:             private MailMessage Mail;
  14:            
  15:             public string eMailAccount { private get; set; }
  16:             public string eMailPassword { private get; set; }
  17:  
  18:             public string mListDestAddr { private get; set; }
  19:             public string mASubject { private get; set; }
  20:             public string mABody { private get; set; }
  21:  
  22:             /* BackgroundWorker */
  23:             private System.ComponentModel.BackgroundWorker bwSendMail;
  24:             
  25:  
  26:             /// <summary>
  27:             /// 建構式 1
  28:             /// </summary>
  29:             /// <param name="eMailAccount"></param>
  30:             /// <param name="Password"></param>
  31:             public ClassGMail(string Account, string Password)
  32:             {
  33:                 /*建立 SmtpClient 物件 並設定 Gmail的smtp主機及Port */
  34:                 MySmtp = new System.Net.Mail.SmtpClient("smtp.gmail.com", 587);
  35:  
  36:                 /*設定你的帳號密碼*/
  37:                 eMailAccount = Account;
  38:                 eMailPassword = Password;
  39:  
  40:                 /*Gmial 的 smtp 使用 SSL*/
  41:                 MySmtp.Credentials = new System.Net.NetworkCredential(eMailAccount, eMailPassword);
  42:                 MySmtp.EnableSsl = true;
  43:  
  44:                 /* 背景執行物建初始化 */                
  45:                 this.bwSendMail = new System.ComponentModel.BackgroundWorker();
  46:                 this.bwSendMail.DoWork += new System.ComponentModel.DoWorkEventHandler(this.bwSendMail_DoWork);
  47:             }
  48:  
  49:             /// <summary>
  50:             /// 傳送 EMAIL
  51:             /// </summary>
  52:             /// <param name="ListDestAddr"></param>
  53:             /// <param name="ASubject"></param>
  54:             /// <param name="ABody"></param>
  55:             /// <returns></returns>
  56:             public void sendMailTo(String ListDestAddr, String ASubject, String ABody)
  57:             {
  58:                 mListDestAddr=ListDestAddr;
  59:                 mASubject=ASubject;
  60:                 mABody = ABody;
  61:  
  62:                 /* 背景執行 eMail 傳送 */
  63:                 try
  64:                 {
  65:                     bwSendMail.RunWorkerAsync(); 
  66:                 }
  67:                 catch 
  68:                 { 
  69:                 }
  70:             }
  71:  
  72:             private void bwSendMail_DoWork(object sender, DoWorkEventArgs e)
  73:             {
  74:                 PrivateSendMailTo(mListDestAddr, mASubject, mABody);
  75:             }
  76:  
  77:  
  78:             /// <summary>
  79:             /// 傳送 EMAIL
  80:             /// </summary>
  81:             /// <param name="ListDestAddr"></param>
  82:             /// <param name="ASubject"></param>
  83:             /// <param name="ABody"></param>
  84:             /// <returns></returns>
  85:             private void PrivateSendMailTo(String ListDestAddr, String ASubject, String ABody)
  86:             {
  87:                 try
  88:                 {
  89:                     //============================================================
  90:                     Mail = new MailMessage();
  91:                     Mail.From = new MailAddress(eMailAccount);
  92:                     Mail.Subject = ASubject.Trim().ToString();
  93:                     Mail.Body = ABody.Trim().ToString();
  94:  
  95:                     /* 分解多個 目的位址 */
  96:                     string[] AList = ListDestAddr.Split(';');
  97:                     int Cnt = AList.GetLength(0);
  98:  
  99:                     foreach (string Addr in AList)
 100:                     {
 101:                         if (Addr != "") { Mail.To.Add(Addr.Trim().ToString()); }
 102:                     }
 103:                     //============================================================
 104:  
 105:                     /*發送Email*/ 
 106:                     MySmtp.Send(Mail);
 107:                 }
 108:                 catch (Exception err)
 109:                 {                    
 110:                     // MessageBox.Show(err.Message);
 111:                     // throw (err);
 112:                 }
 113:             }
 114:  
 115:  
 116:     }
 117:  
 118:  
 119: }


建構一個GMail實體:


   1: /// <summary>
   2: /// 電子郵件
   3: /// </summary>
   4: ClassGMail infoMail = new ClassGMail("WXYZ@gmail.com", "1234567");   // 帳號及密碼作為參數


傳送eMmail:


   1: //.. 傳送 eMail 給相關人員
   2: if (MailAlarmBody.Length > 0)
   3: {
   4:     try
   5:     {
   6:         infoMail.sendMailTo(getEMailAddress(), "CHT_NMS", MailAlarmBody.ToString());
   7:     }
   8:     catch { }
   9: }


可以一次傳送給多人,可從資料庫中取得資料串接收件人。


   1: /*從 DB 取得 eMailAddress*/
   2:        private string getEMailAddress()
   3:        {
   4:            linq = new EbNoClassDataContext(cnString);
   5:  
   6:            var result = from info in linq.User
   7:                         select new
   8:                         {
   9:                             info.eMail
  10:                         };
  11:  
  12:            StringBuilder sb = new StringBuilder();
  13:            foreach (var addr in result)
  14:            {
  15:                sb.Append(addr.eMail.ToString() + ';');
  16:            }
  17:  
  18:            return (sb.ToString());
  19:        }

2012年5月22日 星期二

ToolTip

在物件上加入快顯指示 (ToolTip)

   1: ttTip.SetToolTip(Object, "String"); //..加入 Hint 


初始化 Tooltip


   1: #region ToolTip
   2:        //1、ToolTip:表示小矩形快顯視窗 (Pop-Up Window),它會在使用者將指標停留在控制項上時,顯示控制項用途的簡短說明。
   3:        ToolTip ttTip = new ToolTip();
   4:        private void initToolTip()
   5:        {
   6:            #region ToolTip
   7:            //ToolTipIcon:取得或設定值,以便定義要顯示在工具提示文字旁的圖示類型。
   8:            ttTip.ToolTipIcon = ToolTipIcon.Info;
   9:            //ForeColor:取得或設定工具提示的前景色彩。
  10:            ttTip.ForeColor = Color.Blue;
  11:            //BackColor:取得或設定工具提示的背景色彩。
  12:            ttTip.BackColor = Color.LightGray;
  13:            //AutoPopDelay:當指標靜止於控制項上時,ToolTip 保持可見的時間 (以毫秒為單位)。預設值為 5000。 
  14:            ttTip.AutoPopDelay = 5000;
  15:            //ToolTipTitle:取得或設定工具提示視窗的標題。
  16:            ttTip.ToolTipTitle = "";
  17:            #endregion
  18:        }
  19:  #endregion

Form Browser

FormBrowser 類

   1: public partial class FormBrowser : Form
   2:     {
   3:         FormMain _MyParentForm;
   4:         string MyUrl;
   5:  
   6:         public FormBrowser(FormMain MyParentForm, string Args)
   7:         {
   8:             InitializeComponent();
   9:             string[] args = Args.ToString().Split('@'); // 取得參數列並以@為分隔符號產生字串陣列
  10:             if (args.Length == 3)
  11:             {
  12:                 this.Text = string.Format("{0} {1}[{2}]", args[0], args[1],args[2]);
  13:                 MyUrl = args[2];
  14:             }
  15:             else
  16:             {
  17:                 this.Text = String.Format("[{0}]", MyUrl);
  18:                 MyUrl = Args;
  19:             }
  20:             
  21:             _MyParentForm = MyParentForm;
  22:         }
  23:  
  24:         private void FormBrowser_Load(object sender, EventArgs e)
  25:         {
  26:             
  27:             webBrowser1.Navigate(MyUrl);
  28:         }
  29:     }


使用該類


   1: //
   2: string StationName = getStationName(((Button)sender).Tag.ToString());
   3: string arg = String.Format("{0}@{1}@{2}", StationName,((Button)sender).Text, ((Button)sender).Tag.ToString());
   4: FormBrowser fB = new FormBrowser(this, arg);
   5: fB.Show();
   6:  
   7: /* 將 FormBrowser 嵌入 
   8: {
   9:     SetParent(fB.Handle, pnlBrowser.Handle);
  10:     //ResizeControlHwnd(fB.Handle, mParnet);
  11:     tabCtlMain.SelectTab(2);
  12: }*/