PDA

View Full Version : سوال: توضیح در مورد برنامه ارسال ایمیل ساده



ironclip
شنبه 12 تیر 1389, 18:05 عصر
سلام به همه دوستان گل خودم

من یک سورس پیدا کردم برای ارسال ایمیل خیلی ساده هست

اما من از این قسمت حالی نمی شم کسی هست توضیح بده :





Private Const MAX_IP = 5

Private Type IPINFO
dwAddr As Long ' IP address
dwIndex As Long ' interface index
dwMask As Long ' subnet mask
dwBCastAddr As Long ' broadcast address
dwReasmSize As Long ' assembly size
unused1 As Integer ' not used
unused2 As Integer ' not used
End Type

Private Type MIB_IPADDRTABLE
dEntrys As Long 'number of entries in the table
mIPInfo(MAX_IP) As IPINFO 'array of IP address entries
End Type

Private Type IP_Array
mBuffer As MIB_IPADDRTABLE
BufferLen As Long
End Type

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Declare Function GetIpAddrTable Lib "IPHlpApi" (pIPAdrTable As Byte, pdwSize As Long, ByVal Sort As Long) As Long



اگه میشه توضیحاتتون یکم کامل باشه

تا حالا به موارد برخورد نکردم

ممنون میشم

parselearn
یک شنبه 13 تیر 1389, 20:17 عصر
اون كدها مربوط به ايميل نميشه رويه اصلي cmdSend_Click
تابع اصلي SendMail
بقيه رو حذف كنيد

كدهاي داخل cmdSend_Click هم به اين تغيير دهيد


Dim Send As Boolean
Send = mdlMail.SendMail(txtSender.Text, txtSubject.Text, txtReciver.Text, txtText.Text, txtPassword.Text)
If Send = True Then
MsgBox "Sending..."
End If


كد همين نمونه
http://barnamenevis.org/forum/showpost.php?p=1017152&postcount=18

