[VBA] Posta kutusundaki xml dosyayı accesse nasıl alabilirim
#1
Merhaba arkadaşlar uzunca bir zaman önce xml den access içerisine ilişkili veri alma hakkında bir çalışmam olmuş yetersiz kod bilgim dolayısıyla alamamıştım daha sona jon206 adlı arkadaşın hazırlamış olduğu kod sayesinde sorunum çözülmüştü .
konu Linki http://www.access-sql.com/Konu-Xml-den-v...alabilirim

Şimdi bu konuyla yine bağlantılı olarak sabit bir email adresinden gelen mesaj ekinde bulunan xml dosya dan verileri okuyup access içerisine almam gerek şuanda gmail adresine gelmekteler ancak ofis içerisinde bulunan outlook'a yönlendirebilirim.
Nasıl bir başlangıç yapacağım hakkında hiçbir fikrim yok önceki konuda web servis vardı kullanıcı adı şifre ile bağlanılabiliyordu.Burda ise gelen kutusuna bağlanmak gerek.
Şuanda hazır bir örneğim yok fikre ihtiyacım var.




  Alıntı
Bu mesajı beğenenler:
#2
Posta ekini direk okuyamıyor isek mail ektindeki .xml belgeyi normal bir klasöre nasıl alabilir.



  Alıntı
Bu mesajı beğenenler:
#3
Bir süredir siteye erişimde FİREWALL'a Takıldınız! sorunu yaşıyordum bu konu ile ilgili posta kutusuna erişmeyi başaramadım ancak gelen mesaj ekini dosyaya nasıl kaydedebileceğimi aşağıdaki adreste buldum.Linkeki kodda mesajla birlikte eki kaydetmeyi anlatıyor ben mesaj kısmını sildim sadece ekleri tarih isim ve uzuntı olacak şekilde klasöre mail geldiğinde kaydediyorum artık bundan sonrası için access ile dosyayı okuyup okunan dosyayı silmek kaldı.

http://www.bayramdede.com/outlook-maille...-kaydetme/


Eklenti Dosyaları
.jpg   transfer.JPG (Boyut: 87,61 KB / İndirilme: 99)
.jpg   outlook.JPG (Boyut: 109,42 KB / İndirilme: 91)



  Alıntı
Bu mesajı beğenenler:
#4
2.mesajdaki yöntem tam işimi görüyor ancak outlok arada bir hata iletisi verip tekrar müdahele edene kadar kuralı çalıştırmıyor.Bende tekrar arayış içerisine girdim ve aşağıdaki kodu buldum bu kod direk olarak varsayılan gelen kutusundaki iletilerin tamamını ayrım yapmadan alıyor.Bu sebepten dolayı kodda değişiklikler yapılası gerek kod bilgim yok denecekkadar az olduğundan kendime uyarlayamadım.
Kodda şu işlemlerin yapılamsına ihtiyacım var.

1-)Her seferinde posta kutusundan bulunan tüm ekleri varsayılan mail gelen kutusundan alıyor.

Outlook adresimde 3 adet email tanımlı sadece bu eklerin gelmesi için kullanıldığım ve varsayılan olmayan emaile gelen ekleri kaydetmek istiyorum.Yada tüm klasörleri kontrol edip sadece xxx@xxx.com gibi tek bir adresten gelen ekleri kaydetmek istiyorum.

2-)Gelen maildeki ek ismi "P0011100.Z00" bu şeklide ben bu ekin ismini mesaj konusu ve .xml uzantılı olarak "173085114 00 00.xml" şeklindeki kaydetmek istiyorum 2.mesajda outlook bu şekilde kaydediyor.

3-)Kod her çalıştırıldığında posta kutusunda bulunan tüm ekleri tekrar kalasöre kopyalıyor.
Bunun çözümü olarak klasöre kopyalanan ekin olduğu mailin silinmesi gerektiğini düşünüyorum.



Visual Basic
  1. Option Compare Database
  2.  
  3. Public Sub ProcessInbox()
  4. Dim oOutlook As Outlook.Application
  5. Dim oNs As Outlook.nameSpace
  6. Dim oFldr As Outlook.MAPIFolder
  7. Dim oAttachments As Outlook.Attachments
  8. Dim oAttachment As Outlook.Attachment
  9. Dim iMsgCount As Integer
  10.  
  11. Dim oMessage As Outlook.MailItem
  12.  
  13. Dim iCtr As Long, iAttachCnt As Long
  14.  
  15. Dim sFileNames As String
  16. Dim aFileNames() As String
  17.  
  18.  
  19. 'get reference to inbox
  20. Set oOutlook = New Outlook.Application
  21. Set oNs = oOutlook.GetNamespace("MAPI")
  22. Set oFldr = oNs.GetDefaultFolder(olFolderInbox)
  23. Debug.Print "Total Items: "; oFldr.Items.Count
  24. Debug.Print "Total Unread items = " & oFldr.UnReadItemCount
  25.  
  26.  
  27. For Each oMessage In oFldr.Items
  28.  
  29. With oMessage
  30. 'basic info about message
  31. Debug.Print .To
  32. Debug.Print .CC
  33. Debug.Print .Subject
  34. Debug.Print .Body
  35. If .UnRead Then
  36. Debug.Print "Message has not been read"
  37. Else
  38. Debug.Print "Message has been read"
  39. End If
  40. iMsgCount = iMsgCount + 1
  41. 'save message as text file
  42.  
  43. 'reference and save all attachments
  44. With oMessage.Attachments
  45. iAttachCnt = .Count
  46. If iAttachCnt > 0 Then
  47. For iCtr = 1 To iAttachCnt
  48.  
  49. .Item(iCtr).SaveAsFile "D:\TRANSFER\ANADOLU\" & .Item(iCtr).FileName & ".XML"
  50.  
  51. Next iCtr
  52. End If
  53. End With
  54. End With
  55. DoEvents
  56.  
  57. Next oMessage
  58.  
  59.  
  60. Set oAttachment = Nothing
  61. Set oAttachments = Nothing
  62. Set oMessage = Nothing
  63. Set oFldr = Nothing
  64. Set oNs = Nothing
  65. Set oOutlook = Nothing
  66.  
  67. End Sub





Eklenti Dosyaları
.rar   ANDTRN.rar (Boyut: 66,34 KB / İndirilme: 92)



  Alıntı
Bu mesajı beğenenler:
#5
Merhaba bu konuyu daha önce denemiş outlook içerisine eklediğim üsteki kod ile gelen ekli mailleri
klasöre gönderebilmiştim.Şimdi ise outlook bu yolu kabul etmiyor kod çalıştır eylemi kurallar içerisinden
çıkartılmış bu modda eylem çalışıtırılamıyor gibi bir ileti verip hataya geçiyor.Bende tekrar eski bililer araştırdım
ancak istediğim şekliyle verileri alamıyorum.

Senaryo şu şekilde olmalı
Bir butonun tıklandığı olayında outlook açılacak outlook içerisinde birden fazla mail ve gelen kutusu bulunabilir
bizim istedğimiz mailin gelen kutusu veya tüm gelen kutuları taranarak mail ekleri .xls .xml gibi uzantılı olanlar
D:\Veri klasörü içerine kaydedilmeli ve işlem tamamlanmalı .
Klasör kırıter kontrolü yapılırken xxx@xxx.com gibi mail adresinden gelen ekleri bulunan maillerde kontrolde
esdkilerek sonuç alınabilir.
Bu işlemi yapan veya benzer sonuç verecek uygulaması olan arkadaşlar yardım rica ediyorum.
İnternetten bulmuş olduğum birkaç örnek kodla deneme yaptım ancak sonuç alamadım denediğim kodlar
ekteki örnekte mevcut.


Eklenti Dosyaları
.rar   Yeni Microsoft Access Database.rar (Boyut: 31,92 KB / İndirilme: 71)



  Alıntı
Bu mesajı beğenenler:
#6
Visual Basic
  1. Public Sub ProcessInbox()
  2. Dim oOutlook As Outlook.Application
  3. Dim oNs As Outlook.nameSpace
  4. Dim oFldr As Outlook.MAPIFolder
  5. Dim iMsgCount As Integer
  6.  
  7. Dim oMessage As Outlook.MailItem
  8. Dim iCtr As Long, iAttachCnt As Long
  9. Dim SilDosNu As String, SilIleti As Object
  10.  
  11. Set oOutlook = New Outlook.Application
  12. Set oNs = oOutlook.GetNamespace("MAPI")
  13. Set oFldr = oNs.GetDefaultFolder(olFolderInbox)
  14. Const Yer As String = "D:\" '********Dosya Klasoru ***********
  15. For Each oMessage In oFldr.Items
  16.  
  17. With oMessage
  18. 'Debug.Print .To,.CC,.Subject,.Body
  19. iMsgCount = iMsgCount + 1
  20.  
  21. If .To = "sonerdursun@gmail.com" Then
  22. With oMessage.Attachments
  23. iAttachCnt = .Count
  24. If iAttachCnt > 0 Then
  25. For iCtr = 1 To iAttachCnt
  26. .Item(iCtr).SaveAsFile Yer & .Item(iCtr).FileName & StrReverse(Mid(StrReverse(.Item(iCtr).FileName), 1, InStr(1, StrReverse(.Item(iCtr).FileName), ".")))
  27. Next iCtr
  28. SilDosNu = oMessage.entryID
  29. End If
  30. Forms("ANADOLUXML").Komut4.Caption = oMessage.Subject & IIf(oMessage.UnRead, " Okunmadi", " Okundu")
  31. Set SilIleti = oOutlook.Session.GetItemFromID(SilDosNu)
  32. SilIleti.Delete
  33. End With
  34. End If
  35. End With
  36. DoEvents
  37. Next oMessage
  38.  
  39. Set oMessage = Nothing
  40. Set oFldr = Nothing
  41. Set oNs = Nothing
  42. Set oOutlook = Nothing
  43.  
  44. End Sub



olarak degistiriniz.



  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  [FORM] Metin Kutusundaki Değeri Başka Bir Metin Kutusuna Aktarmak TheREDROSE 2 422 02-08-2024, 11:56
Son Mesaj: TheREDROSE
  [FORM] Metin Kutusundaki Değere Göre Altforma Kayıt Eklensin Yada Eklenmesin ŞabanTR 4 583 17-12-2023, 17:40
Son Mesaj: ŞabanTR
access-sql-9 Text Kutusundaki Rakamı Alt Formda Bulan Hesap Sutunun Tüm Satırlarına Nasıl Eklenir bilservisci 7 917 29-08-2023, 22:19
Son Mesaj: bilservisci
  [FORM] Liste Kutusundaki Veriye Göre Stok Ve Ihtiyaç Verisini Otomatik Hesaplama husem 2 607 08-06-2023, 19:03
Son Mesaj: husem
  [FORM] Liste Kutusundaki Veriyi Mail Ile Göndermek husem 8 1.512 27-01-2023, 00:52
Son Mesaj: BeyTor
  Acces Raporda Metin Kutusundaki Yaziyi Sol Alttan Sağ üste Doğru çapraz Yazdırmak ŞabanTR 4 575 09-01-2023, 12:43
Son Mesaj: ŞabanTR
  Networkte Access Dosyası Bir User'da Açıksa, Diğer User'lar Dosyayı Açamasın . YENIFENER 2 467 17-08-2022, 11:47
Son Mesaj: YENIFENER
  [FORM] Liste Kutusundaki çoklu Seçimi Aktif - Pasif Yapabilme husem 2 565 11-06-2022, 13:40
Son Mesaj: husem

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi