Code của bạn không thuộc loại chuyên nghiệp để có thể đem khoe. Vd. FPath = ThisWorkbook.Path & "D:\Data\BangLuong.xlsm"
Nếu tập tin có đường dẫn là "D:\Data\BangLuong.xlsm" thì FPath = "D:\DataD:\Data\BangLuong.xlsm". Rõ ràng là sai. Nhưng do tiếp theo trong code không sử dụng FPath nên không thể đổ lỗi cho nó khi không gửi được thư.
Code không gửi được thư vì một lẽ đơn giản mà người ta không nói ra cho bạn biết. Người ta chơi trò ú tim thôi.
Thực ra code CDO chỉ là code CDO. Chuyện gửi được hay không không dính dáng gì tới CDO. Tôi cho bạn ví dụ. Bạn dùng Outlook để gửi thư. Bạn đăng ký 1 tài khoản gmail. Lập tài khoản gmail xong bạn chả thiết lập gì cả. Bây giờ trong Outlook bạn phải cấu hình cho tài khoản gmail kia. Nếu bạn không làm hoặc làm không chuẩn thì không chỉ Outlook mà cả bố và ông nội của Outlook cũng không được cấu hình để gửi thư. Và cái cấu hình kia nó chả dính dáng gì tới Outlook, nó chả phải là lỗi của Outlook. Nó cũng chả dính dáng gì tới CDO, chả phải là lỗi của CDO. Muốn dùng được trong Outlook hay với CDO thì đều phải có thiết lập tối thiểu. Thế thôi.
Tôi vừa tự tạo 1 tài khoản ví dụ là chala***@gmail.com với mật khẩu là matkhau***. Sau đó tôi đăng nhập vào tài khoản và tôi "bật ON", "cho phép" "
Các phần mềm ít an toàn có quyền truy cập"
View attachment 240859
Tôi chỉ làm duy nhất 1 việc này. Về việc thiết lập cho tài khoản gmail thì bạn hỏi thêm trên GPE. Nếu người ta không trả lời thì bạn đọc trên mạng cũng được. Có gì quan trọng đâu mà phải giấu giấu giếm giếm. Tôi chỉ thiết lập 1 cái duy nhất thôi. Nếu không thiết lập cái này thì gmail sẽ chặn mọi truy cập từ CDO, Outlook ... Tất nhiên nếu bạn để ý thì sẽ thấy nó không âm thầm chặn. Nó có thông báo cho bạn đấy. Khi bạn đăng nhập vào tài khoản thì bạn sẽ thấy.
Tôi tin rằng bạn sẽ gửi được thư dù code hiện có của bạn không phải là code chuyên nghiệp. Vì nó không sai (tôi nhìn lướt qua thôi).