ironclip
سه شنبه 15 تیر 1389, 22:04 عصر
سلام به دوستان و آقای parselearn (http://www.barnamenevis.org/forum/member.php?u=48732) ببخشید اسمتونو نمی دونم

سلام مرسی از توضیحی که دادید



من برنامه را چند بار چک کردم ولی می خوام بعضی قسمتهای این سورس را بدونم چه کاری انجام میده .



به این کد نگاه کنید :







'start SendMail code

Function SendMail(Sender As String, Subject As String, Reciever As String, Text As String, Password As String) As Boolean

If Sender <> "" Or Password <> "" Then

frmMain.MousePointer = 11

Dim iMsg, iConf, Flds, schema, SendEmailGmail

Set iMsg = CreateObject("CDO.Message")

Set iConf = CreateObject("CDO.Configuration")

Set Flds = iConf.Fields


' send one copy with Google SMTP server (with autentication)

schema = "http://schemas.microsoft.com/cdo/configuration/"

Flds.Item(schema & "sendusing") = 2

Flds.Item(schema & "smtpserver") = "smtp.gmail.com"

Flds.Item(schema & "smtpserverport") = 465

Flds.Item(schema & "smtpauthenticate") = 1

Flds.Item(schema & "sendusername") = Sender

Flds.Item(schema & "sendpassword") = Password

Flds.Item(schema & "smtpusessl") = 1

Flds.Update


With iMsg

DoEvents

.To = Reciever

.From = Sender

.Subject = Subject

.HTMLBody = Text

.Sender = Sender

.Organization = "S.M.B Productions"

.ReplyTo = Sender

Set .Configuration = iConf

SendEmailGmail = .Send

End With


Set iMsg = Nothing

Set iConf = Nothing

Set Flds = Nothing

frmMain.MousePointer = 0

SendMail = True

Else

MsgBox "Please, Fill the Sender Mail Address or Sender Mail Password", vbCritical, "Connection Error"

SendMail = False

End If

End Function

'end SendMail code

چرا در این برنامه از CreateObject استفاده شده

و منظور از دستور set چی هست

و اگه میشه قسمت Flds را توضیح بدید که چرا از چند Flds استفاده شده

و چرا از With استفاده شده


ببخشید این دیگه برنامه نیست که بخوام بگم انجام بدید این فقط برای یادگیری خودم هست
اگه میشه توضیحی بدید ممنون می شم

parselearn
چهارشنبه 16 تیر 1389, 02:57 صبح
چرا در این برنامه از CreateObject استفاده شده تابع CreateObject براي ساخت شيهايي است كه به صورت پيشفرض دسترسي به آن نداريم
(اطلاعات دقيقي ندارم)


و منظور از دستور set چی هست دستور Set براي انتساب اشياء كاربرد دارد
مثال

set pic1.picture = pic2.pictureمثالي ديگر
http://www.barnamenevis.org/forum/showthread.php?t=229998&highlight=set


و اگه میشه قسمت Flds را توضیح بدید که چرا از چند Flds استفاده شده
فيلدهاي اين كد به عنوان Header نامه ارسال مي شوند

كه در اينجا براي مثال
http://schemas.microsoft.com/cdo/configuration/sendusing = 2
قرار گرفته است


و چرا از With استفاده شده With براي دسترسي به توابع، رويه ها ، پروپرتي هاي يك شي كاربر دارد
براي مثال
به جاي اينكه بنويسيم


TextBox1.Text = 15
TextBox1.MaxLength = 3
TextBox1.Width = 300مي نويسيم


With TextBox1
.Text = 15
.MaxLength = 3
.Width = 30
End With
جنبه كم كردن كد رو داره

ironclip
چهارشنبه 16 تیر 1389, 23:03 عصر
یک سوال دیگه ؟

چرا در این کد :




schema = "http://schemas.microsoft.com/cdo/configuration/"

Flds.Item(schema & "sendusing") = 2

Flds.Item(schema & "smtpserver") = "smtp.gmail.com"

Flds.Item(schema & "smtpserverport") = 465

Flds.Item(schema & "smtpauthenticate") = 1

Flds.Item(schema & "sendusername") = Sender

Flds.Item(schema & "sendpassword") = Password

Flds.Item(schema & "smtpusessl") = 1

Flds.Update




"http://schemas.microsoft.com/cdo/configuration/" را برابر schema قرار داده هست

آیا در تمام Flds.Item ها schema با متدهای مثل "sendusing" یا "smtpserver"

جمع می شوند

مثلا

در این قسمت از کد





Flds.Item(schema & "smtpserver") = "smtp.gmail.com"




به فرض اینطوری می شود



http://schemas.microsoft.com/cdo/configuration/smtp.gmail.com
و به Flds.Item اختصاص داده می شود ؟



کسی هست دلیل این کارو بگه ؟

parselearn
پنج شنبه 17 تیر 1389, 00:44 صبح
Config ايميل مجموعه اي از آيتمهاست كه در Flds ذخيره مي شوند
دليل خاصي نداره
تنظيمات به صورت آرايه ذخيره مي شوند

ironclip
پنج شنبه 17 تیر 1389, 02:58 صبح
فکر نکنم به این سوالم جواب داده باشید

چرا "http://schemas.microsoft.com/cdo/configuration/" را برابر schema قرار داده شده

این لینکی که در سورس بود تست کردم هیچ صفحه ای باز نشد



چرا در این تکه کد


Flds.Item(schema & "sendusing") = 2



برابر 2 قرار گرفته است .


و چرا


Flds.Item(schema & "smtpusessl") = 1



برابر 1 قرار گرفته شده



ببخشید خیلی سوال میپرسم


تشکر که جواب می دید

ironclip
پنج شنبه 17 تیر 1389, 19:05 عصر
یک سوال دیگه :




Set iMsg = Nothing

Set iConf = Nothing

Set Flds = Nothing



چرا برابر Nothing قرار گرفته شده ؟

parselearn
پنج شنبه 17 تیر 1389, 20:05 عصر
Nothing دقيق نمي دونم
ولي فكر ميكنم اين كار باعث از بين رفتن و از حافظه خارج شدن متغير ميشه

xxxxx_xxxxx
جمعه 18 تیر 1389, 22:50 عصر
نسبت دادن nothing به یک آبجکت (از هر نوعی) باعث میشه تا مقدار پیش فرض اون آبجکت بهش داده بشه. مثلاً اگر متغیر عددی هست مقدار صفر، اگر boolean هست، مقدار False و ...

tnmsoft
شنبه 19 تیر 1389, 01:07 صبح
دوستان سلام میگم چرا این سورس روی ویندوز کریستال جواب میده و بصورت کامل کار میکنه ولی روی ویندوز سرویس پک 3 جواب نمی ده یعنی ایمل ارسال نمی کنه لطفآ راهنمایی کنید .