آموزش ویژوال بیسیک و برنامه نویسی

سورس,ویژوال بیسیک,نرم افزار,باشگاه,بدنسازی,فوتبال,آنالیز,پیش بینی,کد,برنامه نویسی

آموزش ویژوال بیسیک و برنامه نویسی

سورس,ویژوال بیسیک,نرم افزار,باشگاه,بدنسازی,فوتبال,آنالیز,پیش بینی,کد,برنامه نویسی

این هم یک بحث در مورد میل سندر با ویژوال بیسیک !

سلام
این هم یک بحث در مورد میل سندر با ویژوال بیسیک !

خوب اول Object های زیر را در فرمتون ایجاد کنین :

6 عدد Text Box با نام های :

txtToEmailAddress
txtFromEmailAddress
txtFromName
txtEmailSubject
txtEmailServer
txtMessage

و یک Button با نام CmdSendMail
و از طریق Components یک Winsock control به فرم اضافه می کنین و اسمش هم به صورت پیش فرض Winsock1 هستش
یک label هم برای دیدن Status برنامه ایجاد می کنیم که اسمش را StatusTxt می ذاریم
در قمست General فرم سه عدد متغیر تعریف می کنیم به این صورت:
کد:
Dim Response As String
Dim Start As Single, Tmr As Single
سپس در قسمت رویداد های Winsock کد زیر را اضافه می کنیم "
کد:
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Winsock1.GetData Response
End Sub
حالا یک Sub برای چک کردن و متوجه شدن Error های موجود در Smtp برنامه ایجاد می کنیم که برای اینکار کد زیر را وارد کنین :


کد:
Sub WaitFor(ResponseCode As String)
    Start = Timer
    While Len(Response) = 0
        Tmr = Start - Timer
        DoEvents
        If Tmr > 50 Then
            MsgBox "SMTP service error, timed out while waiting for response", 64, MsgTitle
            Exit Sub
        End If
    Wend
    While Left(Response, 3) <> ResponseCode
        DoEvents
        If Tmr > 50 Then
           MsgBox "SMTP service error, impromper response code. Code should have been: " + ResponseCode + " Code recieved: " + Response, 64, MsgTitle
           Exit Sub
        End If
    Wend
    Response = ""
End Sub

البته این Sub یک کار دیگه هم می کنه و اون اینه که یک تاخیر هم ایجاد می کنه !

حالا به قسمت اصلی برنامه می رسیم که ایجاد Sub فرستادن mail هستش که برای این کار کد زیر را وارد می کنیم :

کد:
Sub SendEmail(MailServerName As String, FromName As String, FromEmailAddress As String, ToName As String, ToEmailAddress As String, EmailSubject As String, EmailBodyOfMessage As String)
Dim DateNow As String
Dim first As String, Second As String, Third As String
Dim Fourth As String, Fifth As String, Sixth As String
Dim Seventh As String
With Winsock1
    If .State = sckClosed Then
        DateNow = Format(Date, "Ddd") & ", " & Format(Date, "dd Mmm YYYY") & " " & Format(Time, "hh:mm:ss") & "" & " -0600"
        first = "mail from: " & FromEmailAddress & vbCrLf
        Second = "rcpt to: " & ToEmailAddress & vbCrLf
        Third = "Date: " & DateNow & vbCrLf
        Fourth = "From: """ & FromName & """ <" & FromEmailAddress & ">" + vbCrLf
        Fifth = "To: " & ToNametxt & vbCrLf
        Sixth = "Subject: " & EmailSubject & vbCrLf
        Seventh = EmailBodyOfMessage & vbCrLf
        Ninth = "X-Mailer: STMP Sender" & vbCrLf
        .LocalPort = 0
        .Protocol = sckTCPProtocol
        .RemoteHost = MailServerName
        .RemotePort = 25
        .Connect
        WaitFor ("220")
        StatusTxt.Caption = "Connecting...."
        .SendData ("HELO EnterComputerNameHere" & vbCrLf)
        WaitFor ("250")
        StatusTxt.Caption = "Connected"

        .SendData (first)
        StatusTxt.Caption = "Sending Message"

        WaitFor ("250")
        .SendData (Second)
        WaitFor ("250")
        .SendData ("data" & vbCrLf)
        WaitFor ("354")
        .SendData (Fourth & Third & Ninth & Fifth & Sixth & vbCrLf)
        .SendData (Seventh & vbCrLf)
        .SendData ("." & vbCrLf)
        WaitFor ("250")
        .SendData ("quit" & vbCrLf)
        StatusTxt.Caption = "Disconnecting"

        WaitFor ("221")
        .Close
    Else
        MsgBox (Str(.State))
    End If
End With
End Sub

و حالا برای فرستادن ایمیل کافی که در Button این کد را اضافه کنین :

کد:
Private Sub CmdSendMail_Click()
    SendEmail txtEmailServer.Text, txtFromName.Text, txtFromEmailAddress.Text, txtToEmailAddress.Text, txtToEmailAddress.Text, txtEmailSubject.Text, txtMessage.Text
    StatusTxt.Caption = "Mail Sent"
    Beep
    Close
End Sub
و حالا با اجرای برنامه Email که شما همه چیزش را به صورت دستی Set می کنین Send می شود .
اما توضیح در مورد چندتا از کدهای به کاررفته:

Winsock1_DataArrival
این کد چک می کنه چه درخواستی برای برنامه فرستاده می شود !


If .State = sckClosed Then
چک می کنه که Socket که همون winsock محسوب می شود اگه بسته باشد کاری انجام دهد که اینجا شما در کدتون دستور های متعددی بهش دادین



first = "mail from: " & FromEmailAddress & vbCrLf
ایمیل شخص فرستنده را می گیره



Second = "rcpt to: " & ToEmailAddress & vbCrLf
ایمیل کسی را که می خواهین براش میل بفرستین را می گیره




Fourth = "From: """ & FromName & """ <" & FromEmailAddress & ">" + vbCrLf
اسم شخص فرسنتده را می گیره



.RemotePort = 25
پرت smtp را برای winsock ست می کنه
نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد