13.如何在C#中發送郵件?
要在C#中實現發送郵件的功能,需要使用的工具是Visual C# .NET,涉及到的名稱空間有System.Web.Util,集合有System.Web.dll。
具體地,我們可以使用SmtpMail類在C#應用程序中發送郵件。默認狀態下,郵件在系統中是排隊的,這樣可以確保調用程序不會造成網絡阻塞。SmtpMail類在System.Web.Util名稱空間中定義。在使用SmtpMail之前,需要調用
using System.Web.Util
這個類中只有一個成員函數Send。它負責發送一個郵件信息,無論是一個MailMessage類或者是4個參數變量都可以傳遞給Send函數。調用Send函數有兩種形式:
SmtpMail.Send(txtFrom.Text, txtTo.Text, txtSubject.Text, txtMessage.Text);
或者是(如果不想調用System.Web.Util):
System.Web.Util.Smptmail.Send( fromString, toString, SubjeOfTheMailString, MessageOfTheMailString );
我們可以通過兩種途徑來調用Send方法:
1、通過將MailMessage作為一個參數來傳遞:
public static void Send(MailMessage);
這裡的MailMessage是一個類。
MailMessage mailMsg = new MailMessage();
mailMsg .From = "[email protected]";
mailMsg .To = "[email protected]";
mailMsg .Cc = "[email protected]"";
mailMsg .Bcc = "[email protected]";
mailMsg .Subject = "SubjectOfTheMailString";
mailMsg .Body = "BodyOfTheMailString";
SmtpMail.Send(mailMsg );
2、直接方法
public static void Send(string from , string to, string subject, string messageText);
from=發送者的Email信息,to=接收者的Email信息,subject=Email主題,messageText=Email信息主體。
比如:
SmtpMail.Send("[email protected]", "[email protected]", "Subject", "Message body");
下面解釋如何從控制台獲取一個輸入值。如果使用的是C++,那麼cin和cout就是向控制台讀和寫的函數。
在文本編輯器中輸入這些代碼,然後保存為read.cs:
using System;
class ReadStr
{
public static void Main()
{
Console.Write("Enter your name:");
string szName = Console.ReadLine();
Console.WriteLine(" Hey "+ szName);
}
}
然後在命令行編譯它,格式是cs read.cs,這將創建一個exe文件read.exe,它與read.cs文件在同一目錄下。最後,運行這個exe。
14.如何讀取Windows注冊表信息?
在介紹如何讀取注冊表信息前,先解釋如何增加注冊條目。
1、增加注冊表數據
以下文本是實際的注冊信息。將這個內容復制並粘貼到一個文本文件中,將其保存擴展名為.reg的文件,然後雙擊這個文件進行注冊表內容的輸入操作。
/*Windows Registry Editor Version 5.00
[HKEY_CURRENT_USERSoftwareTAWBSE]
"DSN"="TAWReports"
"User"="TAW1"
"Password"="taw1.1"
"Server"="dbserver"
"IP"=""
*/
2、閱讀注冊數據
2.1 創建兩個RegistryKey變量。
2.2 創建一個內含od對象的類,第一個參數為HKEY(主根關鍵字名),第二個為"",表示本地機器。
2.3 在要閱讀信息的地方創建子關鍵字。
2.4 用RegistryKey類的Getvalue方法來讀取某一特定節點關鍵字信息的數據。在這裡,DSN,Server,Password就是節點。
以下代碼讀取剛才加入到注冊表中的注冊數據:
namespace CONAPP
{
using System;
using Microsoft.Win32;
public class Class1
{
public Class1()
{
//
// TODO: Add Constructor Logic here
//
}
public static int Main(string[] args)
{
RegistryKey SUBKEY;
RegistryKey TAWKAY = RegistryKey.OpenRemoteBaseKey(Microsoft.Win32.RegistryHive.CurrentUser,"");
string subkey = "Software\TAW\BSE";
SUBKEY = TAWKAY.OpenSubKey(subkey);
object dsn = SUBKEY.GetValue("DSN");
object user = SUBKEY.GetValue("user");
object password = SUBKEY.GetValue("password");
object server = SUBKEY.GetValue("server");
return 0;
}
}
}
這裡是可下載代碼包:http://www.mindcracker.com/csharp/1/read_reg.cs
15.使用系統剪貼板
這裡要涉及的集合是System.Winforms.dll,名稱空間是System.Winforms。
系統剪貼板是一個提供剪切和粘貼功能的緩沖空間。在C#中,ClipBoard類提供了將數據放在系統剪貼板以及從系統剪貼板恢復數據的方法。如果你曾經使用過C++中的ClipBoard,你應該記得IDataObject,它提供了剪貼板的數據格式。在.NET中,可以使用DataFormat類,它執行IdataObject,為數據傳輸提供了一種格式獨立的結構。有關這方面的細節請看DataFormat類的參考資料。
Clipboard類只有3個成員,它們是剪貼板構造器、GetDataObject和SetDataObject。
16.剪貼板構造器
Clipboad類直接從Object類中派生出來。我們可以在應用程序中直接調用Clipboard類,或者使用剪貼板構造器來創建一個剪貼板實例:
Clipboard = new Clipboard();
甚至可以直接在應用程序中調用Clipboard:
IDataObject iData = System.WinForms.Clipboard.GetDataObject();
SetDataObject方法
我們可以調用SetDataObject方法實現在剪貼板上復制或剪切數據。SetDataObject方法有兩個定義:
public static void SetDataObject(Object);
這種方法使用了一個Object類型參數,它可以是任何數據,比如說:
string str = "Mahesh writing data to the Clipboard";
SetDataObject(str);
使用這個方法,就可以把任何類型的數據放在剪貼板上。
另外一種方法接受兩個參數:
public static void SetDataObject(Object data, bool copy);
copy這個參數指明應用程序退出後,數據是否應該保留在剪貼板上。
string str = "Mahesh writing data to the Clipboard using Copy bool";
SetDataObject(str, true);
GetDataObject方法
GetDataObject方法負責從剪貼板中恢復當前數據,它將返回IdataObject:
public static IDataObject GetDataObject();
比如說:
IDataObject dtObj = Clipboard.GetDataObject();
現在就可以調用IDataObject的GetFormats來找出剪貼板上的數據格式了,比如說:
private void CutCopyData()
{
Clipboard.SetDataObject(textBox1.SelectedText);
}
private void PasteData()
{
IDataObject iData = Clipboard.GetDataObject();
file://Determine whether the data is in a format you can use.
if(iData.GetDataPresent(DataFormats.Text))
{