# Native Code > برنامه نویسی در Delphi > توسعه نرم افزارهای تحت شبکه > سوال: درخواست کد برای ارسال ایمیل با Indy 10 و استفاده از سرویس gmail

## BORHAN TEC

سلام :قلب: 

من کدی می خواهم که با استفاده از آن بتوان یک ایمیل را از طریق Indy 10 و استفاده از سرویس gmail ارسال کرد. من کدهای زیادی را در این رابطه تست کرده ام که متأسفانه هیچ کدام از آن ها نمی توانست این کار را انجام دهد.
 لطفاً دوستانی که کد این برنامه را دارند در این تاپیک آپلود کنند.
 لطفاً برنامه ای را قرار دهید که به درستی کار می کند.

با تشکر :لبخند گشاده!:

----------


## BORHAN TEC

لطفاً یکی راهنمایی کنه.  :افسرده:

----------


## vog1351

من هم زیاد دنبالش گشتم ولی یه سوال؟ چرا Indy ؟ شاید راحت باشه یه فرم html یا PHP  درست بشه و کاربر با یه دگمه به اون منتقل بشه ! ارسال میل با اونا راحت تره

----------


## BORHAN TEC

> من هم زیاد دنبالش گشتم ولی یه سوال؟ چرا Indy ؟ شاید راحت باشه یه فرم html یا PHP درست بشه و کاربر با یه دگمه به اون منتقل بشه ! ارسال میل با اونا راحت تره


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

----------


## ahmad_eagle2002

http://www.indyproject.org/sockets/demos/index.en.aspx
از آدرس بالا  IdPOP3 / IdSMTP / IdMessage را نگاه کن خیلی راحت باید جواب بگیری

----------


## ghasemshami

این یه نمونه خیلی عالی هستش
با دلفی 2010 و Indy 10
ارسال ایمیل فارسی هم انجام میده
http://www.plunder.com/Send-Email-ra...f79988b69e.htm" target="_blank" title="برای دانلود اینجا را کلیک کنید">

----------


## BORHAN TEC

> این یه نمونه خیلی عالی هستش
> با دلفی 2010 و Indy 10
> ارسال ایمیل فارسی هم انجام میده
> http://www.plunder.com/Send-Email-ra...f79988b69e.htm target="_blank" title="برای دانلود اینجا را کلیک کنید">


لطفاً لینک را دوباره قرار دهید

----------


## Delphi 2010

لینک دانلود اصلاح شد
از دوستان عزیز و مدیریت تقاضا مندیم اجازه بدن لینک دانلود بزاریم و تاپیک رو قفل نکن
این قانون بدی هستش

http://uploadtak.com/images/jr7tbr4fny9md4k7apd.rar

تشکر یاتون نره

----------


## BORHAN TEC

سلام
من موقعی که در کادر Mail Server عبارت smtp.gmail.com رو تایپ می کنم و بر روی دکمه "تست اتصال" کلیک می کنم عبارت connect رو می بینم و موقعی که بر روی دکمه "ارسال" کلیک می کنم با خطای زیر مواجه می شوم.
---------------------------
Sendemail
---------------------------
Must issue a STARTTLS command first. l1sm1271514bkl.13


---------------------------
OK   
---------------------------

برای رفع این مشکل چه کنم؟؟؟

----------


## Delphi 2010

خب شما تابعی به برنامت اضافه کن که روی کامپوننت Indy روی فرم موجود است
مقدار پورت Indy رو به 25 تغییر بده


اگر بازم مشکلی داشتید حتما بگید

----------


## BORHAN TEC

> مقدار پورت Indy رو به 25 تغییر بده


مقدار خاصیت port بر روی 25 است ولی باز هم مشکل قبلی را دارم.

----------


## Vahid.Shatery

سلام
من این نمونه برنامه را از همین سایت گرفتم . جواب داد .
امیدوارم به دردتون بخوره .
http://30morghsms.com/SendMail.rar

----------


## BORHAN TEC

> من این نمونه برنامه را از همین سایت گرفتم . جواب داد .


من نمیدونم چرا این برنامه برای دیگران کار می کنه ولی برای من نه!!!  :متفکر: 
من چندین روزه که بالا میروم و پایین می آیم ولی هنوز موفق به ارسال ایمیل نشده ام.  :خیلی عصبانی:

----------


## Vahid.Shatery

از اینترنت ADSL استفاده می کنین ؟
از چه شرکتی ؟
پورت 587 را هم تست کنید .
چون شاتل و چند تا از شرکت های ارائه دهنده خدمات اینترنت از این پورت استفاده می کنن .

