Merhaba Arkadaşlar,
Form içerisinden mail gönderme konusunu bu makalemizle sonlandırmış olacağız..
Bu makalemizde Mail Gönder butonu arkasındaki koddan bahsedeceğimizi geçen makalemizde söylemiştik. Şimdi bu kodu tek tek açıklayalım.
Öncelikle kod içerisinde kullanılan değişkenlerimizi tanımlıyoruz.
Option Compare Database
Option Explicit
Dim objOutlook As
Outlook.Application
Dim olNs As
Outlook.Namespace
Dim objOutlookMsg As
Outlook.MailItem
Dim objOutlookRecip As
Outlook.Recipient
Dim objOutlookAttach
As Outlook.Attachment
Dim MailKonusu As
String
Dim MailMesaj As
String
Dim MailAdres As
String
.......
.......
|
Konu, Mesaj ve Adreste boşluk kontrolü yapıyoruz, bunlardan herhangi biri boş ise Mesaj kutusu ile uyarıyoruz, değilse kodun çalışması devam ediyor.
Option Compare Database
Option Explicit
………..
If IsNull(Me.txtMailAdresi) Or IsNull Me.txtMailKonusu)_
Or IsNull (Me.txtMesaj) Then
Msgbox
"Boş alanları tamamlayınız!",vbOkOnly,"Dikkat"
Else
MailAdres =
Me.txtMailAdresi
MailKonusu =
Me.txtMailKonusu
MailMesaj =
Me.txtMesaj
…………
|
Mail göndermek için gerekli olan değişkenlerimizi tanımladık. Şimdi göndereceğimiz raporlarımızı tanımlıyoruz.
Option Compare Database
Option Explicit
………..
DoCmd.OutputTo
acOutputReport, "AccessRaporunİsmi",_ "PDFFormat(*.pdf)",
"PDFDosyasınınKonumu", FalseDoCmd.OutputTo acOutputReport, "AccessRaporunİsmi",_ "PDFFormat(*.pdf)", "PDFDosyasınınKonumu", False
…………
|
PDF Dosyasının Konumuna örnek: "D:\personel"
Sondaki False seçeneği PDF dosyası oluşturulduktan sonra dosyanın açılmayacağını ifade eder. True değerini eklerseniz PDF dosyası oluştuktan sonra açılır. Devam edelim...
Option Compare Database
Option Explicit
………..
'Outlookda işlem yapacağız.
SetobjOutlook=CreateObject("Outlook.Application")
Set
olNs = objOutlook.GetNamespace("MAPI")olNs.Logon
…………
|
Yeri gelmişken Outlook kullanacağımızı MS Access'e bildirmemiz gerekiyor. Bunun için VBA penceresinde Tools -> Referans bölümünden,
Microsoft Outlook XX,0 Object Library referansını seçmemiz gerekiyor. Bunuda tanımladıktan sonra kodumuzu yazmaya devam ediyoruz.
Option Compare Database
Option Explicit
………..
' Mesajı Oluşturalım
Set objOutlookMsg = objOutlook.CreateItem(olMailItem)
With objOutlookMsg
' Mail adresini ekliyoruz.
Set objOutlookRecip = .Recipients.Add("Alıcının Mail Adresi
Yazılacak")
objOutlookRecip.Type = olTo
'Alıcının adresini formdan aldırmak istiyoruz o halde;
Set objOutlookRecip = .Recipients.Add("Alıcının Mail Adresi
Yazılacak")
'Yerine,
Set objOutlookRecip = .Recipients.Add(Me.txtMailAdresi)
' Diğer Alanların Doldurulması
.Subject = "İrsaliye ve Hata Listesi Raporları"
'Yerine,
.Subject = Me.txtMailKonusu
.Body = "Personel ve Ücretler raporu ektedir.." & vbCrLf
& vbCrLf
'Yerine,
.Body = Me.txtMesaj & vbCrLf & vbCrLf
.Importance = olImportanceHigh
'Şimdi de sıra raporlarımızı mailimize eklemeye geldi.
' Gönderilecek ekleri tanımlıyoruz.
.Attachments.Add ("D:\personel.pdf")
.Attachments.Add ("D:\ucret.pdf")
' Alıcı adını çözümlüyoruz, bir yanlışlık var mı yok mu
kontrol ediyoruz.
For Each objOutlookRecip In .Recipients
objOutlookRecip.Resolve
Next
' Mesajı göndermeden önce görünsün mü? Onu ayarlıyoruz.
If DisplayMsg Then
.Display
Else
.Save
.Send
End If
End With
olNs.Logoff
Set objOutlook = Nothing
…………
|
Evet arkadaşlar, butonumuzun arkasında çalışacak kodu tamamlamış bulunuyoruz. Şimdi düzenlenmiş kodu vereyim; Butonumuzun ismi cmdMailGonder olsun. Click olayına,
Option Compare Database
Option Explicit
Private Sub
cmdMailGonder_Click()
' Değişkenlerimizi
tanımlıyoruz.
Dim
objOutlook As Outlook.Application
Dim olNs As
Outlook.Namespace
Dim
objOutlookMsg As Outlook.MailItem
Dim
objOutlookRecip As Outlook.Recipient
Dim
objOutlookAttach As Outlook.Attachment
Dim
MailKonusu As String
Dim
MailMesaj As String
Dim
MailAdres As String
' Boşluk Kontrolü
If
IsNull(Me.txtMailAdresi) Or IsNull(Me.txtMailKonusu) Or IsNull(Me.txtMesaj)
Then
MsgBox
"Boş alanları tamamlayınız!", vbOKOnly, "Dikkat"
MailAdres =
Me.txtMailAdresi
MailKonusu =
Me.txtMailKonusu
MailMesaj =
Me.txtMesaj
DoCmd.OutputTo
acOutputReport, "personel", "PDFFormat(*.pdf)",
"D:\personel.pdf", False
DoCmd.OutputTo
acOutputReport, "ucretler", "PDFFormat(*.pdf)",
"D:\ucretler.pdf", False
' Outlookda işlem yapacağız.
Set
objOutlook = CreateObject("Outlook.Application")
Set olNs =
objOutlook.GetNamespace("MAPI")
olNs.Logon
' Mesajı
Oluşturalım
Set
objOutlookMsg = objOutlook.CreateItem(olMailItem)
With
objOutlookMsg
' Mail adresini
ekliyoruz.
Set
objOutlookRecip = .Recipients.Add(MailAdres)
objOutlookRecip.Type
= olTo
' Diğer Alanların
Doldurulması
.Subject =
MailKonusu
.Body =
MailMesaj & vbCrLf & vbCrLf
.Importance
= olImportanceHigh
' Gönderilecek
ekleri tanımlıyoruz.
.Attachments.Add
("D:\personel.pdf")
.Attachments.Add
("D:\ucretler.pdf")
' Alıcı adını
çözümle
For Each
objOutlookRecip In .Recipients
objOutlookRecip.Resolve
Next
' Mesajı
göndermeden önce görünsün mü? Onu ayarlıyoruz.
If
Me.onayGoster Then
.Display
Else
.Save
.Send
End If
End With
olNs.Logoff
Set
objOutlook = Nothing
End Sub
|
Eğer Pencere onay kutusu işaretli değilse, doğrudan gönderilir. Bu durumda mail gönderilmeden bilgiler üzerinde değişiklik yapmanız mümkün olmaz.
Sub EMailRaporGonder() Dim oApp As New Outlook.Application Dim oEmail As Outlook.MailItem Dim EklenecekDosya As String Dim GununTarihi As String 'Raporu tarih damgalı db ile aynı klasörde dışa aktar. GununTarihi = Format(Date, "ddmmyyyy") EklenecekDosya = Application.CurrentProject.Path & "\" & RaporAdi & "_" & GununTarihi & ".pdf" DoCmd.OutputTo acReport, "r_personel", acFormatPDF, EklenecekDosya, False 'Oluşturulan raporun sonuçlarını e-mail ile gönderin. Set oEmail = oApp.CreateItem(olMailItem) With oEmail .Recipients.Add "Gönderilecek Kişinin Mail Adresi" .Subject = "Stok Raporları" .Body = "Test Sonucu" .Attachments.Add EklenecekDosya .Send End With MsgBox "Email Gönderildi!", vbInformation, "E-Mail Durumu" End Sub |
Sub HTMLFormatlıGonder() Dim onrMail As Outlook.MailItem Dim onrOutlApp As Outlook.Application Dim ekle As Outlook.Attachment Set onrOutlApp = New Outlook.Application Set onrMail = onrOutlApp.CreateItem(olMailItem) With onrMail .To = "gonderilecekmailadresi" .Subject = "HTML olarak Mail Gönderme" .BodyFormat = olFormatHTML .HTMLBody = "<HTML><BODY><span style=""color:#80BFFF"">Yazı Tipi Rengi</span style=""color:#80BFFF""> <br>Bu <b>Kalın Yazı</b> burada.</br> <br><u>Bu yazı ise altı çizili</u></br><br><p style='font-family:calibri;Yazı Tipi Boyutu:30'>Font size</br></BODY></HTML>" Set ekle = .Attachments.Add("resminadresi.jpg") .Send End With onrOutlApp.Quit Set onrMail = Nothing Set onrOutlApp = Nothing End Sub |
0 Yorumlar