• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Gửi Email động trong ASP.NET

Các bài viết giới thiệu và hướng dẫn dành cho lập trình Web Forms

Điều hành viên: vietluyen

quachnguyen
Thành viên danh dự
Thành viên danh dự
Bài viết: 18
Ngày tham gia: T.Sáu 30/03/2007 7:04 pm
Đến từ: http://vi-vn.com
Liên hệ:

Gửi Email động trong ASP.NET

Gửi bàigửi bởi quachnguyen » T.Ba 23/09/2008 5:35 pm

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.

Hình ảnh

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

Hình ảnh

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

Hình ảnh

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:

Hình ảnh

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.

Hình ảnh

Ở đâ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#
Hình ảnh
VB.NET
Hình ảnh

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#
Hình ảnh
VB.NET
Hình ảnh

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#
Hình ảnh
VB.NET
Hình ảnh

Đầ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.

Hình ảnh

Kết quả:
Hình ảnh

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
Tập tin đính kèm
SendMail.rar
Ví dụ mẫu bằng Asp.Net 2k5
(6.14 KiB) Đã tải 1979 lần


http://code2code.info/

HaiTrieu
Thành viên năng nổ
Thành viên năng nổ
Bài viết: 97
Ngày tham gia: T.Hai 31/03/2008 10:09 am

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

Gửi bàigửi bởi HaiTrieu » T.Tư 08/10/2008 3:01 pm

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???

quachnguyen
Thành viên danh dự
Thành viên danh dự
Bài viết: 18
Ngày tham gia: T.Sáu 30/03/2007 7:04 pm
Đến từ: http://vi-vn.com
Liên hệ:

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

Gửi bàigửi bởi quachnguyen » T.Bảy 11/10/2008 10:25 pm

code cấu hình smtp của bạn như thế nào? chắc có lẻ là sai port
http://code2code.info/

HaiTrieu
Thành viên năng nổ
Thành viên năng nổ
Bài viết: 97
Ngày tham gia: T.Hai 31/03/2008 10:09 am

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

Gửi bàigửi bởi HaiTrieu » T.Hai 13/10/2008 2:21 pm

mình đã gửi được rồi.mình bị sai port :)

tham_lang
Thành viên năng nổ
Thành viên năng nổ
Bài viết: 68
Ngày tham gia: T.Hai 07/07/2008 9:22 pm

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

Gửi bàigửi bởi tham_lang » T.Năm 06/11/2008 4:13 pm

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

utcung
Bài viết: 2
Ngày tham gia: T.Năm 11/06/2009 5:22 pm

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

Gửi bàigửi bởi utcung » T.Năm 11/06/2009 5:35 pm

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

Hình đại diện của người dùng
NoBi
Quản trị
Quản trị
Bài viết: 948
Ngày tham gia: T.Ba 18/03/2008 1:22 pm
Đến từ: Sài Gòn
Has thanked: 50 time
Been thanked: 66 time
Liên hệ:

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

Gửi bàigửi bởi NoBi » T.Năm 13/08/2009 4:07 pm

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
:>

Cold
Bài viết: 1
Ngày tham gia: T.Bảy 15/08/2009 2:24 pm

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

Gửi bàigửi bởi Cold » T.Bảy 15/08/2009 2:39 pm

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

Hình đại diện của người dùng
NoBi
Quản trị
Quản trị
Bài viết: 948
Ngày tham gia: T.Ba 18/03/2008 1:22 pm
Đến từ: Sài Gòn
Has thanked: 50 time
Been thanked: 66 time
Liên hệ:

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

Gửi bàigửi bởi NoBi » CN 16/08/2009 12:23 am

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).
:>

ngothanhtai
Bài viết: 5
Ngày tham gia: CN 19/07/2009 5:18 pm
Đến từ: Việt Nam | TPHCM
Liên hệ:

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

Gửi bàigửi bởi ngothanhtai » T.Ba 01/09/2009 10:21 pm

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 ;)

Hình đại diện của người dùng
hoangthu1974
Guru
Guru
Bài viết: 812
Ngày tham gia: T.Năm 09/03/2006 9:30 am
Đến từ: Hà Nội --> Tp. Hồ Chí Minh
Been thanked: 13 time
Liên hệ:

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

Gửi bàigửi bởi hoangthu1974 » T.Tư 02/09/2009 8:34 am

Cái này Gửi e-mail bằng VB.NET gửi được bình thường mà.

missingyou
Thành viên chính thức
Thành viên chính thức
Bài viết: 11
Ngày tham gia: T.Ba 17/11/2009 9:24 am

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

Gửi bàigửi bởi missingyou » T.Ba 17/11/2009 10:55 pm

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!!!

Hình đại diện của người dùng
NoBi
Quản trị
Quản trị
Bài viết: 948
Ngày tham gia: T.Ba 18/03/2008 1:22 pm
Đến từ: Sài Gòn
Has thanked: 50 time
Been thanked: 66 time
Liên hệ:

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

Gửi bàigửi bởi NoBi » T.Tư 18/11/2009 11:02 pm

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.
:>

mc_it
Thành viên chính thức
Thành viên chính thức
Bài viết: 20
Ngày tham gia: T.Hai 02/06/2008 7:37 am
Đến từ: Hung Vuong University
Been thanked: 1 time
Liên hệ:

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

Gửi bàigửi bởi mc_it » T.Năm 22/04/2010 3:24 pm

hoangthu1974 đã viết: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.
Tập tin đính kèm
SendingMail.rar
(6.72 KiB) Đã tải 503 lần

Hình đại diện của người dùng
vqkhanh019
Thành viên chính thức
Thành viên chính thức
Bài viết: 12
Ngày tham gia: CN 02/05/2010 9:34 am
Đến từ: Phú Thọ

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

Gửi bàigửi bởi vqkhanh019 » CN 02/05/2010 9:58 am

Đề nghị đồng chí ChieuNM "mc_it" gửi bản đúng cho anh em đi :D
Trên bước đường thành công không có dấu chân của kẻ lười biếng.
Dù con đường có ngắn mà không bước đi thì sẽ không bao giờ tới nơi.

Hình đại diện của người dùng
tiger86love102
Thành viên danh dự
Thành viên danh dự
Bài viết: 610
Ngày tham gia: CN 19/10/2008 1:10 am
Đến từ: http://ready.vn
Has thanked: 4 time
Been thanked: 21 time
Liên hệ:

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

Gửi bàigửi bởi tiger86love102 » T.Ba 01/06/2010 10:51 pm

Sao ko xem đc hình ảnh các đồng chí ơi !
Đội bóng Ready
facebook.com/tiger86love102

pinkpaint
Bài viết: 1
Ngày tham gia: T.Sáu 13/05/2011 9:47 pm

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

Gửi bàigửi bởi pinkpaint » T.Sáu 13/05/2011 9:51 pm

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!


Quay về “[ASP.NET] Bài viết giới thiệu, hướng dẫn”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.1 khách