09/10/2018, 18:08

Co ban nao goi mail ma subject bang Tieng Viet hay Tieng Nhat khong ?

Co ban nao goi mail ma subject bang Tieng Viet hay Tieng Nhat khong ?
jiSh@n viết 20:19 ngày 09/10/2018
Dùnh Unicode thì gửi được tất, thậm chí Sender còn dùng tiếng Campuchi cũng được.
pixelart viết 20:14 ngày 09/10/2018
Tiếng việt thì biết, còn JP thì pó tay
nn_future viết 20:08 ngày 09/10/2018
Các bạn có thể nói rõ hơn được không ? Thanks
hoangleo viết 20:18 ngày 09/10/2018
Thi trang web khi design có kèm theo Tag sau:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

------------------
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>

<body>

</body>
</html>
------------------

thì mọi thông tin trên trang (nếu có form va text input) đều dùng Unicode, mà đã là Unicode thì mọi máy có font Unicode đều đọc được, mà trong Unicode thì có vô số ngôn ngữ... khỏi sỡ tiếng Nhật hay tiếng Ả Rập chứ nói gì tiếng Việt...

Nhưng khi hiện ra IE thì nếu nó không hiện đúng ngôn ngữ thì nhớ chọn menu View/Encoding/Unicode (UTF-8).
nn_future viết 20:09 ngày 09/10/2018
Y cua minh la khi goi mai di thi nguoi nhan phai nhan bang TV hay Tieng Nhat kia chu dau phai xem tren IE ma outlook kia
hoangleo viết 20:09 ngày 09/10/2018
Thì Outlook cũng gần giống với IE... Nó cũng có chức năng View/Coding/Unicode (UTF-8)... những gì IE làm thì trong Outlook hoàn toàn giống vậy... nói chung bạn dùng font Unicode khi soạn thư (có VietKey2000 hỗ trợ nhé), dùng font Arial
pixelart viết 20:09 ngày 09/10/2018
$headers = "Content-type: text/html; charset=UTF-8";

sau đó bạn thêm cái $headers trong hàm gửi mail là ok à . Nó sẽ tự chuyển sang utf-8 cho bạn
White Rose viết 20:15 ngày 09/10/2018
Mặc dủ Unicode có thể biểu diễn nhiều ngôn ngữ nhưng sử dụng nó trong email không phải là dễ do có rất nhiều kiểu encoding khác nhau được sử dụng. Hơn thế, bản thân dữ liệu thô của email chỉ đơn thuần ở dạng ASCII nên việc hiển thị các kí tự như tiếng Việt, tiếng Trung... càng khó hơn nhiều. Như bạn nào nói là "Dùnh Unicode thì gửi được tất, thậm chí Sender còn dùng tiếng Campuchi cũng được" thì chắc là chưa thử gửi dữ liệu như vậy (tất nhiên ý mình nói là lập trình để gửi chứ không phải là sử dụng các chương trình có sẵn như Outlook).
Bạn không nói rõ bạn gửi email từ đâu (asp, php, asp.net, ...). Vì thế khó có thể trả lời rõ ràng được. Tuy nhiên, nếu gửi đi từ php hay asp (sử dụng CDONTS) thì tiếng việt hiện ở subject chắc là khó thực hiện ngoài việc để nó ở dạng Windows-1252. Với asp.net, sử dụng MailMessage class mình chưa thử nhưng chưa chắc đã được do phần header trong giao thức SMTP chỉ cho phép sử dụng một phần trong bộ kí tự ASCII.
Nếu bạn lập trình trực tiếp với dữ liệu thô thì có thể sử dụng cách thức mà các chương trình như Outlook thực hiện. Phần subject được encoding theo một dịnh dạng đặc biệt, kiểu encoding được chỉ ra ở đầu, tiếp theo sau là cách mã hóa. Ví dụ:
=?utf-8?q?.....?= (phần .... là dữ liệu đã xử lý)
như ở trên là dữ liệu sử dụng mã hóa quote-printable (q), encoding là utf-8
ngoài quote-printable còn có base64 (b), bit7, bit8, XUUEncode...
Bạn hoàn toàn có thể hiển thị tiếng việt theo dạng này ở bất kì đâu (asp, php, ...) bằng cách xử lý chuỗi theo cách trên rồi gán cho subject kết quả đã xử lý (=?utf-8?q?.....?=).
Thi trang web khi design có kèm theo Tag sau:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
Thì Outlook cũng gần giống với IE... Nó cũng có chức năng View/Coding/Unicode (UTF-8)... những gì IE làm thì trong Outlook hoàn toàn giống vậy... nói chung bạn dùng font Unicode khi soạn thư (có VietKey2000 hỗ trợ nhé), dùng font Arial
Cho dù thiết lập Content-Type chưa chắc đã hiển thị được tiếng Việt nếu thực sự dữ liệu dạng ở dạng utf-8 bởi vì mặc định encoding không được thiết lập dạng dạng này (trừ asp.net là default). Content-Type cũng có nhiều phạm vi khác nhau. Chẳng hạn bạn thiết lập Content-Type là utf-8, dữ liệu cũng là utf-8 luôn nhưng trong email, Content-Type để transfer đi lại là utf-7 chẳng hạn (định dạng email xem trong RFC822) thì dữ liệu trông sẽ rất buồn cười.
$headers = "Content-type: text/html; charset=UTF-8";

sau đó bạn thêm cái $headers trong hàm gửi mail là ok à . Nó sẽ tự chuyển sang utf-8 cho bạn
Thiết lập này trong PHP cũng chỉ có tác dụng ở mức client và hoàn toàn vô tác dụng nếu như dữ liệu mà server xử lý rồi chuyển về không ở dịnh dạng utf-8.

Một số hiểu biết của mình trong quá trình thực hiện hệ thống Webmail tiếng Việt. Có gì trao đổi thêm.

Note:
Nếu có ý định tìm hiểu sâu thì nên tham khảo các reference về email như RFC822 (ngoài ra có thể xem các RFC về POP3, SMTP...)
Bài liên quan
0