View Full Version : سوال: مشکل با در یافت ایمیل از طریق indy
تجلی
پنج شنبه 22 دی 1390, 14:00 عصر
سلام.
من برای اتصال از طریق imap به گوگل با اجرای هر کدی مثلا >
procedure TForm1.Button2Click(Sender: TObject);
begin
idIMAP41.Connect;
IdIMAP41.RetrieveHeader(1,msg);
IdIMAP41.Disconnect;
end;
با این خطا مواجه میشم .>
80654
تنظیماتی که برای برنامه قرار دادم اینها هستند >
برای idimap4 :
80655
و برای IoHnalder:
80656
وقتی با pop3 هم بخوام کانکت بشم با خطای bad command مواجه میشم. کلا امکان دریافت از جیمیل رو تا به امروز نداشتم و هر چی سعی کردم هم نشد که نشد . ولی برای ارسال مشکلی ندارم .
تجلی
پنج شنبه 22 دی 1390, 14:14 عصر
ضمنا برای خاصیت saslmechanism از یک IdSASLLogin استفاده کردم به همراه یک IdUserPassProvider . یوزر نیم جیمیل رو هم بدون @gmail.com و هم با @ gmail .com تست کردم نشد که نشد .
sslversion رو هم روی هر ورژنی گذاشتم باز هم نشد . با یه یوزر پسورد دیگه امتحان کردم باز هم نشد . یه دوستی گفت شاید بلوک شده باشه اما من با استفاده از outlook میتونم هم از طریق pop3 و هم imap با گوگل ارتباط برقرا ر کنم.
تجلی
جمعه 23 دی 1390, 21:55 عصر
ظاهرا این مشکل برای همه دوستان غریب بود .
اما خوشبختانه بعد از حدود 10 روز بالاخره مشکل کد نویسیم رو پیدا کردم برای استفاده باقی دوستان اینجا میزارم .
تست انجام شده بر روی indy10 و delphi xe هست .
در درجه اول auth type باید روی PatUserPass تنظیم میشد و در درجه دوم برای اتصال از طریق imap باید بعد از کانکت شدن ، قبل از انجام هر عملیاتی روی ایمیلتون پوشه مورد نظر رو با دستور
idimap41.SelectMailBox( ) انتخاب کنید وگرنه با ارور مواجه میشید . ولی این مشکل در pop3 وجود نداره .
نیازی به تنظیم کردن saslmechanism و متعاقبا استفاده ازIdSASLLogin و IdUserPassProvider هم نیست !
برای سرویس imap بر خلاف اون چیزی که در خیلی از سایتها دیدم اصلا نیازی نیست که نام کاربری رو همراه با domain.com@ بنویسیم و فقط نوشتن خود یوزر کافیه .
در نهایت همه این مطالبی که گفتم برای استفاده از سرویس گوگل بود برای باقی سرویسها حتما تنظیمات لازم کمی تفاوت داره .
تجلی
یک شنبه 25 دی 1390, 11:23 صبح
سلام . من خواستم برنامه دریافت ایمیل رو چند وظیفه ای کنم . کدی که در thread ایجاد شده نوشتم کار نمیکنه و همون خطای non authorized که در اول تاپیک آوردم رو میده هر چیزی که به ذهنم میرسید رو بهش مقدار دهی کردم حتی چیزایی که به نظر بی ربط میومد :لبخند: اما نشد :ناراحت: .
یه جای این کد صد در صد مشکل داره . اگر راهنمایی کنید ممنون میشم. >>
begin
msg:=TIdMessage.Create();
imap:=TIdIMAP4.Create();
ioh:=TIdSSLIOHandlerSocketOpenSSL.Create();
//IdImap4 parameters
with imap do
begin
AuthType:=iatUserPass;
host:='imap.gmail.com';
port:=993;
username:='*******';
password:='*******';
IOHandler:=ioh;
usetls:=utuseimplicittls;
RetrieveOnSelect:=rsdisabled;
MailBoxSeparator:='/';
MilliSecsToWaitToClearBuffer:=10 ;
ReadTimeout:=20000;
ConnectTimeout:=30000;
end;
//idMessage parameters
with msg do
begin
encoding:=memime;
end;
//ioHandler parameters
with ioh do
begin
boundport:=0;
DefaultPort:=0;
destination:='imap.gmail.com:993';
host:='imap.gmail.com';
port:=993;
SSLOptions.Method:=sslvtlsv1;
ssloptions.Mode:=sslmunassigned;
SSLOptions.SSLVersions:=[sslvTLSv1];
ssloptions.VerifyDepth:=0;
ssloptions.VerifyMode:=[];
ConnectTimeout:=30000;
ReadTimeout:=40000;
end;
imap.Connect();
if imap.Connected=true then
ShowMessage('connected');
imap.SelectMailBox('inbox');
.
.
.
Mask
یک شنبه 25 دی 1390, 11:46 صبح
این کدها مشکل ندهره.
اگه بتونید کد کاملتون رو بزارید بهتره.
تجلی
یک شنبه 25 دی 1390, 13:30 عصر
آخ خدا خیرت بده Gold عزیز .
خواستم کد کامل رو برات بفرستم گفتم بزار تر و تمیزش کنم بعد بفرستم که مشکل رو ( سوتی قرن رو ) پیدا کردم !! . دقیقا مشکل در همون قسمتی از کد ها بود که در پست قبلیم نفرستاده بودم
اشکال کار این قسمت بود >>
form1.imap.Retrieve(i,form1.msg);
من دیشب تا ساعت 4:30 صبح و امروز از ساعت 10 صبح تا همین الان به خاطر همین یه خط کد سر کار بودم ! :عصبانی++:
راستی اگر من بخوام فقط ارسال کننده های نامه رو در یک لیست قرار بدم بدون اینکه ابتدا کل نامه رو در یک idmessage دریافت کنم و بخش from رو ازش جدا کنم راه دیگه ای هم دارم ؟ چون با این کار باید تک تک نامه ها رو کامل دریافت کرد که اگر نامه ها حجیم باشند این کار برای زمانی که فقط ارسال کننده های نامه رو میخوایم یه مقداری وقت گیره.
تجلی
یک شنبه 25 دی 1390, 23:08 عصر
با برنامه که که نوشتم ایمیلهایی که دریافت میکنم به چند شکل هستن
بعضی هاشون خیلی خوب و عادی دیده میشند .
دسته دوم مثل ایمیلهایی که از همین سایت برنامه نویسی ارسال میشه به این شکل دریافت میشن >>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<style type="text/css">
.style1 {
border: 1px solid #003366;
background-color: #F5F5FF;
padding: 3px;
margin: 5px;
}
.style2
{
background-color: #637EB0;
}
.style3
{
font-family: Tahoma;
font-size: 12px;
padding: 8px;
}
}
</style>
</head>
<body dir="rtl">
<table class="style1" style="width: 100%">
<tr>
<td class="style2"> </td>
</tr>
<tr>
<td class="style3">
h756224 گرامی،<br><br>
Gold به تاپیکی تحت عنوان سوال: مشکل با در یافت ایمیل از طریق indy که شما در بخش توسعه نرم افزارهای تحت شبکه در برنامه نویس تحت نظر گرفته اید پاسخ داده است.<br><br>
تاپیک مذکور در آدرس زیر قرار دارد:<br>
دسته سوم ایمیلهایی هستن که کلا هیچی ازشون دیده نمیشه یعنی هیچی از متن نامه روی memo ثبت نمیشه !!!
دسته چهارم هم ایمیلهایی هستن که با برنامه ای که برای ارسال ایمیل نوشتم میفرستم ، که اونها رو هم وقتی دریافت میکنم به این شکل هستن که البته روی خود سایت گوگل درست نشون داده میشند >>
تست
دسته پنجم ایمیلهایی که به جای متن ایمیل این دریافت میشه >> This is a multi-part message in mime format
حالا من باید با اینا چیکار کنم که درست و حسابی نشون داده بشند ؟! :ناراحت:
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.