Làm thế nào để tự động gửi mail ? (C#)

I/ Giới thiệu về SMTP

Hello xin chào các bạn mình là Danh. Hôm nay mình xin chia sẽ đến các bạn một chức năng mà trong hầu hết các dự án đều có đó chính là phương thức gửi mail đơn giản tiếng anh là Simple Mail Transfer Protocol (SMTP).

II/ Chức năng của SMTP

Đây là một phương thức phổ biến được sử dụng rộng rãi trong các dự án lớn nhỏ. Các bạn sử dụng bất kỳ ứng dụng nào có đăng ký mail đều sẽ có lần thao tác với phương thức này các bạn có thể hình dung đơn giản là mình muốn đổi password của một tài khoản nào đó mà có đăng ký mail thì khi các bạn bấm quên mật khẩu và lựa chọn phương thức xác thực là mail thì sau khi các bạn nhập địa chỉ mail vào và nhấn submit thì ngay lập tức trong mail các bạn xuất hiện một mail mới chứa thông tin để các bạn có thể thay đổi thông tin tài khoản.

Ngoài ra còn được ứng dụng khi các bạn order hàng sẽ có một email gửi đến email các bạn. Không thể nào cứ mỗi người đổi password hay order hàng mà gửi thông tin qua mail mà lại viết tay từng mail cả như thế rất chi là chuối vì thế SMTP được sinh ra để giải quyết bài toán gửi mail hàng loạt và theo một form mẫu. Đó là chức năng chính của SMTP tự động gửi mail theo form có sẵn.

II/ Cách dùng

Cách dùng SMTP thì rất đơn giản chỉ cần một tài khoản mail google là được nhé. Bây giờ chúng ta sẽ bắt đầu đi từng bước nhé.

Bước 1: Setup mật khẩu ứng dụng

Mật khẩu ứng dụng là mật mã gồm 16 chữ số cho phép một ứng dụng hoặc thiết bị kém an toàn truy cập vào Tài khoản Google của bạn. Chỉ những tài khoản đã bật tính năng Xác minh 2 bước mới có thể sử dụng Mật khẩu ứng dụng. Khi setup sever cho SMTP thì chúng ta không thể để passowrd google vì nếu lộ thì rất nguy hiển vì thế google sẽ sử dụng mk ứng dụng cho các chức năng được biệt các mật khẩu này dễ dàng được tạo ra và vô hiệu hóa nhanh chóng.

Đầu tiên các bạn vào google và chọn vào ảnh đại diện của bạn góc trên bên phải. Sau đó chọn quản lý tài khoản Google của bạn.
bạn sẽ thấy một giao diện như bên dưới.

Tiếp theo các bạn chọn vào phần bảo mật .

Tiếp theo các bạn chọn vào Mật khẩu ứng dụng. Lúc này Google sẽ yêu cầu bạn đăng nhập lại các bạn cứ đăng nhập lại nhé.

Sau khi các bạn đăng nhập lại sẽ dẫn các bạn đến trang mật khẩu ứng dụng như bên dưới.

Lúc này các bạn sẽ tạo thêm một mật khẩu ứng dụng nữa làm theo hình bên dưới.

Các bạn chọn option các bạn mong muốn và chọn tạo để nhận được một mật khẩu ứng dụng.

Đây là mật khẩu ứng dụng của bạn. Các bạn nên copy mật khẩu này cho vào file notepad để lưu lại để sử dụng. Thế là các bạn đã xong bước 1.

Bước 2: Code thôi

        // khởi tạo phương thức SendMailGoogleSmtp đầu vào là một chuỗi body(đây là nội dung của mail) và phương thức trả về một giá trị boolean
        public async Task<bool> SendMailGoogleSmtp(string _body)
        {
            // Tài khoản Mail gửi
            string _from = "[email protected]";
            // Tài khoản Mail đến ở đây mình hard code các bạn không nên làm theo mà hãy truyền vào một biến là tk mail mà bạn muốn gửi đến không nên hard code nhé
            string _to = "[email protected]";
            // khởi tạo phần nội dung mail 
            MailMessage message = new MailMessage(
                 from: _from,
                 to: _to,
                 subject: "Hello",
                 body: _body
             );
            // phần này setting các dạng mã hóa thôi
            message.BodyEncoding = System.Text.Encoding.UTF8;
            message.SubjectEncoding = System.Text.Encoding.UTF8;
            message.IsBodyHtml = true;
            message.ReplyToList.Add(new MailAddress(_from));
            message.Sender = new MailAddress(_from);

            // Tạo SmtpClient kết nối đến smtp.gmail.com
            using (SmtpClient client = new SmtpClient("smtp.gmail.com"))
            {
                client.Port = 587;
                // đây là phần xác thực các bạn thấy chỗ này mình truyền vào mật khẩu ứng dụng không phải mật khẩu google mail đâu nhé
                client.Credentials = new NetworkCredential("[email protected]", "zltsurhypsplgwpm");
                client.EnableSsl = true;
                try
                {
                    // và đây là nơi hàm chuyển mail đi
                    await client.SendMailAsync(message);
                    return true;
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    return false;
                }
            }

        }

Trên đây là toàn bộ code của mình các bạn có thể thay đổi tùy vào nhu cầu nhé. Cảm ơn các bạn đã đọc bài mọi thắc mắc các bạn liên hệ mình qua mail [email protected] .

Leave a Comment

Your email address will not be published. Required fields are marked *