CDO Mail gönderme Etiketine sahip yazılar.
Kas
16
2008

Microsoft Office Excel ile nasıl toplu mail gönderilir?

Geçenlerde bir iş için excel listesindeki şahıslara otomatik olarak mail gönderilmesi gerekiyordu. Malum doğum günleri ve evlilik yıldönümleri gibi özel günlerde kişileri mail olarak da hatırlamak güzel bir jest oluyor.

Bunun için oturup değişik bir makro yazdım. Program excel sayfasında yer alan kişilerin doğum tarihleri ile  evlilik tarihlerinin gün ve ay bilgilerine bakarak o anki gün ve ay bilgilerini karşılaştırıp eğer kişinin doğum günü ise doğum günü mesajı, evlilik yıldönümü ise evlilik kutlama mesajını otomatik olarak kişinin mailine gönderiyor.

Programda CDO mail eklentisi kullanılmıştır. Bilmeyenler için söyleyeyim excel de makro (VBA) alanına ALT+f11 tuşlarına basarak geçilir.

 

Excel hücre yapısında A sütunu kişi ADI, B sütunu Soyadı, C sütunu Doğum Tarihi, D sütunu Evlilik Tarihi, E sütunu ise e-mail adresidir.

Şimdi kodlara bakarsak;

    Const ForReading = 1, ForWriting = 2, ForAppending = 8

Private Sub Mail_Yolla(adres, dogum, evlilik, adsoyad)
If evlilik = 1 Then
dosya = “c:\mesajlar\evlilik.txt” ‘evlilik mesaj dosyası
baslik = “Mutlu Yıllar” ‘Evlilik mail başlığı
End If
If dogum = 1 Then
dosya = “c:\mesajlar\dogum.txt” ‘Doğum günü mesaj dosyası
baslik = “Uzun ve mutlu bir ömür dileklerimle” ‘Doğum günü mail başlığı
End If
mesajimiz = dosyaoku(dosya)
mesajimiz = Replace(mesajimiz, “<adsoyad>”, adsoyad) ‘<adsoyad> alanı ile kişi adı değiştiriliyor
On Error Resume Next
Dim tanimla, ayarla As Object, referans
Set tanimla = CreateObject(“CDO.Message”)
Set ayarla = CreateObject(“CDO.Configuration”)
ayarla.Load -1
Set referans = ayarla.Fields
With referans
.Item(“
http://schemas.microsoft.com/cdo/configuration/smtpusessl“) = False
.Item(“
http://schemas.microsoft.com/cdo/configuration/smtpauthenticate“) = 1
.Item(“
http://schemas.microsoft.com/cdo/configuration/sendusername“) = “burak@sekercioglu.eu” ‘Gönderici mail adresi
.Item(“
http://schemas.microsoft.com/cdo/configuration/sendpassword“) = “<mail adres şifresi>” Mail adresinizin şifresi

.Item(“http://schemas.microsoft.com/cdo/configuration/smtpserver“) = “mail.sekercioglu.eu” ‘Giden Posta Sunucunuz

.Item(“http://schemas.microsoft.com/cdo/configuration/sendusing“) = 2
.Item(“
http://schemas.microsoft.com/cdo/configuration/smtpserverport“) = 25
.Update
End With
With tanimla
Set .Configuration = ayarla
.To = adres
.CC = “”
.BCC = “”
.From = “””burak”” <
burak@sekercioglu.eu>” ‘Kimden mail gidecekse
.Subject = baslik
.TextBody = mesajimiz
.Send
End With
If Err.Number = -2147220973 Then
MsgBox “Lütfen Firewall ayarlarınızı kontrol ediniz”, vbExclamation, “Mail Gönderilemedi”
Exit Sub
End If
MsgBox ” E-postanız gönderildi”, vbInformation, “
www.sekercioglu.eu
End Sub

Function dosyaoku(dosya)
   ‘Hazır mesaj şablonlarını okuyan fonksiyon
   ‘text dosya içinde <adsoyad> olarak tanımlanan alana program otomatik olarak kişi adsoyad bilgisini yazar
    Set fso = CreateObject(“Scripting.FileSystemObject”)
    Set ts = fso.OpenTextFile(dosya, ForReading)
    While Not ts.AtEndOfStream
        dosyaoku = dosyaoku & ts.ReadLine & vbCrLf
    Wend

    ts.Close
End Function

Sub kontrol()
sayfa = “sayfa1”
q = q + 1
satir = Worksheets(sayfa).Cells(q, 1).Value

Do While satir <> “”
q = q + 1
satir = Worksheets(sayfa).Cells(q, 1).Value
ad = Worksheets(sayfa).Cells(q, 1).Value
soyad = Worksheets(sayfa).Cells(q, 2).Value
dogum = Worksheets(sayfa).Cells(q, 3).Value
evlilik = Worksheets(sayfa).Cells(q, 4).Value
adres = Worksheets(sayfa).Cells(q, 5).Value
dogumay = Month(dogum)
dogumgun = Day(dogum)

evlilikay = Month(evlilik)
evlilikgun = Day(evlilik)
adsoyad = ad & ” ” & soyad

bugun = Day(Now)
buay = Month(Now)

If bugun = dogumgun And buay = dogumay Then
dogum = 1
evlilik = 0
Mail_Yolla adres, dogum, evlilik, adsoyad
End If

If bugun = evlilikgun And buay = evlilikay Then
dogum = 0
evlilik = 1
Mail_Yolla adres, dogum, evlilik, adsoyad
End If

 

Loop

End Sub

 

ayrıca c:\mesajlar klasörü içersinde 2 adet text dosya hazırlamanız gerekiyor. Bunlardan bir tanesinin ismi dogum.txt diğeri de evlilik.txt olmalıdır (program içersinde verilen dosya yoluna dikkat ediniz!

bu dosyaların içeriği ise aşağıdaki gibi olabilir

dogum.txt Dosyası Örneği;

Nice Mutlu senelere sevgili <adsoyad>

Umarım tüm dileklerin gerçekleşir ve sevdiklerinle birlikte mutlu ve huzurlu bir yıl geçirirsin.

Burak ŞEKERCİOĞLU
0312 123 45 67

göreceğiniz gibi yazı içersinde <adsoyad> olarak bir alan tanımladık. Programımız bu alanı algılayıp onun yerine A ve B sütunlarından alınan ADSOYAD verisini yerleştirecektir.

 

Program bu kadar.. Kaç kişiye kadar mail gönderebiliriz diye soracak olursanız. Program A sütununda boş satır görene kadar tüm satırları işleyecektir, herhangi bir sınırlama yoktur.

Ekleme: Eğer bu programcığı EXCHANGE SERVER kullanarak gönderim yapacaksanız o zaman kod içersinde yer alan
.Item(“http://schemas.microsoft.com/cdo/configuration/smtpusessl“) = False
.Item(“
http://schemas.microsoft.com/cdo/configuration/smtpauthenticate“) = 1

 satırlarını iptal ederek smtp server adresi yerine de EXCHANGE SERVER sunucu netbios isminizi yazmanız gerekmektedir.

TeamViewer ile İnternet üzerinden Uzaktan Erişim ve Destek Sekercioglu.eu Uzaktan Yardım
Ammyy Uzaktan Yardım
WinRAR
WEBMAIL Google PageRank Checker
Twitterda Takip Edin! Twitterda Takip Edin!
Twitter

Üye Paneli

Son Yazılar

Kategoriler

Son Yorumlar