|
|||||||
Programlama Kategorisinde ve visual basic Forumunda Bulunan (Visual Basic)SMTP server ile Mail Gönderme ve POP3 server ile Mail Alma Konusunu Görüntülemektesiniz => (Visual Basic)SMPT server ile Mail Gönderme ve POP3 server ile Mail Alma. SMTP (simple Mail Transfer Protocol) nin amacı e-mailleri ...
![]() |
|
|
Konu Araçları |
|
|
#1 |
|
Banlandı
Giriş Tarihi: 09-06-2005
Yer: İstanbul & İzmir
Yaş: 24
Mesajlar: 363
Rep Puanı: 5149
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
(Visual Basic)SMPT server ile Mail Gönderme ve POP3 server ile Mail Alma.
SMTP (simple Mail Transfer Protocol) nin amacı e-mailleri bir bilgisayar mail sisteminden diğer bir bilgisayar sistemine transfer etme işlemini yönetmektir. sMTP sadece lokal mail sistemi ile etkileşimde olduğu için hangi mailin sisteme lokal oldugunu görmez. sMTP sadece mail'i bir makineden diğerine gönderip alınırken rol oynar.Bir mail'i başka bir makineye göndermek için sMTP client ilk önce IP hedef adresi dizin servisinden (Domain Name server olarak bilinir) alır. Bu kullanılarak sMTP server hedef host ile bağlantı kurar. Bağlantı kurulduktan sonra client bekleyen mail'i server'a transfer etmeye başlar. Bunun için Marshallsoft’un internet'te free olarak yayımladığı librarysini kullandım. Visual Basic için sMTP/POP3 Email Engine librarysinde (sEE4VB) mail gönderip almak ile ilgili fonksiyonlar bulunuyor. Mail gönderirken dosya da attach edebiliyoruz ve mail'leride uzantısı mai olan ve aktif dizin altında Mail alt dizini olarak yarattığımız dizine kaydedebiliyoruz. Aynı şekilde mail'e attach edilmiş dosyaları da yine aktif dizindeki Attach alt dizinine kaydediyoruz. Programımızın çalışması için gerekli library sEE32.DLL C:Windows un yada C:WINNT altına kopyalanmalıdır.(Daha fazla bilgi için web adresi marshallsoft.com) Aşağıdaki kodlar mail gönderme formuna aittir (frmsend) , librarynin özelliğinden dolayı mail To ve From adresleri <,> delimiterları içine alınır.(Mformat fonksiyonu ile).Mail gönderildikten sonra da delimiterlar adresten çıkarılır (MUnFormat ile). Private sub cmdsend_Click() Dim Code As Long Dim Length As Long Dim Bytessent As Long Dim Nullstring As string Dim Temp As string * 256 Dim TheFile As string Dim Msg As string Dim NL As string On Error GoTo MailerErrorHandler Nullstring = Chr$(0) NL = Chr$(13) + Chr$(10) eResult.Text = "" 'check that sMTP server name has been specifed If Len(eserver.Text) = 0 Then eResult.Text = Time$ & " sMTP server girilmemiş." Exit sub End If 'check "From" email address If Len(eFrom.Text) = 0 Then eResult.Text = Time$ & " 'Email From' adresi girilmemiş." Exit sub Else eFrom = MFormat(eFrom) 'mail adresini < > delimiterları içine alır Code = seeVerifyFormat(eFrom.Text) If Code < 0 Then 'error in format eResult.Text = "Hataly 'EMail From' adresi" eFrom.Text = MUnFormat(eFrom) Exit sub End If End If "'To" email adresi kontrolü If Len(eTo.Text) = 0 Then eResult.Text = Time$ & " 'Email To' adresi girilmemiş." Exit sub Else eTo = MFormat(eTo) 'mail adresini < > delimiterları içine alır Code = seeVerifyFormat(eTo.Text) If Code < 0 Then 'error in format eResult.Text = "Hataly 'EMail To' adresi" eTo.Text = MUnFormat(eTo) Exit sub End If End If ' attach edilmiş dosya var mı? If Len(eAttach.Text) > 0 Then TheFile = eAttach.Text Open TheFile For Input As 1 Close 1 End If ' mesaj kontrolü Length = Len(eMessage.Text) If Length > 0 Then If Left$(eMessage.Text, 1) = "@" Then ' mesajlar "@" ile başlar TheFile = Right$(eMessage.Text, Length - 1) Open TheFile For Input As 1 Close 1 End If End If ' email mesajı gönderilir cmdsend.Enabled = False eResult.Text = Time$ & " Email gönderiliyor..." 'log dosyası set edilir Code = seestringParam(sEE_LOG_FILE, "mailer.log") 'server a baglanılır eResult.Text = Time$ & eserver.Text & " sMTP serverına bağlanılıyor " Code = seesmtpConnect(eserver.Text, eFrom.Text, Nullstring) If Code < 0 Then 'bağlantıda hata varsa kullanıcı mesajla uyarılır Call showError(frmsend, Code, "seesmtpConnect: ") cmdsend.Enabled = True Code = seeClose() Exit sub End If ' server IP adresi alınır Code = seeDebug(sEE_GET_sERVER_IP, Temp, 40) eResult.Text = Time$ & Left$(Temp, Code) & " IP ile bağlanılıyor. " ' AUTO CALL disable edilir Code = seeIntegerParam(sEE_AUTO_CALL_DRIVER, 0) ' setup to send the email Code = seesendEmail(eTo.Text, Nullstring, Nullstring, esubject.Text, eMessage.Text, eAttach.Text) If Code < 0 Then 'email gönderilirken hata olu?tu ise Call showError(frmsend, Code, "seesendEmail: ") cmdsend.Enabled = True Code = seeClose() Exit sub End If 'emaili gönderecek sürücüyü çalıştır Do ' sonraki durumu çalıştır Code = seeDriver() If Code = 0 Then ' driver is done Exit Do End If If Code < 0 Then 'driver returned error Call showError(frmsend, Code, "seeDriver: ") Exit Do End If ' driver not yet done, so report progress. Bytessent = seestatistics(sEE_GET_TOTAL_BYTEs_sENT) eResult.Text = Time$ & " " & str(Bytessent) + " bytes sent." Loop ' AUTO CALL'u geçerli hale getir Code = seeIntegerParam(sEE_AUTO_CALL_DRIVER, 1&) eResult.Text = Time$ & " Email has been sent (" & str$(Bytessent) & " bytes)" 'Delimiterlar silinir eTo.Text = MUnFormat(eTo) eFrom.Text = MUnFormat(eFrom) cmdsend.Enabled = True Code = seeClose() Exit sub MailerErrorHandler: select Case Err Case 53: Msg = "VB Hatası 53: File " & TheFile & " bulunmuyor." Case 76: Msg = "VB Error: " & TheFile & " yolu bulunmuyor." Case Else: Msg = "VB " & Err & " hatası oluştu." End select eResult.Text = eResult.Text + Msg + NL MsgBox Msg Resume Next End sub Mail almak için POP3 server'ın ismi, kullanıcı ismi ve kullanıcının şifresi gereklidir. İlgili form (frmGet) : Private sub cmdGet_click() ' Emailler aktif dizin altyndaki Mail altdizinine kaydedilir ' Attachmentlar aktif dizin altyndaki Attachment altdizinine kaydedilir ' Dim i As Integer Dim N As Integer Dim Code As Long Dim NbrMsg As Long static Buffer As string * 1024 static Temp As string * 256 Dim NL As string static FileName As string * 64 static EmailDir As string * 64 static AttachDir As string * 64 Dim BytesRead As Long Dim AttachCount As Long Dim Nullstring As string Nullstring = Chr$(0) EmailDir = ".Mail" + Chr$(0) AttachDir = ".Attachment" + Chr$(0) NL = Chr$(13) + Chr$(10) eMessage.Text = "" eResult.Text = "" ' POP3 server isminin girilip girilmediğinin kontrolü If Len(eserver.Text) = 0 Then eResult.Text = Time$ + " POP3 server ismi girilmemiş." Exit sub End If 'Kullanıcı ismi kontrolu If Len(eUser.Text) = 0 Then eResult.Text = Time$ + " Kullanıcı ismi girilmemiş." Exit sub End If 'Şifre Kontrolu If Len(ePass.Text) = 0 Then eResult.Text = Time$ + " Şifre girilmemiş." Exit sub End If ' log file set edilir Code = seestringParam(sEE_LOG_FILE, "READER.LOG") 'connect to server cmdGet.Enabled = False eResult.Text = Time$ & eserver.Text & " POP3 server'a ba?lanylyyor." Code = seePop3Connect(eserver.Text, eUser.Text, ePass.Text) If Code < 0 Then 'bağlantıda hata Call showError(frmGet, Code, "seePop3Connect:") Code = seeClose() cmdGet.Enabled = True Exit sub End If ' prefix attachment filenames with "1-", "2-", etc. Code = seeIntegerParam(sEE_FILE_PREFIX, 1) ' server IP si alınır Code = seeDebug(sEE_GET_sERVER_IP, Temp, 40) eResult.Text = Time$ & Left$(Temp, Code) & " IP ile ba?lanylyyor " ' Bekleyen mesajların sayısı alınır NbrMsg = seeGetEmailCount() If NbrMsg < 0 Then Call showError(frmGet, Code, "seeGetEmailCount:") Code = seeClose() cmdGet.Enabled = True Exit sub End If eMessage.Text = str$(NbrMsg) & " email bekliyor." & NL If NbrMsg = 0 Then eResult.Text = Time$ & " server'da bekleyen emailiniz yok." Else eResult.Text = Time$ & " " & str$(NbrMsg) & " adet mesaj bekliyor." ' emailler okunur For i = 1 To NbrMsg ' email için dosya ismi hazırlanır [NULL ile bitmelidir] FileName = "Email" + LTrim$(str$(i)) + ".mai" + Chr$(0) eMessage.Text = eMessage.Text & RTrim(FileName) & " olarak kaydedildi" & "..." ' AUTO CALL disable edilir Code = seeIntegerParam(sEE_AUTO_CALL_DRIVER, 0) ' Okunan mail set edilir Code = seeGetEmailFile(i, FileName, EmailDir, AttachDir) 'seeDriver kullanılarak email okunur Do ' execute next state [reading message I] Code = seeDriver() If Code = 0 Then ' driver is done Exit Do End If If Code < 0 Then 'driver returned error Call showError(frmGet, Code, "seeDriver:") Exit sub End If BytesRead = seestatistics(sEE_GET_TOTAL_BYTEs_READ) eResult.Text = str(BytesRead) + " bytes read." Loop 'email okunmuştur BytesRead = seestatistics(sEE_GET_TOTAL_BYTEs_READ) AttachCount = seestatistics(sEE_GET_ATTACH_COUNT) eMessage.Text = eMessage.Text & " (" & str$(BytesRead) & " byte;" eMessage.Text = eMessage.Text & str$(AttachCount) & " attachment)" & NL ' AUTO CALL enable edilir Code = seeIntegerParam(sEE_AUTO_CALL_DRIVER, 1&) Next i For i = NbrMsg To 1 step -1 ' email serverdan silinir Code = seeDeleteEmail(i) If Code >= 0 Then eMessage.Text = eMessage.Text & str$(i) + " email server'dan silindi." & NL Else eMessage.Text = eMessage.Text & "serverdan mail silerken hata olu?tu." & NL End If Next i End If Code = seeClose() cmdGet.Enabled = True eResult.Text = Time$ & " Tüm emailler okundu." End sub ![]() düzenleyen Baksana59 |
|
|
|
|
|
#2 |
|
Üye
![]() ![]() ![]() Giriş Tarihi: 02-02-2007
Yer: im Sevdiğimin Yanı
Mesajlar: 732
Rep Puanı: 19306600
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
paylaşım ıcın tesekkurler
|
|
|
|
|
|
#3 |
|
Ko-xross Knight fan...
![]() ![]() Giriş Tarihi: 19-05-2007
Yer: Sultangazi
Mesajlar: 1,321
Rep Puanı: 10118594
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
eline sağlık
|
|
|
|
|
|
#4 |
|
Yabancı
![]() Giriş Tarihi: 25-05-2008
Mesajlar: 1
Rep Puanı: 2375
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
Forum için yararlı olacaktır thx
|
|
|
|
|
|
#5 |
|
Yabancı
![]() Giriş Tarihi: 24-12-2005
Yer: İstanbul
Mesajlar: 29
Rep Puanı: 2375
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
Çalıştıran var mı?
ilk mesaj 2006 ya ait arkadaş banlanmış. böyle paylaşım mı olur yaa. kodunu foruma yazacağına zipleyip ekleseymiş ya tutacağı 10 kb. |
|
|
|
![]() |
| Bu konunun kısa yolunu aşağıdaki sitelere ekleyebilirsiniz |
| Konu Araçları | |
|
|
|
ForumTR Servisleri: ForumTR Video - ForumTR Haber - ForumTR Oyun - ForumTR Chat - ForumTR Mail - ForumTR IRC
Vize İşlemi | Haberler | Okul Arkadaşım Sitemiz bir forum sitesi
olduğu için kullanıcılar her türlü görüşlerini önceden onay olmadan anında
siteye yazabilmektedir. |