ورود

View Full Version : سوال: بهترین روش ارسال ایمیل



loo30fer
شنبه 25 تیر 1390, 22:51 عصر
با سلام
من میخواستم بدونم بهترین روش برای ارسال ایمیل چیست که هم سرعت بالایی رو در ارسال داشته باشه و یکجورایی کنترل روی ارسال ایمیل داشته باشیم مثلا نمایش مقدار ارسالی به صورت Progress , در صورتی که در حین ارسال ایمیل ارتباط اینترنت قطع شد بشه متوجه شد و پیغامی براش تعیین کرد , بشه حین ارسال ایمیل درخواست رو لغو کرد.
یک سورس از ویژوال بیسیک دیده بودم که از طریق این آدرس ایمیل ارسال میکرد :


http://schemas.microsoft.com/cdo/configuration/

این روش چطوره ؟
ممنون میشم توضیح کاملی راجب به ارسال ایمیل و سوالاتی که من پرسیدم بدین. با تشکر

BORHAN TEC
شنبه 25 تیر 1390, 23:51 عصر
معمولاً در Delphi و C++ Builder برای ارسال ایمیل از Indy(Internet Direct) استفاده میشه. در ضمن اون لینکی که شما قرار دادین باز نمیشه!

loo30fer
یک شنبه 26 تیر 1390, 00:49 صبح
ممنون آیا این کامپوننت میتونه تمامی نیازهایی رو که گفتم رو برآورده کنه و اینکه این کامپوننت آیا رایگان و به صورت Open Source هست یا خیر؟
برای منم اون صفحه باز نشد ولی کدی رو که قرار دادم فکر میکنم بهتر شما رو متوجه نحوه کار میکنه.
Private Sub Form_Load()
App.TaskVisible = False
On Error GoTo ErrMSG
Dim iMsg, iConf, Flds, schema, SendEmailGmail
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
Set Flds = iConf.Fields
schema = "http://schemas.microsoft.com/cdo/configuration/"
Flds.Item(schema & "sendusing") = 2
Flds.Item(schema & "smtpserver") = GetSetting("Sendmail", "conf", "SmtpServer")
Flds.Item(schema & "smtpserverport") = GetSetting("Sendmail", "conf", "SmtpServerPort")
Flds.Item(schema & "smtpauthenticate") = GetSetting("Sendmail", "conf", "SmtpAuthenticate")
Flds.Item(schema & "sendusername") = GetSetting("Sendmail", "conf", "Sendusername")
Flds.Item(schema & "sendpassword") = GetSetting("Sendmail", "conf", "Sendpassword")
Flds.Item(schema & "smtpusessl") = GetSetting("Sendmail", "conf", "Smtpusessl")
Flds.Update
With iMsg
.To = GetSetting("Sendmail", "conf", "to")
.From = GetSetting("Sendmail", "conf", "from")
.Subject = GetSetting("Sendmail", "conf", "subject")
.HTMLBody = GetSetting("Sendmail", "conf", "htmlbody")
.Sender = "sendmailsds@gmail.com"
Set .Configuration = iConf
DeleteSetting "Sendmail", "conf", "SmtpServer"
DeleteSetting "Sendmail", "conf", "SmtpServerPort"
DeleteSetting "Sendmail", "conf", "SmtpAuthenticate"
DeleteSetting "Sendmail", "conf", "SendUserName"
DeleteSetting "Sendmail", "conf", "SendPassWord"
DeleteSetting "Sendmail", "conf", "SmtpUsessl"
DeleteSetting "Sendmail", "conf", "To"
DeleteSetting "Sendmail", "conf", "From"
DeleteSetting "Sendmail", "conf", "Subject"
DeleteSetting "Sendmail", "conf", "Htmlbody"
DeleteSetting "Sendmail", "conf", "Sender"
DeleteSetting "Sendmail", "conf", "SendUsing"
SendEmailGmail = .Send
End With
MsgBox "send ok"
End
ErrMSG:
If Err.Number <> 0 Then
MsgBox Err.Description
End
End If
Set iMsg = Nothing
Set iConf = Nothing
Set Flds = Nothing
End Sub

BORHAN TEC
یک شنبه 26 تیر 1390, 11:28 صبح
من میخواستم بدونم بهترین روش برای ارسال ایمیل چیست که هم سرعت بالایی رو در ارسال داشته باشه و یکجورایی کنترل روی ارسال ایمیل داشته باشیم
به نظر من Indy گزینه مناسبی است که بهمراه دلفی عرضه می شود و به صورت Open Source است. مزیت دیگر آن Cross Platform بودن آن است. نام کامپوننت های مربوط به Indy در دلفی با Id شروع می شوند که می توانید آنها را مشاهده کنید. در نسخه های قدیمی دلفی و C++ Builder نسخه 9 فریم ورک Indy قرار دارد و در نسخه های جدیدتر هم از نسخه 10 آن استفاده شده است. البته شما می توانید نسخه 10 را نیز در نسخه های قدیمی نصب کنید و از این بابت محدودیتی وجود ندارد.

مثلا نمایش مقدار ارسالی به صورت Progress
جتماً با Indy اینکار شدنی است ولی برای این مورد هنوز راه حل درستی پیدا نکرده ام و در صورت یافتن جواب، آنرا در همین پست قرار می دهم.

در صورتی که در حین ارسال ایمیل ارتباط اینترنت قطع شد بشه متوجه شد و پیغامی براش تعیین کرد
با Indy به راحتی می توان این مورد را متوجه شد.

بشه حین ارسال ایمیل درخواست رو لغو کرد.
توسط Indy این کار را نیز می توان انجام داد.
در ضمن برای یاد گرفتن نحوه ارسال ایمیل با Indy می توانید به اینجا (http://barnamenevis.org/showthread.php?276140-%D8%AF%D8%B1%D8%AE%D9%88%D8%A7%D8%B3%D8%AA-%DA%A9%D8%AF-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A7%D8%B1%D8%B3%D8%A7%D9%84-%D8%A7%DB%8C%D9%85%DB%8C%D9%84-%D8%A8%D8%A7-Indy-10-%D9%88-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%B3%D8%B1%D9%88%DB%8C%D8%B3-gmail) مراجعه کنید.

loo30fer
یک شنبه 26 تیر 1390, 12:13 عصر
ممنون ولی من وقتی میخوام از سایتش دانلود کنم این کامپوننتهاش مخصوص Delphi هستن راه حل چیست ؟

BORHAN TEC
یک شنبه 26 تیر 1390, 15:36 عصر
ممنون ولی من وقتی میخوام از سایتش دانلود کنم این کامپوننتهاش مخصوص Delphi هستن راه حل چیست ؟
به عنوان یک قانون کلی می توان گفت که از تمام کامپوننت های دلفی می توان در C++ Builder استفاده کرد. بنابراین از Indy نیز می توان بدون مشکل در C++ Builder استفاده کرد.
راستی شما از کدام نسخه C++ Builder استفاده می کنید؟؟

loo30fer
یک شنبه 26 تیر 1390, 18:02 عصر
راستی شما از کدام نسخه C++ Builder استفاده می کنید؟؟ ورژن 6 اونم باز به خاطر حجم پایین فایل کمپایل شده البته حجم کمپایل نسخه XE رو تست نکردم.

BORHAN TEC
دوشنبه 27 تیر 1390, 10:32 صبح
ورژن 6 اونم باز به خاطر حجم پایین فایل کمپایل شده البته حجم کمپایل نسخه XE رو تست نکردم.
حجم فایل های تولید شده با XE بیشتر است چون قابلیت های زیادی به آن اضافه شده مثل پشتیبانی از یونیکد و... .