الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف ترسل ايميلات من برنامجك المكتوب على Delphi2010

بدأه c_vita في 9 أغسطس 2012 · 4 رد · 1,351 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله

تقبل الله منا ومنكم ... ونسال الله ان يعجل بالنصر لأخواننا في سوريا ... قولوا امين .

قبل ان اكتب بحثت في المواضيع ادناه وعبر قوقل لكن لم اوفق لحا لغاية الان

برنامجي يعمل اساسا على ارسال ايميلات للزبائن في مختلف مخدمات البريد الالكتروني

لم اجد في المشاركات ادناه حل لاني اعمل على delphi 2010

رجاءا من يعمل على 2010 المساعدة في تعليمي كيفية ارسال ايميل

او احالتي الى رابط يكون به شرح خاص بمستخدمي 2010

او حتى component تعمل على 2010 مع الشرح جزاكم الله خيرا

اعتقد ان اي معلومة ولو بسيطة تساعدني في اتمام عملي

تقبلوا تحياتي

1

2

3

4

5

6

#2

السلام عليكم

الحمد لله هداني الله لل idmtp , idmessage

لكن اريد ان اعرف ما هي البارميترات التي امررها idmtp يعني تفصيل لكي اعرف احدد الخصائص حسب ما اريد

ثم ان المرفقات صورة لمربع حوار اريد ان افهم ما المطلوب مني

post-72516-040970100 1345045117_thumb.pn

جزاكم الله خيرا

المرفقات
Untitled.png
#3

؟؟؟؟

#4

السلام عليكم

اخي العزيز الاداوات التي تسخدمها كما هو واضح من الصورة صحيحة 100% وهي الاداة الافضل لارسال الايميل من نظامك الي اي بريد ولكن قبل ذلك تحتاج لفهم عدة امور مهمة لاتمام المهمة بنجاح وليعمل تطبيقك بشكل جيد .

اول هذه الامور واهمها انك تحتاج الي خادم بريد (سيرفر خاص ، استضافة خاصة .... الخ) من المعلوم عند ارسال البريد من جهازك الي شخص اخر فهو يصل أولا من جهازك الي خادم البريد الخاص بك ثم يتولى الخادم بارسال الرسالة نيابة عندك للبريد المطلوب ،وهي اهم خطوة في هذا النظام .

بعد ذلك تكون الامور سهلة وبسيطة فباستخدام أداتي idSMTP و idMessage من ادوات Indy تستطيع الارسال الاداة الاولي وهي idSMTP وهي الكلاينت الخاص بالاتصال بالسيرفر الخاص بك وحين يتم الاتصال بنجاح تكون جاهز لارسال الرسالة عن طريق اعطاء الاداة idmessage البيانات اللازمة للرسالة مثل البريد المطلوب ارسال الرسالة له ، عنوان الرسالة ، تفاصيل الرسالة نوع الرسالة textLhtml او المرفقات كالملفات مثلا .

ثم تقوم بارسال الرسالة من خلال الدالة SendMessage التابعة للكلاينت idSMTP .

هذا باختصار كيفية الارسال ، اليك بعض الملاحظات هناك العديد من الخوادم تطلب تصريح للارسال يتطلب ذلك عنوان بريد الكتروني علي نفس الخادم التي تستخدمه للارسال وكلمة السر الخاص به حتي يأذن لك بارسال الرسائل ، كمان انه مطلوب منك تحديد الرسالة انها صدرت او ارسلت من بريد انت تضعه في حقل From للاداة idMessage و يجب ان يكون عنوان بريد صحيح علي نفس الخادم حتي لا تصنف كانها سبام(رسائل غير مرغوبة ) او يمنع ارسالها بالكامل .

تحياتي لك هذه الملاحظات علي عجالة اي استفسار لا تتردد شكرا .

الإنسان الذي يقول بأنه لا يمكن عمل شيء يجب ألا يعيق مطلقاً الإنسان الذي يقوم بعمل ذلك الشيء.

إن تخطئ فأنت إنسان ... أما أن تلوم جهازك الكمبيوتر على خطأك فهذا أكثر إنسانية.

