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

Abdullah Şahin

Altın Üye
Altın Üye
Kayıt
3 Nisan 2008
Mesaj
2.632
Tepki
89
Tekstil Grafik Kursu
Kaynak
Burak Şekercioğlu

Not : Burak Abi ye verdiği bilgi için burdan teşekkür ederim. Kendisinin hazırlamış olduğu metni ve resmi değiştirmeden yayınlıyorum.


****
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.

Linki görmek için izniniz yoktur Şimdi giriş yap veya üye ol.


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(”
Linki görmek için izniniz yoktur Şimdi giriş yap veya üye ol.
“) = False
.Item(”
Linki görmek için izniniz yoktur Şimdi giriş yap veya üye ol.
“) = 1
.Item(”
Linki görmek için izniniz yoktur Şimdi giriş yap veya üye ol.
“) = “burak@sekercioglu.eu” ‘Gönderici mail adresi
.Item(”
Linki görmek için izniniz yoktur Şimdi giriş yap veya üye ol.
“) = “<mail adres şifresi>” Mail adresinizin şifresi
.Item(”
Linki görmek için izniniz yoktur Şimdi giriş yap veya üye ol.
“) = “mail.sekercioglu.eu” ‘Giden Posta Sunucunuz
.Item(”
Linki görmek için izniniz yoktur Şimdi giriş yap veya üye ol.
“) = 2
.Item(”
Linki görmek için izniniz yoktur Şimdi giriş yap veya üye ol.
“) = 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, “
Linki görmek için izniniz yoktur Şimdi giriş yap veya üye ol.

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(”
Linki görmek için izniniz yoktur Şimdi giriş yap veya üye ol.
“) = False
.Item(”
Linki görmek için izniniz yoktur Şimdi giriş yap veya üye ol.
“) = 1

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

omerullah

Üye
Kayıt
14 Ekim 2010
Mesaj
1
Tepki
0
Sayın Abdullah ŞAHİN,
Çalışmanız son derece güzel olmakla birlikte, kendimize göre düzenleyemedim. Yılbaşı kutlaması için kendi hazırladığımız tasarım + Logomuz ile kutlama text'ini excel doyasında bulnan kişiler göndermek istiyorum. A sütun Adı, B sütunu Soyadı C sütununda mail adresleri bulunmaktadır. yardımlarınızı rica ederim. Siz uzman arkadaşlardan yardımlarınızı rica ederim.

saygılarımla.
Ömer ÜZÜMCÜ
omeruzumcu@hotmail.com
 
Yukarı Alt