----------


## AliReza Vafakhah

من هم تست زدم کار نکرد

----------


## BORHAN TEC

نمیدونم مشکل از چیه. حتی در شماره جدید مجله Blaise Pascal یعنی شماره 15 هم دقیقاً همین برنامه مورد بررسی قرار گرفته و به عنوان یک برنامه ارسال کننده ایمیل معرفی شده!!!  :متعجب: 



> از اینترنت ADSL استفاده می کنین ؟


بلی



> از چه شرکتی ؟


فعلاً صبانت



> پورت 587 را هم تست کنید .


تست کردم، ولی باز هم نشد که نشد...  :افسرده:

----------


## vcldeveloper

فکر کنم چند ده بار من خودم درباره ارسال ایمیل از طریق GMail اینجا جواب دادم، و اگر اشتباه نکنم، نمونه کد هم قرار دادم.

اولا، پورت شما ربطی به ISP نداره که یکی میگه فلان ISP از فلان پورت استفاده میکنه، یکی دیگه میگه اون یکی ISP از یه پورت دیگه! پورت اتصال را سرویس دهنده ایمیل شما مشخص میکنه. هر پورتی که سرویس دهنده ایمیل گفت، شما هم به همون پورت وصل میشید.

ثانیا، GMail نیاز به اتصال SSL داره، پس باید فایل های OpenSSL مورد نیاز پروژه تون رو در مسیری که برنامه بتونه پیدا کنه، قرار بدید، و Indy رو هم تنظیم کنید که از طریق SSL متصل بشه. SSL هم تنظیمات خودش را داره، و باید ببینید سرویس دهنده ایمیل شما دقیقا چه تنظیماتی را پشتیبانی میکنه، و برنامه تان را هم به همان شکل تنظیم کنید.

چون قبلا چند بار توضیح دادم، اینجا دوباره تکرار نمی کنم.

موفق باشید

----------


## BORHAN TEC

سلام

تمام تاپیکهای موجود رو زیر و رو کردم(مطالب این سایت، نکات مارکو کانتو، مستندات گوگل و ...) ولی هنوز به نتیجه نرسیده ام. لطفا کد برنامه را قرار بدهید. در ضمن ذکر کنید که از کدام نسخه ssleay32.dll و libeay32.dll استفاده می کنید.

با تشکر

----------


## vcldeveloper

----------

----------


## عقاب سیاه

ببخشيد آقاي كشاورز
با اين كه متن پيام  utf8  كد ميشه ولي موقع دريافت متن درست نيست!!
مثلا با حرف ي مشكل دارد.
untitled.PNG

چجوري ميشه فونت اين ميل را عوض كرد؟؟


براي اين كه پيام هاي صندوق gmail قابل دريافت باشه بايد چه تغييراتي اجياد كرد!؟

----------


## vcldeveloper

فونت ایمیل ارتباطی به متن ایمیل نداره، مگر اینکه ایمیل شما به صورت HTML ارسال شده باشه. فونتی که با آن نرم افزار مدیریت ایمیل شما پیام ها را نمایش میده، به تنظیمان همون برنامه و فونت های نصب شده روی سیستم شما بستگی داره.

----------


## عقاب سیاه

خوب چجوري ميشه به صورت HTML ارسال كرد و فونت و رنگ متن را مشخص كرد؟؟

ببحشيد:



> براي اين كه پيام هاي صندوق gmail، inbox قابل دريافت باشه بايد چه تغييراتي اجياد كرد!؟

----------


## vcldeveloper

برای ارسال به صورت HTML باید ایمیل رو به صورت Multipart ارسال کنید. در یک پارت متن ایمیل رو به صورت plain-text بدون کدهای HTML قرار بدید، تا اگر کاربر یا نرم افزاری قابلیت نمایش HTML را نداره، مشکلی در خواندن ایمیل براش پیش نیاد. در پارت بعدی هم متن نامه به صورت کد HTML را قرار بدید. هممچنین باید Encdoing رو روی MIME بزارید، و ContentType رو هم text/html.

----------


## عقاب سیاه

ببخشيد يراي دريافت ايميل از gmail من با توجه به كد ارسال شما كد زير را نوشتم   :کف کرده!:  

اما هيچ ايميلي را نمايش نمي دهد و تعداد ايميل ها را 0 برميگرداند.   :متفکر:   :لبخند گشاده!:  

mail-inbox.rar

----------


## vcldeveloper

> ببخشيد يراي دريافت ايميل از gmail من با توجه به كد ارسال شما كد زير را نوشتم


این رو باید در یک تاپیک جداگانه بپرسید. ارسال از طریق SMTP با دریافت از طریق IMAP یا POP3 ارتباطی نداره.

----------


## BORHAN TEC

سلام آقای کشاورز 

*برنامه ای که شما قرار داده اید ایمیل را به مقصد می فرستد. ولی با کاراکترهای فارسی مشکل دارد. این مشکل را چگونه باید برطرف کنم؟*

با تشکر...  :قلب:

----------


## naderanhari

اگر توی نام فرستنده (From) یا عنوان ایمیل (Subject) مشکل داری کد زیر رو قبل از کانکت کردن SMTP اضافه کن
    SMTP.IOHandler.DefStringEncoding := enUTF8
اگر توی متن ایمیل مشکل داری که باید فایل HTML ای که برای ارسال متن میسازی Charset  درستی داشته باشه. من که از us-ascii استفاده کردم با فارسی مشکلی نداشت.

----------


## BORHAN TEC

> اگر توی متن ایمیل مشکل داری که باید فایل HTML ای که برای ارسال متن میسازی Charset درستی داشته باشه. من که از us-ascii استفاده کردم با فارسی مشکلی نداشت.


برنامه ای که آقای کشاورز قرار دادند را موقعی که با دلفی 2010 کامپایل می کنم مشکل ارسال متون فارسی کاملاً رفع می شود، ولی موقعی که آنرا با Delphi XE کامپایل می کنم نمی توانم متن پیام مورد نظرم را به درستی ارسال کنم، یعنی موقعی که می خواهم یک متن فارسی را ارسال کنم متن به صورت ؟؟ ؟؟؟؟؟ ؟؟؟؟ ارسال می شود. در ضمن در موقع کامپایل برنامه با Delphi Xe با یک warning مواجه می شوم که مربوط به خط زیر است:
Body.Text := UTF8Encode(Memo1.Lines.Text);
پیام مربوط به این warning هم به شرح زیر است:
[DCC Warning] SendMail.pas(53): W1057 Implicit string cast from 'RawByteString' to 'string'
لطفاً دوستان راهنمایی کنند.  :خجالت:

----------


## hp1361

> ----------


سلام آقای کشاورز

برنامه شما رو دانلود کردم و دو فایل ssleay32.dll و libeay32.dll رو هم در پوشه برنامه و هم در پوشه ویندوز قرار دادم اما برنامه کار نکرد!

درمانده شدیم والا...!

میشه راهمایی بفرمائید؟

----------


## BORHAN TEC

> برنامه شما رو دانلود کردم و دو فایل ssleay32.dll و libeay32.dll رو هم در پوشه برنامه و هم در پوشه ویندوز قرار دادم اما برنامه کار نکرد!
> 
> درمانده شدیم والا...!


ممکنه که مشکلتون رو دقیق تر بگویید تا راهنماییتون کنم؟؟؟

----------


## hp1361

سلام مجدد

من که واقعا گیج شدم!اشکال کارم کجاست نمیدونم

امروز دوباره تست کردم که پیغام خطا رو براتون بنویسم اما با کمال تعجب دیدم که پیام ارسال میشه؟!!!

----------


## عقاب سیاه

درود
اگه من بخوام برنامم هم توی ویندوز های 64 و هم 32 بیت کار بده باید چی کار کنم؟ یعنی کدوم ورژه از کتابخونه OpenSSL را کنار برنامم قرار بدم؟
و یه سوال دیگه اینکه روی نسخه های مختلف ویندوز مشکلی بوجود نمیاد؟

----------


## سعید صابری

فکر کنم بهتره از 32 بیت استفاده کنی چون 32 بیت در ویندوز 64 بیت هم کار میده ولی 64 بیت در 32بیت کار نمیکنه

----------


## عقاب سیاه

ممنون حالا تست می کنم حتما! میگم پس چرا برای چنین چیز ساده ای دو نسخه می سازند؟

----------


## سعید صابری

البته این نظر منه: چون نسل 32 بیت رو به انقراضه!

----------


## BORHAN TEC

> میگم پس چرا برای چنین چیز ساده ای دو نسخه می سازند؟


چون،اگر برنامه شما 64 بیتی باشد نمیتوانید از نسخه 32 بیتی open ssl استفاده کنید، بنابراین توسعه دهندگان open ssl مجبورند تا نسخه 64 بیتی آن را هم برای برنامه های 64 بیتی عرضه کنند.(این هم دلیل اصلی عرضه نسخه 64 بیتی  :متفکر: )

----------


## Mask

این dll ها هم رو 32 جواب میده هم 64

----------


## saeed7007

سلام
برنامه ایی که آقای کشاورز نوشتن، به این گیر میده:

could not load SSL Library

مشکل چیه؟
مرسی

----------


## عقاب سیاه

پست بالا همین SSL Library هست دیگه باید بزارید کنار پروژهتون

----------


## saeed7007

تمام این کارها رو کرده بودم ولی ارور میده...

----------


## BORHAN TEC

> این dll ها هم رو 32 جواب میده هم 64


جناب Gold چنین چیزی امکان نداره. اگر شما برنامه دلفی خودتون رو به صورت 64 بیتی کامپایل کنید حتماً و الزاماً باید از نسخه 64 بیتی Open SSL library استفاده کنید و اگر هم برنامه را به صورت 32 بیتی کامپایل کنید حتماً و الزاماً باید از نسخه 32 بیتی Open SSL library استفاده کنید.



> تمام این کارها رو کرده بودم ولی ارور میده...


مطمئناً تمام کار را به درستی انجام نداده اید. چون من خودم از همین روش دارم استفاده میکنم و به درستی هم کار میکنه. ولی به یک نکته توجه داشته باشید که نسخه مربوط به دو فایل مربوط به Open SSL Library هم بسیار مهم است و اگر مثلاً برنامه شما با نسخه های جدید دلفی کامپایل شده باشه باید از یک نسخه سازگار Open SSL Library استفاده کنید و نسخه های قدیمی تر آن درست کار نمی کند.

----------


## saeed7007

اگه میشه شما لطف کنید برنامه رو با دلفی کامپایل کنید و فایل exe اون رو +فایلهای   open SSL اینجا بزاید تا ببینیم مشکل از ورژن دلفیه یا چیز دیگه...
مرسی

----------


## Mask

> جناب Gold چنین چیزی امکان نداره. اگر شما برنامه دلفی خودتون رو به صورت 64 بیتی کامپایل کنید حتماً و الزاماً باید از نسخه 64 بیتی Open SSL library استفاده کنید و اگر هم برنامه را به صورت 32 بیتی کامپایل کنید حتماً و الزاماً باید از نسخه 32 بیتی Open SSL library استفاده کنید.


منظور بنده از 32-64 برنامه کامپایل شده نیست. منظورم قابل اجرا بودن برنامه 32 بیتی در ویندوز 64 بیتی بود.

----------


## gholami146

سلام
آقای کشاورز من از فایل شما استفاده کردم
و جواب داد البته بعد از کپی دو فایل دی ال ال در مسیر فایل اصلی برنامه
اما یک سئوال چطور میشه فایل پیوست رو ارسال کرد
من یک مقداری کد به برنامه اضافه کردم اما جواب دلخواه رو نگرفتم
من حتا مثال خود ایندی 10 رو هم گرفتم
اما اون هم نتونست از طریق جی میل پیوست رو ارسال کنه و پورت رو دائما مشغول نگه میداشت
من بعد از فرستادن فایل با برنامه شما اطلاعاتی که در ایمیلم بدیت می اوردم بجای فایل اینجوری بود
....
اقا یک نکته من الان اومدم و بطور اتفاقی اطلاعات داخل بادی رو پاک کردم و یک فایل رو اتچ کردم و ارسال کردم
و فایل با موفقیت ارسال شد
اما زمانی که من در داخل نامه اطلاعاتی رو مینویسم بصورت زیر میشه

This is a multi-part message in MIME format 

--eowqtnH5dRPvbt5tPmKoi=_MThgsOP4cPh 
Content-Type: text/plain; charset="UTF-8" 
Content-Transfer-Encoding: quoted-printable 
Content-Disposition: inline 

sample test 

--eowqtnH5dRPvbt5tPmKoi=_MThgsOP4cPh 
Content-Type: application/octet-stream; 
	name="externalip.txt" 
Content-Transfer-Encoding: base64 
Content-Disposition: attachment; 
	filename="externalip.txt" 

Q3VycmVudCBJUCBBZGRyZXNzOiAxOTIuMTY4LjEuMQ== 

--eowqtnH5dRPvbt5tPmKoi=_MThgsOP4cPh 
Content-Type: application/octet-stream; 
	name="externalip.txt" 
Content-Transfer-Encoding: base64 
Content-Disposition: attachment; 
	filename="externalip.txt" 

Q3VycmVudCBJUCBBZGRyZXNzOiAxOTIuMTY4LjEuMQ== 

--eowqtnH5dRPvbt5tPmKoi=_MThgsOP4cPh-- 

لطفا راهنمایی کنید

----------


## gholami146

با سلام مجدد 
برای دوستانی که تازه به مشکلات من برخورد کردن باید بگم
من در پست قبلی گفتم مشکل دارم اما خودم مشکلشو فهمیدم و اون اینه باید مقدار Encoding  کامپوننت IDMessageSend  را به mePlainText تغییر بدیم
من سرس برنامه رو برای راهنمایی بیشتر در اختیار دوستان قرار می دم (سورس تغییر داده شده آقای کشاورز)
دریافت فایل

----------


## Mask

> با سلام مجدد 
> برای دوستانی که تازه به مشکلات من برخورد کردن باید بگم
> من در پست قبلی گفتم مشکل دارم اما خودم مشکلشو فهمیدم و اون اینه باید مقدار Encoding  کامپوننت IDMessageSend  را به mePlainText تغییر بدیم
> من سرس برنامه رو برای راهنمایی بیشتر در اختیار دوستان قرار می دم (سورس تغییر داده شده آقای کشاورز)
> دریافت فایل


بازم که فایل رو میفرسته همینجوری میشه که؟
AAWQAwACAAAAFAAAAL+QBAACAAAAFAAAANOSkQACAAAAAzU0AA  CSkgACAAAAAzU0AADqHAAHAAAH tAAAAAAAAAAAMjAwODowMzoxNCAxMzo1OToyNgAyMDA4OjAzOj  E0IDEzOjU5OjI2AAAFAQMAAwAA AAEABgAAARoABQAAAAEAAAEpARsABQAAAAEAAAExAgEABAAAAA  EAAAE5AgIABAAAAAEAABIcAAAA AAAAAEgAAAABAAAASAAAAAH/2P/gABBKRklGAAEBAAABAAEAAP/bAEMAEAsMDgwKEA4NDhIREBMY KBoYFhYYMSMlHSg6Mz08OTM4N0BIXE5ARFdFNzhQbVFXX2JnaG  c+TXF5cGR4XGVnY//bAEMBERIS GBUYLxoaL2NCOEJjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2  NjY2NjY2NjY2NjY2NjY2NjY2Nj Y2NjY//AABEIAHgAoAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/ xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHIn  EUMoGRoQgjQrHBFVLR8CQzYnKC CQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2  RlZmdoaWpzdHV2d3h5eoOEhYaH iImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyM  nK0tPU1dbX2Nna4eLj5OXm5+jp 6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAME BwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIz  NS8BVictEKFiQ04SXxFxgZGiYn KCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dn  d4eXqCg4SFhoeIiYqSk5SVlpeY mZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2d  ri4+Tl5ufo6ery8/T19vf4+fr/ 2gAMAwEAAhEDEQA/AEvgogijyQu4D3xg1JEqW20HjcemeM4qndEpPbFyfL3ZPPcdKd  cuZo1ZfmIc ED1xzXh22R9Vy6WL8qRzLyOR0Pofasy8uWtIxDGPnI+/ircMoZAVbtkVXvYxcRlcc9Rg0Rld2kKK s7EekjzSAxyoP+f1qbVFIhPXIqLTN0QYOpTHqOtWLuVJ4WRT84  HTHWrbtMp35zJs5/LcqT1Irb3e dbMgxuxx9a5+DCy7znCj9e1XbS5Ky+X1DHirqRvqipRuaNqWmR  JGyBj86jvn2ID26fjQb2NX8pAe nJ7AUr4mhI69/wCorHZ6kJO9yKwsYmYSud0n3gOy+n41butrW0yZAURtzj260yz  P7jeON1RXcgFr Jk43KaLuUyWryM2ySSOQtFMwB9uv1FWbiWMo3nLvUcHAwaLS1k  liURAKP75H8qnuNLAtHBdi+0lV HGTjjNbOa5tWW3GJXg01Z7driV22H7m7rj1ps9lNb2av9oyrKC  yMvQEdO9H

----------


## esi022

دوستان سلام
می دونم تاپیک زیر خاکیه اما تاپیک جدید نمی خوام ایجاد کنم.

با indy  و کامپوننت idmessage  و idsmtp ایمیل می فرستم و مشکلی نیست.
اما ایمیل هایی که به gmail میره فرستنده Unknown Sender میشه

کسی همچین تجر به ای داره؟

ضمنا در delphi xe2  کامپوننت tidattachment  وجود ندارد
برای این مورد هم اگر کسی می دونه بگه

با سپاس

----------

