• 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

Moderator: vietluyen

quachnguyen
Thành viên danh dự
Thành viên danh dự
Posts: 18
Joined: Fri 30/03/2007 7:04 pm
Location: http://vi-vn.com
Contact:

Gửi Email động trong ASP.NET

Postby quachnguyen » Tue 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.

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
Attachments
SendMail.rar
Ví dụ mẫu bằng Asp.Net 2k5
(6.14 KiB) Downloaded 2082 times


http://code2code.info/

HaiTrieu
Thành viên năng nổ
Thành viên năng nổ
Posts: 97
Joined: Mon 31/03/2008 10:09 am

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

Postby HaiTrieu » Wed 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ự
Posts: 18
Joined: Fri 30/03/2007 7:04 pm
Location: http://vi-vn.com
Contact:

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

Postby quachnguyen » Sat 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ổ
Posts: 97
Joined: Mon 31/03/2008 10:09 am

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

Postby HaiTrieu » Mon 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ổ
Posts: 68
Joined: Mon 07/07/2008 9:22 pm

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

Postby tham_lang » Thu 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
Posts: 2
Joined: Thu 11/06/2009 5:22 pm

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

Postby utcung » Thu 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

User avatar
NoBi
Quản trị
Quản trị
Posts: 959
Joined: Tue 18/03/2008 1:22 pm
Location: Sài Gòn
Has thanked: 53 times
Been thanked: 66 times
Contact:

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

Postby NoBi » Thu 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
Posts: 1
Joined: Sat 15/08/2009 2:24 pm

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

Postby Cold » Sat 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

User avatar
NoBi
Quản trị
Quản trị
Posts: 959
Joined: Tue 18/03/2008 1:22 pm
Location: Sài Gòn
Has thanked: 53 times
Been thanked: 66 times
Contact:

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

Postby NoBi » Sun 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
Posts: 5
Joined: Sun 19/07/2009 5:18 pm
Location: Việt Nam | TPHCM
Contact:

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

Postby ngothanhtai » Tue 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 ;)

User avatar
hoangthu1974
Guru
Guru
Posts: 813
Joined: Thu 09/03/2006 9:30 am
Location: Hà Nội --> Tp. Hồ Chí Minh
Been thanked: 13 times
Contact:

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

Postby hoangthu1974 » Wed 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
Posts: 11
Joined: Tue 17/11/2009 9:24 am

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

Postby missingyou » Tue 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!!!

User avatar
NoBi
Quản trị
Quản trị
Posts: 959
Joined: Tue 18/03/2008 1:22 pm
Location: Sài Gòn
Has thanked: 53 times
Been thanked: 66 times
Contact:

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

Postby NoBi » Wed 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
Posts: 20
Joined: Mon 02/06/2008 7:37 am
Location: Hung Vuong University
Been thanked: 1 time
Contact:

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

Postby mc_it » Thu 22/04/2010 3:24 pm

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.
Attachments
SendingMail.rar
(6.72 KiB) Downloaded 571 times

User avatar
vqkhanh019
Thành viên chính thức
Thành viên chính thức
Posts: 12
Joined: Sun 02/05/2010 9:34 am
Location: Phú Thọ

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

Postby vqkhanh019 » Sun 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.

User avatar
tiger86love102
Thành viên danh dự
Thành viên danh dự
Posts: 610
Joined: Sun 19/10/2008 1:10 am
Location: http://ready.vn
Has thanked: 4 times
Been thanked: 21 times
Contact:

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

Postby tiger86love102 » Tue 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
Posts: 1
Joined: Fri 13/05/2011 9:47 pm

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

Postby pinkpaint » Fri 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!


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

Who is online

Users browsing this forum: No registered users and 4 guests