PDA

View Full Version : مشکل بهم ریختن متن فارسی و انگلیسی در Textbox زمانی که ایمیل فرستاده میشه



Hadi-Hashemi
پنج شنبه 05 فروردین 1395, 07:19 صبح
سلام دوستان خسته نباشید

من توی برنامه ام یه قسمتی دارم به اسم ارتباط با ما و متنی رو که کاربر توی textbox مینویسه رو به ما ایمیل میزنه.

حالا یه مشکلی که دارم اینه که وقتی با دو زبان فارسی و انگلیسی متنی نوشته میشه توی ایمیل بهم میخوره ولی توی textbox مشکلی نیست.

برای درک بهتر یه عکس میزارم - اگه دوستان لطف کنن راهنمایی کنن ممنون میشم.


139700



خب دوستان همونطور که میبینید توی برنامه مشکلی ندارم ولی توی ایمیل متن بهم میریزه. ضمنا با RichTextBox هم امتحان کردم.

مهدی کرامتی
پنج شنبه 05 فروردین 1395, 17:59 عصر
اگر فرمت ایمیل ارسالی تون HTML است می توانید اولش یک کاراکتر right to left mark یا همان ‏ قرار دهید تا در همه جا درست نمایش داده شود. اگر هم فرمت ایمیل تون Plain Text است می توانید کد یونیکد کاراکتر فوق را در ابتدای متن تان درج کنید.

Hadi-Hashemi
پنج شنبه 05 فروردین 1395, 18:09 عصر
با تشکر فراوان از جوابتون :لبخندساده:

کدی که نوشتم اینه:




try
{
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");

mail.From = new MailAddress("hadi@gmail.com");
mail.To.Add("hadi@gmail.com");
mail.Subject = txtKonu.Text + "HC-05 v1.0";
mail.Body = txtMail.Text + "\r\n" + txtIcerik.Text;

SmtpServer.Port = 587;
SmtpServer.EnableSsl = true;
SmtpServer.UseDefaultCredentials = false;
SmtpServer.Credentials = new System.Net.NetworkCredential("hadi", "12345");

SmtpServer.Send(mail);
}
catch (Exception)
{
//...
}



این فرمت html ایمیل که فرمودین رو به کجا اضافه کنم. البته من کد زیر رو اضافه کرده بودم ولی چون دیدم تاثیری نداره حذفش کردم.



mail.BodyEncoding = Encoding.UTF8;

Hadi-Hashemi
یک شنبه 08 فروردین 1395, 14:01 عصر
!up

!up

!up

!up

!up

moradian
دوشنبه 09 فروردین 1395, 12:37 عصر
سلام سطر:


mail.Body = txtMail.Text + "\r\n" + txtIcerik.Text;

را به شکل زیر تغییر بده:


mail.Body = '\u202B' + txtMail.Text + "\r\n" + txtIcerik.Text;

در HTML نیز کاراکتر &rle; رو باید اضافه نمود (Right-to-Left Embedding) !
راستی، واسط ایمیلت چرا به زبان ترکی استانبولیه؟! (Türk Dili bilirsin)?

Hadi-Hashemi
دوشنبه 09 فروردین 1395, 13:07 عصر
خطا میده دوست من

139757

moradian
دوشنبه 09 فروردین 1395, 13:27 عصر
تست نکرده بودم. پست قبلی رو ویرایش و اصلاح کردم:
جهت HTML:

&rle;
و جهت کد سی شارپ هم:

'\u202B'
به ابتدای متن باید اضافه بشه.
موفق باشید

Hadi-Hashemi
دوشنبه 09 فروردین 1395, 13:52 عصر
دوست عزیز ممنون - چون شما ارسالتون رو بعد از نوشته من ویرایش کردین متوجه تغییرات نشدم.

مشکل تا حدودی حل شد. تا حدودی میگم چون الان با این کد هیچ تغییری نمیکنه. فکر کنم بخاطر اون "\r\n" باشه که استفاده کردم.

چون وقتی به این صورت تغییر میدم درست میشه.



mail.Body = '\u202B' + txtIcerik.Text


حالا یه سوال: من اگه بخوام هم از '\u202B' استفاده کنم هم بتونم بعضی وقتا برم خط بعدی چیکار کنم؟



راستی، واسط ایمیلت چرا به زبان ترکی استانبولیه؟! (Türk Dili bilirsin)?

چون زیان ویندوزم ترکی هستش اوتوماتیک اونم ترکی شده - ?Evet biliyorum, ya siz

nurani
دوشنبه 09 فروردین 1395, 14:44 عصر
دوست عزیز ممنون - چون شما ارسالتون رو بعد از نوشته من ویرایش کردین متوجه تغییرات نشدم.

مشکل تا حدودی حل شد. تا حدودی میگم چون الان با این کد هیچ تغییری نمیکنه. فکر کنم بخاطر اون "\r\n" باشه که استفاده کردم.

چون وقتی به این صورت تغییر میدم درست میشه.



mail.Body = '\u202B' + txtIcerik.Text


حالا یه سوال: من اگه بخوام هم از '\u202B' استفاده کنم هم بتونم بعضی وقتا برم خط بعدی چیکار کنم؟



چون زیان ویندوزم ترکی هستش اوتوماتیک اونم ترکی شده - ?Evet biliyorum, ya siz


message.Body = txtmessage1.Text + "<br />" + "<br />" + "<br />" + txtmessage2.Text.ToString();

بنده ایمیل دریافتی رو از طریق برنامه وین 10 باز می کنم و کد بالا سطر رو پایین انداخته نشون میده

Hadi-Hashemi
دوشنبه 09 فروردین 1395, 14:55 عصر
جواب نداد مهندس :ناراحت:

CsharpNevisi
دوشنبه 09 فروردین 1395, 16:56 عصر
اول اینو به کدات اضافه کن
mail.IsBodyHtml = true;
آزمایشی هم این متن رو بفرست :

<div style'direction:rtl;'>سلام .. <br /> من یک متن آزمایشی (Test) هستم</div>

هرجا خواستی بری خط بعدی از تگ زیر استفاده کن

<br />

Hadi-Hashemi
دوشنبه 09 فروردین 1395, 19:41 عصر
اول اینو به کدات اضافه کن
mail.IsBodyHtml = true;
آزمایشی هم این متن رو بفرست :

<div style'direction:rtl;'>سلام .. <br /> من یک متن آزمایشی (Test) هستم</div>

هرجا خواستی بری خط بعدی از تگ زیر استفاده کن

<br />


خب اینطوری که '\u202B' از کار میوفته

CsharpNevisi
سه شنبه 10 فروردین 1395, 06:24 صبح
خب تو متن داری به جاش دایرکشن میدی دیگه

style'direction:rtl;'