Outlook ile doğum günü kutlamak

Arkadaşlarınıza, müşterilerinize doğum günlerinde otomatik olarak kutlama e-postası göndermek istiyorsunuz. Bu işlemi yapan ücretli-ücretsiz programlar var. Peki, sadece Outlook kullanarak bunu nasıl yapabilirsiniz?

Tüm Office ürünlerinde olduğu gibi, Outlook’ta da, arkaplanda VBA ile program yazarak bazı işlemleri yaptırabiliyoruz. Şimdi de bu yöntemi kullanacağız.

Önce Araçlar-Makro-Makrolar (Tools-Macro-Macros ) menüsünü açıyoruz. Makro adı olarak SendBirthdayMail veriyoruz. Oluştur (Create) düğmesine basıyoruz.

Açılan pencerede SendBirthdayMail prosedürünü alttaki kodla değiştiriyoruz.

Sub SendBirthdayMail()
 
   Dim objContactsFolder As Outlook.MAPIFolder
   Dim objContacts As Outlook.Items
   Dim objContact As Object
   Dim iCount As Integer
   Dim olItem As Outlook.ContactItem
 
   'Kişileri aç
   Set objContactsFolder = Session.GetDefaultFolder(olFolderContacts)
   Set objContacts = objContactsFolder.Items
 
   'Yeni bir mail oluştur
   Set objMsg = Application.CreateItem(olMailItem)
   objMsg.Subject = "Doğum Günün Kutlu Olsun" & Date
 
   objMsg.HTMLBody = " Nice Yıllara"
 
   'Dolaş. Uygun olanlara gönder
   For Each objContact In objContacts
      If TypeName(objContact) = "ContactItem" Then
         Set olItem = objContact
         If olItem.Birthday = Date Then
         
            'Email-1 adresi
            objMsg.To = olItem.Email1Address
            objMsg.Send
         End If
      End If
   Next
   
   'Değişkenleri temizle
   Set objMsg = Nothing
   Set objContact = Nothing
   Set objContacts = Nothing
   Set objContactsFolder = Nothing
 
End Sub

Bu makro çalıştırıldığı zaman, Kişiler (Contacts) listesinde bulunan ve doğum günü girilmiş olan kişiler kontrol edilecek ve doğum günü bugün olanlara e-posta gönderilecektir. Koddaki HTMLBody değişkenine göndereceğimiz mesajın içeriğini yazıyoruz.

Peki, eğer her sabah bilgisayarımızı ve Outlook’u yeniden açtığımızda bu makroyu çalıştırmasını istiyorsak…

O zaman, makroyu yazdığımız pencereyi kapatmıyoruz. Soldaki Project kısmında proje listesinde ThisOutlookSession yazan yere çift tıklayıp alttaki kodu ekliyoruz.

Private Sub Application_Startup()
     SendBirthdayMail
End Sub

Artık her gün doğum günü mesajları kendiliğinden gönderilecektir.

Eğer, Outlook’u ve bilgisayarı hiç kapatmıyorsak?
Üstte yazdığımız kod sadece açılışta çalıştığı için farklı bir yaklaşım getirmek durumundayız.
Şöyle çözeceğiz. Her gün sabah saat 09:00 için bir randevu ekliyoruz. Konu (Subject) kısmına Birthday yazıyoruz. Anımsatıcı (Reminder) seçeneğini işaretleyip O dakika (O minutes) olarak ayarlıyoruz.
Her gün aynı kontrolü yapması için randevuyu her gün tekrarlamasını istiyoruz. Pencerenin araç çubuğundaki Yinelenme (Recurrence) düğmesine tıklayıp gerekli ayarları yapıyoruz.

Araçlar-Makro-Visual Basic Düzenleyicisi (Tools-Macro-Visual Basic Editor) penceresini açıyoruz. Soldan ThisOutlookSession içine alttaki kodu ekliyoruz.

Dim WithEvents objReminders As Outlook.Reminders

' Hatırlatıcı çıktığında 
Private Sub Application_Reminder(ByVal Item As Object)
 If (TypeOf Item Is AppointmentItem) And (Item.Subject = "Birthday") Then
     SendBirthdayMail
 End If
End Sub
 
Private Sub Application_Startup()
    Set objReminders = Application.Reminders
End Sub

'Hatırlatıcıyı da işin bitince kapat 
Private Sub objReminders_ReminderFire(ByVal ReminderObject As Reminder)
  If ReminderObject.Item.Subject = "Birthday" Then
    ReminderObject.Dismiss
  End If
End Sub

Outlook açık da kalsa, her gün o saatte mailleri gönderecektir.

3 comments

  1. Bilal Bey merhaba,
    Gerçekten çok faydalı bir bilgi teşekkürler.Benim bir sorum olacak doğum günü mesajı için body kısmına istediğiniz mesajı yazabilirsiniz demişsiniz peki bunun yerine daha güzel bir mail hazırlamak istiyorum.içinde resim ve logo olan bir dosya.Yazdığınız script bunu nasıl gönderebilir.Örneğin taslak bir maili otomatik olarak gönderecek.Yardımcı olursanız sevinirim.
    Teşekkürler.

    ———————-
    BA: Yazıdaki kodda geçen HTMLBody değişkenine sadece “Nice Yıllara” yazısını değil istediğiniz HTML kodunu koyabilirsiniz. Bir diğer alternatif de, harici bir HTML sayfası oluşturup, kodla bunu okumak… Şu sayfada Method 4 kısmını inceleyin.

  2. Merhaba çalışma için teşekkrüler

    Scripti denedim hata vermeden çalışıyormuş gibi görünüyor fakat işlem yapmıyor.
    Office 2003 Tr kullanıyorum Türkçe olmasından kaynaklanan bir problem olabilir mi ? Saygılar.

    ———————-
    Cevap : Office 2003 Türkçe sürümünde denedim. Çalışıyor.

  3. bilal bey,

    cok tesekkur ederim. Nasil isime yaradi anlatamam. Cok tesekkurler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir