"مهلة البيانات الواردة SMTP" عند إرسال بريد إلكتروني مع الصور المضمنة باستخدام Indy 10 في نظام التشغيل Windows XP
-
09-09-2019 - |
سؤال
أحصل على الخطأ "مهلة البيانات الواردة SMTP" عندما أحاول إرسال بريد إلكتروني مع الصور المضمنة في نظام التشغيل Windows XP، فأنا أستخدم فرع Tiburon من Indy 10 مع التعليمات البرمجية التالية لإرسال رسائل البريد الإلكتروني مع الصور المضمنة:
MB := TIdMessageBuilderHtml.Create;
try
MB.PlainText.Assign(Text);
MB.Html.Assign(FHTML);
MB.HtmlFiles.Add('c:\Path\to\My\Image.jpg');
MB.FillMessage(IdMessage);
finally
MB.Free;
end;
if not IdSMTP.Connected then
IdSMTP.Connect;
IdSMTP.Send(IdMessage);
يحدث فقط في نظام التشغيل Windows XP، في نظام التشغيل Windows Vista البريد الإلكتروني والصورة المضمنة بشكل جيد.
يبدو أنه لا يرسل أي شيء إلى الخادم، ويبدو أنه عالق لتشكيل الصورة قبل الإرسال.
هنا هي مكدس المكالمات:
IdReplySMTP 497 +1 TIdReplySMTP.RaiseReplyError
IdTCPConnection 574 +1 TIdTCPConnection.RaiseExceptionForLastCmdResult
IdTCPConnection 724 +10 TIdTCPConnection.CheckResponse
IdTCPConnection 563 +2 TIdTCPConnection.GetResponse
IdTCPConnection 583 +4 TIdTCPConnection.SendCmd
IdTCPConnection 696 +4 TIdTCPConnection.SendCmd
IdSMTP 377 +2 TIdSMTP.DisconnectNotifyPeer
IdTCPConnection 517 +5 TIdTCPConnection.Disconnect
IdSMTP 476 +2 TIdSMTP.Disconnect
IdTCPConnection 828 +2 TIdTCPConnection.Disconnect
Email 130 +11 TEmail.Destroy
System 9806 +1 TObject.Free
EnviarEmail 322 +38 TFormEnviarEmail.Enviar
System 12106 +38 @HandleFinally
RtlUnwind
System 11589 +83 @HandleAnyException
KiUserExceptionDispatcher
RtlAppendUnicodeToString
IdMessageClient 873 +4 EncodeAttachment
IdMessageClient 1213 +252 TIdMessageClient.SendBody
IdMessageClient 1244 +283 TIdMessageClient.SendBody
IdMessageClient 1269 +12 TIdMessageClient.SendMsg
IdSMTPBase 251 +6 TIdSMTPBase.SendNoPipelining
IdSMTPBase 436 +4 TIdSMTPBase.InternalSend
IdSMTPBase 457 +1 TIdSMTPBase.Send
IdSMTP 415 +6 TIdSMTP.Send
IdSMTPBase 449 +6 TIdSMTPBase.Send
أي أدلة حول ما يسبب ذلك وكيف يمكنني حل المشكلة؟
شكرا.
المحلول 3
تم حل المشكلة.
أقوم بتحليل ملف HTML لتحميل الصور وإرفاقها في البريد الإلكتروني، ولكن في Windows XP المسار هو:
C:\Documents And Settings\User\Desktop\....
وفي ملف HTML هذا المسار كان
C:\Documents%20And%20Settings\User\Desktop\....
لذلك لم يتم العثور على ملف استثناء تم رفعه داخليا وإيقاف العملية، حتى المهلة، ولم يكن إندي رفعه.
بعد إرفاق مصحح الأخطاء عن بعد في العملية التي تعمل على جهاز Windows XP، حصلت على الاستثناء في المحاولة الأولى.
لا أعتقد أن صحيحا ل Indy "Engulf" الاستثناء، لكن هذا تاريخ آخر.
نصائح أخرى
هل أكدت أنه يمكنك إرسال نفس البريد مع عميل بريد فيد Bona Bona، ويفضل أنه واحد بسيط ومحمول لا يدمج في أحشاء النظام، مثل عميل البريد المزمن أو الأوبرا المضمن؟ يمكن أن يكون هناك نظام مكافحة الفيروسات / مكافحة الفيروسات / مكافحة أي نظام يتداخل هناك - العديد من أولئك الذين اعترضوا بشفافية من 25 / TCP المنتهية ولايته والقيام بالبيانات.
إذا لم يكن الترميز هو السبب في ذلك، ولكن وقت قراءته، فيمكنك زيادة استخدامه باستخدام خاصية ReadTimeout:
IDSMTP1.ReadTimeout: = 20000؛