View Full Version : سوال: مشكل Indy با فارسي
A.Nemati
یک شنبه 18 مهر 1389, 19:34 عصر
سلام
من از دلفي 7 استفاده ميكنم. در ارسال ايميل، اگر Body فارسي باشه، كاراكترهاي نادرست ارسال ميشه. از Tnt براي يونيكد كردن متن استفاده كردم ولي فايدهاي نداشت. شنيدم كه Indy10 يونيكد را پشتيباني ميكنه. نصبش كردم ولي افاقهاي نكرد. از تركيب Indy10 و Tnt هم استفاده كردم درست نشد.
كم كم دارم به قدرت Indy شك ميكنم.
vcldeveloper
یک شنبه 18 مهر 1389, 22:12 عصر
ربطی به فارسی نداره؛ string در دلفی 7 یونیکد نیست، پس هر داده ایی رو که بریزید در string در دلفی 7، اگر یونیکد باشه، باطل میشه!
استفاده از Indy 10 یا کامپوننت های TNT هم موقعی مفید هست که شما بدونید دارید چیکار می کنید، و بدونید که چطور باید داده های یونیکد خودتان را در یک محیط غیریونیکد حفظ کنید.
اگر اطلاعی از این مسائل ندارید، و صرفا میخواید برنامه تون با فارسی مشکل نداشته باشه، بهتره برید سراغ دلفی 2010 تا درگیر مسائل مربوط به تبدیل یونیکد به ANSI و بالعکس برای همچین کارهای ساده ایی نشید.
A.Nemati
یک شنبه 18 مهر 1389, 22:45 عصر
ممنون. ولي من اصلا نيازي به هيچ واسط يا ذخيره داده براي نگهداري يا حفظ اطلاعات يونيكد در محيط غير يونيكد ندارم. به اين كد نگاه كنيد:
IdMessage.Body.Assign(tntMemoMsg.Lines)
مستقيما از tnt داخل IdMessage ميشه و بعدش هم ارسال ميشه
esmit61
یک شنبه 18 مهر 1389, 23:07 عصر
ربطی به فارسی نداره؛ string در دلفی 7 یونیکد نیست، پس هر داده ایی رو که بریزید در string در دلفی 7، اگر یونیکد باشه، باطل میشه!
یه سوال.وقتی داخل یک رشته ای در دلفی 7 مقدار فارسی میریزیم و مثلاً روی فرم نشونش میدیم،چرا باطل نمیشه. یعنی میخوام بدونم آیا اون داده ها هم یونیکد هستند یا نه ؟
A.Nemati
یک شنبه 18 مهر 1389, 23:40 عصر
خير يونيكد نيستند. كلا دلفي 7 از يونيكد پشتيباني نميكنه. كاراكترهاي فارسي را كه ميبينيد به واسطه ويندوز شماست كه زبان فارسي را پشتيباني ميكند.
vcldeveloper
دوشنبه 19 مهر 1389, 11:58 صبح
مستقيما از tnt داخل IdMessage ميشه و بعدش هم ارسال ميشه
همین دیگه! خصوصیت IdMessage.Body شما در دلفی 7 از چه نوعی هست؟ WideString هست؟ نه، string هست. string هم در دلفی 7 یعنی AnsiString، پس داده یونیکد شما باطل شد!
داده رو به صورت Stream براش بفرستید، یا اینکه، داده را با Base64 کد کنید، و سپس براش بفرستید. البته باید header را هم به درستی تغییر بدید که مشخص باشه شما دارید از Base64 استفاده می کنید.
vcldeveloper
دوشنبه 19 مهر 1389, 12:00 عصر
یه سوال.وقتی داخل یک رشته ای در دلفی 7 مقدار فارسی میریزیم و مثلاً روی فرم نشونش میدیم،چرا باطل نمیشه. یعنی میخوام بدونم آیا اون داده ها هم یونیکد هستند یا نه ؟
اونها داده های ANSI هستند که از CodePage فارسی استفاده می کنند. در صورتی هم درست نمایش داده میشند که در سیستم مقصد، کاربر CodePage فعالش را برای نرم افزارهای غیر یونیکد، بر روی همان زبان مورد نظر شما (فارسی) تنظیم کرده باشه، وگرنه کارکترها به شکل صحیح نمایش داده نمیشند.
A.Nemati
دوشنبه 19 مهر 1389, 12:21 عصر
داده رو به صورت Stream براش بفرستید
چطوري؟
ممكنه يك نمونه بگذاريد؟
vcldeveloper
دوشنبه 19 مهر 1389, 17:22 عصر
ممكنه يك نمونه بگذاريد؟
http://www.barnamenevis.org/forum/showthread.php?t=95075
A.Nemati
سه شنبه 20 مهر 1389, 10:47 صبح
ممنون.
كدي كه در آن تاپيك گذاشته بوديد امتحان كردم. مشكلم حل شد.
البته در ابتدا ايميل ارسالي خالي ميرفت. با حذف بخش message partي كه با MailText درست كرده بوديد و انتصاب مستقيم IdMessage1.Body.Text := EncodedText مشكل حل شد
smakhavan
یک شنبه 25 مهر 1389, 19:23 عصر
سلام آقاي نعمتي
ميشه شما كه كارتون راه افتاد يك sample براي ارسال ايميل بگذارين. من همين مشكل را دارم ولي نتونستم ايميل را بفرستم. البته ميفرسته ولي محتوا مانند زير ميشه:
{\rtf1\fbidis\ansi\ansicpg1256\deff0\deflang1065{\ fonttbl{\f0\fnil\fcharset0 MS Sans Serif;}} \viewkind4\uc1\pard\ltrpar\f0\fs16 TntRichEdit1\par \par }
آقاي كشاورز
يه جاي ديگه نوشته بودين كه با دلفي 2009 و ... كار كنيم. ولي اين براي من ممكن نيست چون يه برنامه عريض و طويل دارم كه با دلفي 7 نوشته شده و همه اون به راحتي قابل انتقال به 2009 نيست. الان هم كارفرما گفته كه ميخواد امكان ارسال ايميل را هم بهش اضافه بكنه.
لطفا اگه ميتونين راهنمايي كنين
vcldeveloper
یک شنبه 25 مهر 1389, 20:53 عصر
البته ميفرسته ولي محتوا مانند زير ميشه:
خب، شما دارید متن RTF ارسال میکنید، نه Plain Text. احتمالا متن رو در RichEdit نوشتید، و دارید از RichEdit به صورت Stream می خونید. این کدهایی هم که می بینید، تگ های فرمت RTF هستند.
يه جاي ديگه نوشته بودين كه با دلفي 2009 و ... كار كنيم. ولي اين براي من ممكن نيست چون يه برنامه عريض و طويل دارم كه با دلفي 7 نوشته شده و همه اون به راحتي قابل انتقال به 2009 نيست.
آقای نعمتی هم کدشان را از دلفی 7 به نسخه های بالاتر انتقال ندادند، بلکه با همان دلفی 7 مشکل شان حل شد.
smakhavan
دوشنبه 26 مهر 1389, 09:57 صبح
خيلي ممنون آقاي كشاورز :لبخندساده:
درست شد ولي هنوز عنوان )subject) را فارسي نميفرسته، يعني دقيقا همان متن كد شدهاي را كه براي متن پيام ميگذارم و درست نمايش ميده براي عنوان ايميل درست نمايش نميدهد!! :افسرده:
vcldeveloper
دوشنبه 26 مهر 1389, 12:30 عصر
ولي هنوز عنوان )subject) را فارسي نميفرسته
درباره Subject فارسی در ایمیل در همین تالار یک تاپیک دیگه هست.
smakhavan
دوشنبه 03 آبان 1389, 08:05 صبح
سلام آقاي كشاورز
همه چيز درست شد. دستتون درد نكنه فقط يه موردي ميمونه اونهم اينكه وقتي يه فايل Attach ميكنم متن ميريزه به هم :عصبانی++:
من از دستور زير براي پيوست كردن فايل استفاده ميكنم. درسته يا نه؟
TIdAttachment.Create(IdMessage1.MessageParts, 'c:\a.jpg') ;
smakhavan
سه شنبه 04 آبان 1389, 08:12 صبح
لطفا اگه كسي ميدونه راهنمايي ام كنه، خيلي كار فوريه
وقتي يك پيوست براي فايل ايجاد ميكند متن به صورت
//5UAG4AdABSAGkAYwBoAEUAZABpAHQAMQANAAoA
در مياد. واقعا نميدونم چه كار كنم
vcldeveloper
سه شنبه 04 آبان 1389, 12:23 عصر
لطفا اگه كسي ميدونه راهنمايي ام كنه، خيلي كار فوريه
وقتي يك پيوست براي فايل ايجاد ميكند متن به صورت
//5UAG4AdABSAGkAYwBoAEUAZABpAHQAMQANAAoA
در مياد. واقعا نميدونم چه كار كنم
به نظر Base64 میاد. ببینید؛ برای همچین کارهایی باید حداقل با پروتکل های مربوطه آشنا باشید. انتظار نداشته باشید که همیجوری با نوشتن یک دستور همه کارها به طور خودکار براتون انجام بشه. وقتی از Attachment استفاده می کنید، دیگه ایمیل تون Plain Text نیست، بلکه میشه Multi-part. حالا هر Part میتونه یا Text باشه، یا Attachment، و هر Part هم میتونه Encoding و MIME Type خودش را داشته باشه. نرم افزار گیرنده هم بر اساس نوع Encoding و Type تعریف شده برای هر Part، آن را پردازش میکنه. مثلا اگر مطلبی به صورت Base64 اینکود شده باشه، اون را با یک Decoder مربوط به Base64 دیکود میکنه، تا به داده اصلی برسه.
smakhavan
سه شنبه 04 آبان 1389, 16:37 عصر
خيلي ممنون از اينكه جواب ميدين
بله درست ميفرماييد اون متن كه گذاشتم base64 هستش و با استفاده از روشي كه در يك تاپيك ديگه مطرح كرده بودين تبديل ميشه
مشكل من هم همينه كه نميدونم چرا اين اضافه شدن فايل پيوست تاثير بر روي اصل پيام ميگذاره و نميتونم بفهمم. چون خيلي تو اين موارد سر رشته اي ندارم از دوستان ميخواستم ببينم كسي با اين مشكل برخورد كرده يا نه.
نمونه برنامه اي كه با اول ايميل ارسال ميكنم هم پيوست شده است
خيلي خوشحال ميشم اگه بتونه كسي بهم كمك بكنه
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.