Gởi mail với code VBA Excel

Ví dụ code gởi mail với code VBA Excel mới nhất

1. Gởi mail bằng code VBA Excel

Từ năm 2023 thì việc gởi mail bằng VBA không còn dễ dàng như trước đó, không chỉ riêng VBA mà với các ngôn ngữ khác như C#, ASPX, JAVA việc gởi mail bằng các code cũ sẽ chạy không được.

Gởi mail vba excel

Lý do Google không cho phép gởi mail trực tiếp từ code mà thông qua ứng dụng thứ 3.

Có 1 giải pháp giúp bạn gởi mail an toàn nhanh nhất với VBA đó là code VBA excel sẽ kết nối với Google Sheet, sử dụng ngôn ngữ Script Google App để gởi mail (sẽ làm video tiếp theo).

2. Đối tượng VBA sử dụng để gởi mail CDO.Message

CDO.Message là một đối tượng trong thư viện CDO (Collaboration Data Objects) được Microsoft lập trình ra để các lập trình viên sử dụng gởi mail thông qua phương thức SMTP.  Nếu không sử dụng SMTP thì bạn cần phải gởi thông qua thư viện có sẵn trong Outlook, nhưng điều này gây bất tiện trong việc máy tính phải được cấu hình email vào Outlook từ trước. Tóm lại CDO.Message là 1 thư viện hay của Microsoft tạo ra để lập trình gởi mail thông qua code vba Excel,vba  Access, hoặc Word

3. SMPT là gì

   SMTP viết tắt từ Simple Mail Transfer Protocol, là một giao thức chuẩn dùng để gửi email giữa các máy chủ thư điện tử qua mạng Internet. SMTP được sử dụng phổ biến để truyền tải thư điện tử từ ứng dụng email (như Outlook, Thunderbird, hay ứng dụng email trên smartphone) đến máy chủ thư điện tử và từ máy chủ này đến máy chủ khác.
Cách hoạt động của SMTP

    Khi bạn gửi một email từ một ứng dụng email, SMTP sẽ xử lý quá trình truyền tải email từ ứng dụng đó đến máy chủ SMTP của bạn. Sau đó, máy chủ SMTP sẽ chuyển tiếp email này đến máy chủ của người nhận.
    SMTP hoạt động theo mô hình client-server, trong đó:
        Client: là ứng dụng hoặc máy chủ email muốn gửi thư.
        Server: là máy chủ nhận yêu cầu gửi email và xử lý để chuyển tiếp hoặc phân phối email đến máy chủ của người nhận.

SMTP là gì

4. Ví dụ thực tế gởi mail từ code VBA Excel

 Code VBA


 Dim obj_GOI_MAIL As Object
    Dim obj_CAU_HINH_MAIL_GOI As Object
    'Dim SMTP_Config As Variant
   '
    Dim v_TieuDeMail As String
    Dim v_Tu_Email As String
    Dim v_Den_Email As String
    Dim v_Mail_CC As String
    Dim v_Mail_BCC As String
    Dim v_NOI_DUNG_GOI As String

    ' Cau hinh email goi
    v_TieuDeMail = "TIEU DE EMAIL"
    v_Tu_Email = "xx@gmail.com"
    v_Den_Email = "yy@gmail.com"
    v_Mail_CC = ""   ' Neu co hay nhap vao
    v_Mail_BCC = ""  ' Neu co hay nhap vao
    v_NOI_DUNG_GOI = "NOI DUNG MAIL GOI...."

    ' Create the CDO objects
    Set obj_GOI_MAIL = CreateObject("CDO.Message")
    Set obj_CAU_HINH_MAIL_GOI = CreateObject("CDO.Configuration")

    ' Nap gia tri vao bien obj_CAU_HINH_MAIL_GOI
    With obj_CAU_HINH_MAIL_GOI.Fields
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465 ' Typically 25, 465, or 587
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = v_Tu_Email
        .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "pass mail send"
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True ' Set to True if using SSL
        .Update
    End With

    ' THUC HIEN GOI MAIL
    With obj_GOI_MAIL
        Set .Configuration = obj_CAU_HINH_MAIL_GOI
        .Subject = v_TieuDeMail
        .From = v_Tu_Email
        .To = v_Den_Email
        .CC = v_Mail_CC
        .BCC = v_Mail_BCC
        .TextBody = v_NOI_DUNG_GOI
        .Send
    End With

    ' THONG BAO KHI GOI THANH CONG !
    MsgBox "Email sent successfully!"

    ' DON DEP BO NHO SAU KHI GOI MAIL XONG
    Set obj_GOI_MAIL = Nothing
    Set obj_CAU_HINH_MAIL_GOI = Nothing

 

Bài viết liên quan:

Ví dụ code gởi mail với code VBA Excel mới nhất