#5

SendEmail //Delphi 2010 //http://indy.fulgan.com/SSL/

Uses

IdSMTP, IdSSLOpenSSL, IdMessage, IdExplicitTLSClientServerBase, IdIOHandler;

procedure SendEmail(uHost: string; uPort: integer;

uUsername, uPassword: string; uMailMessage: TIdMessage);

var

vIdSMTP: TIdSMTP;

begin

vIdSMTP := TIdSMTP.Create(nil);

try

//-----------------------------

vIdSMTP.IOHandler := nil;

vIdSMTP.ManagedIOHandler := True;

try

vIdSMTP.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(vIdSMTP);

if (uPort = 465) then

vIdSMTP.UseTLS := utUseImplicitTLS

else

vIdSMTP.UseTLS := utUseExplicitTLS;

except

vIdSMTP.IOHandler.Free;

vIdSMTP.IOHandler := nil;

end;

if (vIdSMTP.IOHandler = nil) then

begin

vIdSMTP.IOHandler := TIdIOHandler.MakeDefaultIOHandler(vIdSMTP);

vIdSMTP.UseTLS := utNoTLSSupport;

end;

//-----------------------------

vIdSMTP.Host := uHost;

vIdSMTP.Username := uUsername;

vIdSMTP.Password := uPassword;

vIdSMTP.Port := uPort;

vIdSMTP.Connect();

Application.ProcessMessages;

vIdSMTP.Send(uMailMessage);

Application.ProcessMessages;

finally

vIdSMTP.Free;

end;

end;

procedure TForm1.Button1Click(Sender: TObject);

var

vMailMessage: TIdMessage;

begin

vMailMessage := TIdMessage.Create(nil);

try

vMailMessage.Sender.Address := 'mhm_net@hotmail.com'; //From

vMailMessage.Recipients.EMailAddresses := 'mhm.programmer@gmail.com'; //To

vMailMessage.Subject := 'Test for "info@example.com"'; //Subject

vMailMessage.Body.Text := 'Hi All'; //Body

SendEmail('mail.tarassul.sy', 25, 'info@example.com',

'******************', vMailMessage);

SendEmail('smtp.live.com', 587, 'mail@example.com',

'******************', vMailMessage);

finally

vMailMessage.Free;

end;

end;

-------------------------------------------------------------------------------------Index Email

var

vMsgCount: integer;

vMailMessage: TIdMessage;

vIdPOP3: TIdPOP3;

i: integer;

begin

vIdPOP3 := TIdPOP3.Create(Self);

vMailMessage := TIdMessage.Create(nil);

try

BodyMemo.Lines.Clear;

vIdPOP3.Host := POPEdit.Text;

vIdPOP3.Username := UserIDEdit.Text;

vIdPOP3.Password := PassEdit.Text;

vIdPOP3.Port := StrToInt(PortPopEdit.Text);

Application.ProcessMessages;

vIdPOP3.Connect();

try

vMsgCount := vIdPOP3.CheckMessages;

for i := 0 to vMsgCount - 1 do

begin

vIdPOP3.Retrieve(i, vMailMessage);

BodyMemo.Lines.Add('-------------Start-------------');

BodyMemo.Lines.Add('Address : ' + vMailMessage.From.Address);

BodyMemo.Lines.Add

('MailAddresses: ' + vMailMessage.Recipients.EMailAddresses);

BodyMemo.Lines.Add('Subject : ' + vMailMessage.Subject);

BodyMemo.Lines.Add('Sender : ' + vMailMessage.Sender.Address);

BodyMemo.Lines.Add('Body : ' + vMailMessage.Body.Text);

BodyMemo.Lines.Add('-------------------------------');

Application.ProcessMessages;

end;

finally

vIdPOP3.Disconnect;

end;

finally

vIdPOP3.Free;

vMailMessage.Free;

end;

end;

-------------------------------------------------------------------------------------

تم تعديل هذه المشاركة بواسطة Hassan_MHM في 24 ديسمبر 2012 في 01:38

مواضيع مشابهة