Sunday, July 29, 2012

[Tutorial] Send/Receive Mail Using SMTP/POP3 In C #

Xây dựng lớp SMTP – dùng để gửi mail

1. Các thuộc tính cần có của một bức thư (mail):
- Danh sách người nhận.
// Danh sách người nhận
private string[] _DanhSachNguoiNhan;
public string[] DanhSachNguoiNhan
{
get { return _DanhSachNguoiNhan; }
set { _DanhSachNguoiNhan = value; }
}
Danh sách Bcc.
// Danh sách Bcc
private string[] _DanhSachBcc;
public string[] DanhSachBcc
{
get { return _DanhSachBcc; }
set { _DanhSachBcc = value; }
}
Danh sách Cc.
// Danh sách Cc
private string[] _DanhSachCc;
public string[] DanhSachCc
{
get { return _DanhSachCc; }
set { _DanhSachCc = value; }
}
- Danh sách file attachment (đính kèm).
// Danh sách file đính kèm
private Attachment[] _DanhSachAttment;
public Attachment[] DanhSachAttment
{
get { return _DanhSachAttment; }
set { _DanhSachAttment = value; }
}
Subject (tiêu đề).
// Tiêu đề mail cần gửi
private string _Subject;
public string Subject
{
get { return _Subject; }
set { _Subject = value; }
}
Content (nội dung).
// Nội dung mail cần gửi
private string _Contents;
public string Contents
{
get { return _Contents; }
set { _Contents = value; }
}
Các công việc cần làm khi gửi mail
- Set danh sách người nhận.
public void setDanhSachNguoiNhan(string SendTo)// SendTo là danh sách người nhận truyền vào
{
if (SendTo == "")
{
MessageBox.Show("Bạn Chưa Nhập Địa Chỉ Một Người Nhận Nào", "Thông Báo");// nếu danh sách truyền vào trống thì thông báo
return;
}
DanhSachNguoiNhan = SendTo.Split(',');// tách các người nhận bằng dấu ",";
}
Set danh sách Cc.
public void setDanhSachCc(string Cc)
{
if (Cc != "")
{
DanhSachCc = Cc.Split(',');
}
}
Tương tự set danh sách Bcc.
- Set danh sách file đính kèm.
public void setDanhSachAttachment(string[] AttachmentPath)
{
DanhSachAttment = new Attachment[AttachmentPath.Length];
for (int i = 0; i < AttachmentPath.Length; i++)
DanhSachAttment[i] = new Attachment(AttachmentPath[i]);
}
Sau khi đã lấy đủ thông tin cần thiết, ta thực hiện gửi mail. Trong C# có hai namespace hỗ trợ việc gửi mail bằng smtp là:
using System.Net.Sockets;
using System.Net.Mail;
Hàm thực hiện việc gửi mail:
+ Tạo kết nối tới server: (ở đây mình làm là Gmail, tương tự các bạn có thể làm với Yahoo Mail,…)
SmtpClient SmtpServer = new SmtpClient();
SmtpServer.Credentials = new System.Net.NetworkCredential(user.TenTaiKhoan, user.MatKhau);
SmtpServer.Port = 587;
SmtpServer.Host = "smtp.gmail.com";
SmtpServer.EnableSsl = true;
Tạo một mail:
MailMessage smail = new MailMessage();
smail.From = new MailAddress(user.TenTaiKhoan, user.TenHienThi, System.Text.Encoding.UTF8);
Byte i;
for (i = 0; i < DanhSachNguoiNhan.Length; i++)
smail.To.Add(DanhSachNguoiNhan[i]);
if(DanhSachCc != null)
{
for (i = 0; i < DanhSachCc.Length; i++)
smail.CC.Add(DanhSachCc[i]);
}
if (DanhSachBcc != null)
{
for (i = 0; i < DanhSachBcc.Length; i++)
smail.Bcc.Add(DanhSachBcc[i]);
}
if (DanhSachAttment != null)
{
for (i = 0; i < DanhSachAttment.Length; i++)// danh sách file đính kèm (nếu có)
smail.Attachments.Add(DanhSachAttment[i]);
}
smail.Subject = Subject;
smail.Body = Contents;
smail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
Và gửi nó đi:
try
{
#region Tạo một bức thư điện tử
// Tạo một mail, phần code tạo một mail
#endregion
SmtpServer.Send(smail);
SmtpServer.Dispose();
return true;
}
catch
{ return false; }
*Chú thích : biến user.TenTaiKhoan và user.MatKhau là tên tài khoản và mật khẩu tài khoản gmail của bạn.

Vậy là xong lớp SMTP dùng để gửi mail. Bây giờ ta chỉ cần thiết kế một form gửi mail nữa là ok, các bạn lưu ý là nếu các bạn sử dụng code của mình thì chú thiết kế form cung cấp đủ các biến cho nó nhé!.
Bạn có thể vào đây:
http://www.mediafire.com/?eb4hk5buxj9898t
Bạn vào link trên để lấy class đó để bổ sung nhé!

No comments: