Page 1 of 1

Gửi Email động trong ASP.NET

Posted: Tue 23/09/2008 5:35 pm
by quachnguyen
Tên bài viết: Gửi Email động trong ASP.NET
Tác giả: Quach Nguyen
Cấp độ bài viết: Chưa đánh giá
Tóm tắt: Với 1 ứng dụng web hiện nay thì việc hổ trợ liên hệ giửa khách hàng và nhà cung cấp dịch vụ là không thể tránh khỏi, với cách làm củ thì các bạn phải dùng cách cấu hình Microsoft CDO trong Net 1.1, cách này rất vất vả và bất tiện, nhưng với asp.net 2.0 thì mọi việc trở nên hết sức dể dàng.



Gửi Email động trong ASP.NET

Giới thiệu.
Với 1 ứng dụng web hiện nay thì việc hổ trợ liên hệ giửa khách hàng và nhà cung cấp dịch vụ là không thể tránh khỏi, với cách làm củ thì các bạn phải dùng cách cấu hình Microsoft CDO trong Net 1.1, cách này rất vất vả và bất tiện, nhưng với asp.net 2.0 thì mọi việc trở nên hết sức dể dàng.

Nội dung:
Trong bài giới thiệu này mình sẻ cố gắng giải thích cô động và xúc tích, đọc xong bài này các bạn sẻ có thể làm được:

1. Tạo 1 email template mẫu có sẳn.
2. Cấu hình smtp.
3. Lấy địa chỉ email từ file web.config.
4. Bật chức năng bảo mật cho email gửi đi. (enable SSL)

Nếu các bạn muốn thì hiểu rỏ hơn về Mail cũng như các lớp cung cấp phục vụ cho việc gửi mail, xin vui lòng tham khảo thêm MCTS Self-Paced Training Kit (Exam 70-536): Microsoft .NET Framework 2.0 Application Development Foundation, chương 15 (cơ bản về .NET 2.0).

Cách làm:

Bước 1:
Dùng Visual Studio 2005/2008 tạo 1 ứng dụng Web, chọn ngôn ngữ mà bạn thích, ở đây mình code trên 2 ngôn ngữ VB và C#, đầu tiên mình sẻ tạo 1 template mẫu phục vụ cho việc gửi mail.

Image

Bước 2:
Và mail template có dạng sau:

Image

Và đây là code html của mail mẫu

Image

Giờ khoang hả quan tâm đến các từ trong dấu [], chẳng hạn [Sender], nó chính là các tham số mà ta sẻ thay thế.

Bước 3:
Tiếp đến tạo 1 trang để cho người dùng gửi yêu cầu, nơi mà chúng ta sẻ áp dụng chức năng send mail:

Image

Các này dể thiết kế nên mình không có đi sâu vào vấn đề làm thế nào để layout nó, ở đây mình dùng table.

Bước 4:
Giờ đến phần cấu hình smtp trong web.config, mục đích cho phép người dùng dể dàng chỉnh sửa email gửi đi 1 cách dể dàng mà không cần đụng đến mã nguồn.

Image

Ở đây do mình dùng host của godaddy nên cấu hình smtp yêu cầu là như hình trên, nếu smtp của các bạn là gmail hoặc yahoo thì phải cấu hình cho đúng, ví dụ: của gmail là stmp.gmail.com, port là 587. Ở đây mình cấu hình smtp trên domain của mình đang sử dụng (http://www.vi-vn.com).

Chú ý: tag smtp phải đặt trong tag configuration và được bộc lại bởi tag system.net

Típ: Các bạn nên bỏ nó phía dưới cùng trong tag configuration

Bước 5: tạo 1 thuộc tính để lấy giá trị email trong web.config

C#
Image
VB.NET
Image

Chú ý: thuộc tính này chỉ đọc thôi, không cho phép ghi xuống cho nên chỉ có get C#, và ReaOnly trong VB.

Chú ý: các bạn phải using hoặc import 2 namespace vào là:

C#
using System.Net.Configuration;
using System.Configuration;

VB
Imports System.Configuration
Imports System.Net.Configuration

Với thuộc tính này chúng ta sẻ lấy được địa chi email: admin@vi-vn.com

Bước 6: Viết hàm send mail

Hàm này sẻ trả về kiểu String, dùng để nhận biết kết quả của việc send mail (thành công hay thất bại), bạn cũng có thể trả về kiểu bool nếu bạn thích.

C#
public string SendMail(string subject, string body,
string to, bool isHtml, bool isSSL)

VB
Public Function SendMail(ByVal subject As String, ByVal body As String, _
ByVal toAddress As String, ByVal isHtml As Boolean, ByVal isSSL As Boolean) _
As String
C#
Image
VB.NET
Image

Phương thức send mail này sẻ nhận vào các tham số như: chủ đề, nội dụng, người nhận, gửi mail dạng html, mã hoá SSL (Secure Socket Layer).

Đầu tiên hàm này sẻ tạo 1 đối tượng MailMessage, và được bộc lại bởi block using, để đảm bảo rằng đối tượng này sẻ được Dispose khi ra khỏi hàm và trước khi Collect Garbage thực hiện việc này. Như những dòng lệnh của đả nói lên rằng là 1 mail bao gồm người gửi (From), người nhận (To), chủ đề (Subject), nội dụng (Body)...

Bước 7: Gọi hàm SendMail.

C#
Image
VB.NET
Image

Đầu tiên chúng ta tạo 1 đối tượng StreamReader và đọc nội dụng của file html tempate, sau đó đọc tất cả nội dụng của file template vào biến content. Sau đó thay thế các tag [Sender], [Content].... bằng những gì mà người dùng nhập vào.

Image

Kết quả:
Image

Kết luân:
Đây là cách làm thông thường khi lằm việc với mail, ngoài ra khi send mail, chúng ta cần phải nhúng vào đó hình hoặc tập tin đính kèm chắng hạn. Điều này cũng rất dể dàng vì ASP.NET 2.0 đả hổ trợ chúng ta. Tương tự với cách làm này thì khi người dùng đăng ký thành viên thì rất dể dàng cho việc send mail active tài khoản, cũng dùng cách này trong các bài viết sau mình sẻ hướng dẩn send mail active tài khoản khi user đăng ký thành viên.

Mã nguồn:


Theo

Hope this help,
QuachNguyen
Give me you feed-back: admin@vi-vn.com

Re: Gửi Email động trong ASP.NET

Posted: Wed 08/10/2008 3:01 pm
by HaiTrieu
chào bạn!
không hiểu sao mình làm tương tự như những gì bạn hướng dẫn.thế nhưng khi gửi thì chương trình lại báo là failure send mail???

Re: Gửi Email động trong ASP.NET

Posted: Sat 11/10/2008 10:25 pm
by quachnguyen
code cấu hình smtp của bạn như thế nào? chắc có lẻ là sai port

Re: Gửi Email động trong ASP.NET

Posted: Mon 13/10/2008 2:21 pm
by HaiTrieu
mình đã gửi được rồi.mình bị sai port :)

Re: Gửi Email động trong ASP.NET

Posted: Thu 06/11/2008 4:13 pm
by tham_lang
có bạn nào hướng dãn mình cấu hình SMTP ko?mình làm mãi mà ko đc

Re: Gửi Email động trong ASP.NET

Posted: Thu 11/06/2009 5:35 pm
by utcung
Bạn ơi! Mình cũng đang làm send mail tự động nè! Mà làm chưa được! Mình cũng bị lỗi "failer send mail"
bạn có biết nó bị lỗi port nào không?
Hy vọng bạn sẽ sớm trả lời
Email :hoangdu1512@gmail.com

Re: Gửi Email động trong ASP.NET

Posted: Thu 13/08/2009 4:07 pm
by NoBi
Tôi có làm 1 ví dụ mẫu theo hướng dẫn của bài viết trên. Các bạn xem tải về ở bài viết đầu tiên hoặc tại đây: download/file.php?id=6811

Re: Gửi Email động trong ASP.NET

Posted: Sat 15/08/2009 2:39 pm
by Cold
bạn ơi cho mình hỏi mình đã làm giống bạn hướng dẫn.Thậm chí copy code ở SendMail.rar vào và mình chỉnh lại ở webconfig là
<system.net>
<mailSettings>
<smtp>
<network host="smtp.gmail.com"
port="587"
userName="mail@gmail.com"
password="pass"/>
</smtp>
</mailSettings>
</system.net>
và mình cũng đặt nó ở dưới cùng nằm trong thẻ configuration thì nó báo thế này
The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.0 Must issue a STARTTLS command first. 9sm6042798wfc.16
còn mình để host = "smtpout.gmail.com" thì nó báo Failure sending mail.
GIÚP MÌNH VỚI THANKS

Re: Gửi Email động trong ASP.NET

Posted: Sun 16/08/2009 12:23 am
by NoBi
Do bạn không có quyền gửi email thông qua SMTP đó. Thường thì các webmail cho đăng ký free kg hổ trợ gửi và nhận email qua SMTP. Ví dụ trên của tui đã check gửi email thành công (tui sử dụng SMTP, username và password của host thuê cung cấp).

Re: Gửi Email động trong ASP.NET

Posted: Tue 01/09/2009 10:21 pm
by ngothanhtai
Mình dùng localhost rồi, gửi được, nhưng 2-3 ngày sau nó mới tới :(
Thử dùng smtp của gmail thì chạy vèo vèo ;)

Re: Gửi Email động trong ASP.NET

Posted: Wed 02/09/2009 8:34 am
by hoangthu1974
Cái này Gửi e-mail bằng VB.NET gửi được bình thường mà.

Re: Gửi Email động trong ASP.NET

Posted: Tue 17/11/2009 10:55 pm
by missingyou
Cho mình hỏi: Nếu không có quyền gửi email thông qua SMTP thì phải làm sao đây? help me!!!

Re: Gửi Email động trong ASP.NET

Posted: Wed 18/11/2009 11:02 pm
by NoBi
Thì bó tay chứ sao. Bài viết này chỉ hướng dẫn cách tùy biến để gửi email theo mẫu có sẳn thôi, còn vấn đề làm sao để gửi được email xin miễn bàn.

Re: Gửi Email động trong ASP.NET

Posted: Thu 22/04/2010 3:24 pm
by mc_it
hoangthu1974 wrote:Cái này Gửi e-mail bằng VB.NET gửi được bình thường mà.

Cái này chỉ dùng cho tài khoản người gửi là Gmail
Các bạn có thể xem tại đây (không đính kèm files): http://aspspider.biz/chieunm88/default.aspx
Các bạn có thể xem tại đây (có đính kèm files): http://aspspider.biz/chieunm88/default2.aspx

P/S: Bạn nào biết thì hoàn chỉnh lại chức năng xóa những files upload sau khi gửi nha. Tôi đã viết thủ tục xóa files upload rồi nhưng kô hiểu sao chưa thi hành được.

Re: Gửi Email động trong ASP.NET

Posted: Sun 02/05/2010 9:58 am
by vqkhanh019
Đề nghị đồng chí ChieuNM "mc_it" gửi bản đúng cho anh em đi :D

Re: Gửi Email động trong ASP.NET

Posted: Tue 01/06/2010 10:51 pm
by tiger86love102
Sao ko xem đc hình ảnh các đồng chí ơi !

Re: Gửi Email động trong ASP.NET

Posted: Fri 13/05/2011 9:51 pm
by pinkpaint
Các bạn ơi giúp mình với.
Trước đây mình làm theo ví dụ này và chạy trên localhost, khi kết nối mạng internet đã gửi được mail.
Nhưng máy mình mới bị hỏng phải cài lại. Giờ mình lại không thể thực hiện gửi mail. Không hiểu lỗi do đâu, vì nó không báo lỗi, chỉ là không gửi được. Mong các bạn giúp mình cách khắc phục hoặc cách tìm ra lỗi. Mình đang rất cần.
Cảm ơn mọi người!