แอปคอนโซล C# ของฉันกำลังอ่านผู้รับจากไฟล์ .csv ซึ่งบันทึกด้วยชุดอักขระ UTF-8 และมีตัวอักษรพิเศษ (ตัวอักษรจีน ö ä ฯลฯ) ขณะนี้สร้างไฟล์ .msg โดยการสร้าง MailItem และหลังจากตั้งค่า MailItemObject.To และ MailItemObject.Body และการใช้ MailItemObject.SaveAs ก็ทำงานได้ดี แต่แสดงอักขระพิเศษไม่ถูกต้อง
ไฟล์ใน windows explorer มีลักษณะดังนี้:
และร่างกายก็เพิกเฉยต่ออักขระพิเศษ:
เมื่ออ่าน/เขียนไฟล์ .csv ฉันใช้ Streamwriter/Streamreader และสามารถตั้งค่า Encoding.UTF8 ซึ่งทำงานได้ดีเช่นกัน แอปคอนโซลนี้ยังสร้างไฟล์ .xlsx จากข้อมูลที่อ่านจากไฟล์ .csv และมันก็ใช้ได้ดีเช่นกัน
รหัสของฉัน:
Outlook.MailItem oMsg = (Outlook.MailItem)oOL.CreateItem(Outlook.OlItemType.olMailItem);
oMsg.Subject = "Test";
string recipient = "";
foreach (string s in recipients)
{
recipient += s;
recipient += "; ";
}
oMsg.To = recipient;
string cc = "";
foreach (string s in incopy)
{
cc += s;
cc += "; ";
}
oMsg.CC = cc;
foreach (string s in stringcountries)
{
for (int i = 0; i < Directory.GetFiles(Directory.GetCurrentDirectory() + "\\outputfiles\\excel", "*" + s + "*").Length; i++)
{
oMsg.Attachments.Add(Directory.GetFiles(Directory.GetCurrentDirectory() + "\\outputfiles\\excel", "*" + s + "*")[i]);
}
}
string body = "";
oMsg.Body = body;
oMsg.SaveAs(path + recipientnames[0] + ".msg");
ความช่วยเหลือใด ๆ ที่ชื่นชมอย่างมาก ขอบคุณ!
แก้ไข: ถ้าฉันฮาร์ดโค้ดอักขระพิเศษเช่น ö ลงในซอร์สโค้ดมันจะแสดงอย่างถูกต้องทั้งในชื่อไฟล์และเนื้อหาจดหมาย สิ่งนี้ช่วยปัญหาของฉันได้หรือไม่? ถ้าเป็นเช่นนั้นมีใครช่วยชี้ทิศทางที่ถูกต้องให้ฉันได้ไหม
oMsg.To = String.Join(';', recipients)+"; ";
- person Palle Due   schedule 18.02.2021type
param เป็น olMSGUnicode ได้ คุณลองแล้วหรือยัง? - person Fildor   schedule 18.02.2021