Gửi email với nội dung là chữ có dấu (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

MinhKhai

Giải pháp Ếc-xào
Tham gia
16/4/08
Bài viết
941
Được thích
572
Chào anh/chị
Em mới sưu tầm được đoạn code VBS để gửi email. Tuy nhiên hiện tại mới chỉ gửi được với nội dung là chữ không dấu.
Nhờ các anh chị mách cách để gửi email với script trong file đính kèm mà nội dung có thể là chữ tiếng Việt có dấu không ?
Em cảm ơn
 

File đính kèm

Em xem cách chuyển mã Unicode bằng ChrW của hoặc hàm UNC trên diễn đàn í.
 
Em xem cách chuyển mã Unicode bằng ChrW của hoặc hàm UNC trên diễn đàn í.
Cảm ơn anh đã gợi ý
Cách dùng ChrW em vừa thử, nhưng không có tác dụng
Còn cách dùng hàm UNC thì em chưa biết vận dụng vào file .vbs như thế nào. Em hướng dẫn thêm giúp em nhé
 
Cảm ơn anh đã gợi ý
Cách dùng ChrW em vừa thử, nhưng không có tác dụng
Còn cách dùng hàm UNC thì em chưa biết vận dụng vào file .vbs như thế nào. Em hướng dẫn thêm giúp em nhé
Nhầm đường rồi. ChrW và UNC không giúp được đâu.

Không phải là ChrW. Bạn dùng ChrW trong VBE vì VBE không hỗ trợ unicode. Tức bạn không thể copy/paste văn bản unicode vào cửa sổ soạn thảo code. Cũng không tự gõ được văn bản unicode trong cửa sổ soạn thảo code. Vì thế phải dùng ChrW.

Trong cửa sổ soạn thảo VBS bạn có thể gõ văn bản unicode cơ mà. Vd. mở notepad và viết code. Thì bạn nhìn VBS của mình thì thấy là bạn đã gõ unicode. Chuyện của bạn không phải là KHÔNG GÕ ĐƯỢC UNICODE nên phải chờ cứu tinh ChrW, mà là nội dung gửi đi lại không là unicode. Tức vấn đề của bạn là ENCODING MAIL. Hiện ENCODING là ANSI. Muốn nội dung gửi đi và nhận được là unicode thì phải, vd. trước dòng
Mã:
oMsg.Subject  = "Xin chào mọi người"

thì thêm dòng
Mã:
oMsg.bodypart.Charset = "utf-8"

Dòng trên là quyết định.
-------------
Nếu là tôi thì tôi dùng server của gmail, port 465, và smtpusessl = True
Mã:
Const schema   = "http://schemas.microsoft.com/cdo/configuration/"
    Const cdoBasic = 1
    Const cdoSendUsingPort = 2
    Dim oMsg, oConf, resultMessage
  
    ' E-mail properties
    Set oMsg      = CreateObject("CDO.Message")
    oMsg.From     = "Boss <siwtomgigido@gmail.com>"
    oMsg.To = "siwtomgigido@yahoo.com"
     
    ' SMTP server configuration and authentication info
    Set oConf = oMsg.Configuration
    oConf.Fields(schema & "smtpserver")       = "smtp.gmail.com"
    oConf.Fields(schema & "smtpserverport")   = 465
    oConf.Fields(schema & "sendusing")        = cdoSendUsingPort
    oConf.Fields(schema & "smtpauthenticate") = cdoBasic         'authentication type
    oConf.Fields(schema & "smtpusessl")       = True
    oConf.Fields(schema & "sendusername")     = "siwtomgigido@gmail.com"
    oConf.Fields(schema & "sendpassword")     = "matkhaucuasiwtom"
    oConf.Fields.Update()

    oMsg.bodypart.Charset = "utf-8"
    oMsg.Subject  = "Xin chào mọi người"
                  
    oMsg.TextBody = "Với 435/453 đại biểu tán thành, Quốc hội đã thông qua Luật Lao động sửa đổi hôm 20/11." & vbNewline & "Theo đó, từ năm 2021, tuổi nghỉ hưu của lao động sẽ tăng theo lộ trình: 3 tháng tuổi hưu/năm với nam và 4 tháng tuổi hưu/năm với nữ, cho tới khi tuổi hưu của nam đạt 62 và nữ đạt 60"
    oMsg.Send()

Tất nhiên phải sửa

oMsg.From
oMsg.To
oConf.Fields(schema & "sendusername")
oConf.Fields(schema & "sendpassword")

cho đúng với thông tin của mình.
 
Nhầm đường rồi. ChrW và UNC không giúp được đâu.

Không phải là ChrW. Bạn dùng ChrW trong VBE vì VBE không hỗ trợ unicode. Tức bạn không thể copy/paste văn bản unicode vào cửa sổ soạn thảo code. Cũng không tự gõ được văn bản unicode trong cửa sổ soạn thảo code. Vì thế phải dùng ChrW.

Trong cửa sổ soạn thảo VBS bạn có thể gõ văn bản unicode cơ mà. Vd. mở notepad và viết code. Thì bạn nhìn VBS của mình thì thấy là bạn đã gõ unicode. Chuyện của bạn không phải là KHÔNG GÕ ĐƯỢC UNICODE nên phải chờ cứu tinh ChrW, mà là nội dung gửi đi lại không là unicode. Tức vấn đề của bạn là ENCODING MAIL. Hiện ENCODING là ANSI. Muốn nội dung gửi đi và nhận được là unicode thì phải, vd. trước dòng
Mã:
oMsg.Subject  = "Xin chào mọi người"

thì thêm dòng
Mã:
oMsg.bodypart.Charset = "utf-8"

Dòng trên là quyết định.
-------------
Nếu là tôi thì tôi dùng server của gmail, port 465, và smtpusessl = True
Mã:
Const schema   = "http://schemas.microsoft.com/cdo/configuration/"
    Const cdoBasic = 1
    Const cdoSendUsingPort = 2
    Dim oMsg, oConf, resultMessage
 
    ' E-mail properties
    Set oMsg      = CreateObject("CDO.Message")
    oMsg.From     = "Boss <siwtomgigido@gmail.com>"
    oMsg.To = "siwtomgigido@yahoo.com"
    
    ' SMTP server configuration and authentication info
    Set oConf = oMsg.Configuration
    oConf.Fields(schema & "smtpserver")       = "smtp.gmail.com"
    oConf.Fields(schema & "smtpserverport")   = 465
    oConf.Fields(schema & "sendusing")        = cdoSendUsingPort
    oConf.Fields(schema & "smtpauthenticate") = cdoBasic         'authentication type
    oConf.Fields(schema & "smtpusessl")       = True
    oConf.Fields(schema & "sendusername")     = "siwtomgigido@gmail.com"
    oConf.Fields(schema & "sendpassword")     = "matkhaucuasiwtom"
    oConf.Fields.Update()

    oMsg.bodypart.Charset = "utf-8"
    oMsg.Subject  = "Xin chào mọi người"
                 
    oMsg.TextBody = "Với 435/453 đại biểu tán thành, Quốc hội đã thông qua Luật Lao động sửa đổi hôm 20/11." & vbNewline & "Theo đó, từ năm 2021, tuổi nghỉ hưu của lao động sẽ tăng theo lộ trình: 3 tháng tuổi hưu/năm với nam và 4 tháng tuổi hưu/năm với nữ, cho tới khi tuổi hưu của nam đạt 62 và nữ đạt 60"
    oMsg.Send()

Tất nhiên phải sửa

oMsg.From
oMsg.To
oConf.Fields(schema & "sendusername")
oConf.Fields(schema & "sendpassword")

cho đúng với thông tin của mình.
oMsg.bodypart.Charset = "utf-8"
với 1 dòng ngắn này của anh, bài toán em cần đã được giải. Em cảm ơn anh rất nhiều
Chúc anh sức khỏe
 
Mình muốn nhờ bạn BATMAN1 hay MINH KHAI post lên diễn đàn file gửi email từ server gmail đã có đoạn gửi tiếng Việt có dấu. file nén bên trên mình không mở được.
 
Mình muốn nhờ bạn BATMAN1 hay MINH KHAI post lên diễn đàn file gửi email từ server gmail đã có đoạn gửi tiếng Việt có dấu. file nén bên trên mình không mở được.
Thì tôi đã cung cấp ở bài #4 rồi còn gì.

Tất cả những gì dưới dòng

Nếu là tôi thì tôi dùng server của gmail, port 465, và smtpusessl = True

thì chính là nội dung của VBS
 
Mình không rành về VBS, bạn gửi hẳn file cho mình tham khảo code được không.
Cảm ơn
 
Mình không rành về VBS, bạn gửi hẳn file cho mình tham khảo code được không.
Cảm ơn
Dâng tận nơi mà vẫn không biết dùng sao?

Nếu bạn muốn dùng server gmail để gửi thư tới địa chỉ vd. anhdepjai@yahoo.com thì:
1. Hãy lập tài khoản gmail. Bạn sẽ có tài khoản vd. xyz@gmail.com, mật khẩu đăng nhập vd. là "secretpassword"

2. Mở notepad và chép nội dung ở dưới vào notepad.
Mã:
Const schema   = "http://schemas.microsoft.com/cdo/configuration/"
    Const cdoBasic = 1
    Const cdoSendUsingPort = 2
    Dim oMsg, oConf, resultMessage
 
    ' E-mail properties
    Set oMsg      = CreateObject("CDO.Message")
    oMsg.From     = "Boss <siwtomgigido@gmail.com>"
    oMsg.To = "siwtomgigido@yahoo.com"
    
    ' SMTP server configuration and authentication info
    Set oConf = oMsg.Configuration
    oConf.Fields(schema & "smtpserver")       = "smtp.gmail.com"
    oConf.Fields(schema & "smtpserverport")   = 465
    oConf.Fields(schema & "sendusing")        = cdoSendUsingPort
    oConf.Fields(schema & "smtpauthenticate") = cdoBasic         'authentication type
    oConf.Fields(schema & "smtpusessl")       = True
    oConf.Fields(schema & "sendusername")     = "siwtomgigido@gmail.com"
    oConf.Fields(schema & "sendpassword")     = "matkhaucuasiwtom"
    oConf.Fields.Update()

    oMsg.bodypart.Charset = "utf-8"
    oMsg.Subject  = "Xin chào mọi người"
                 
    oMsg.TextBody = "Với 435/453 đại biểu tán thành, Quốc hội đã thông qua Luật Lao động sửa đổi hôm 20/11." & vbNewline & "Theo đó, từ năm 2021, tuổi nghỉ hưu của lao động sẽ tăng theo lộ trình: 3 tháng tuổi hưu/năm với nam và 4 tháng tuổi hưu/năm với nữ, cho tới khi tuổi hưu của nam đạt 62 và nữ đạt 60"
    oMsg.Send()

3.
- sửa
Mã:
oMsg.From     = "Boss <siwtomgigido@gmail.com>"
thành
Mã:
oMsg.From     = "Boss <xyz@gmail.com>"
Thay Boss bằng gì đó mình thích.

- sửa
Mã:
oMsg.To = "siwtomgigido@yahoo.com"
thành
Mã:
oMsg.To = "anhdepjai@yahoo.com"

- sửa
Mã:
oConf.Fields(schema & "sendusername")     = "siwtomgigido@gmail.com"
thành
Mã:
oConf.Fields(schema & "sendusername")     = "xyz@gmail.com"

- sửa
Mã:
oConf.Fields(schema & "sendpassword")     = "matkhaucuasiwtom"
thành
Mã:
oConf.Fields(schema & "sendpassword")     = "secretpassword"

- sửa "Xin chào mọi người" thành cái của mình.

- sửa "Với 435/453 đại biểu ... và nữ đạt 60" thành nội dung của mình.

4. Lưu lại vd. trên Desktop với tên vd. gui thu.vbs

Khi kích hoạt gui thu.vbs trên desktop thì thư sẽ được gửi tới anhdepjai@yahoo.com.
 
Web KT

Bài viết mới nhất

Back
Top Bottom