Konu Araçları | Seçenekler: | Gösterim Stili
Tarih
26/07/2012 10:22
Konu Sahibi
bonasera
Yorumlar
16
Okunma
3579
Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 5
  • 4
  • 3
  • 2
  • 1

Derecelendirme: 5/5 - 1 oy

bonasera

Gümüş Üye
Kullanici Avatari
Gümüş Üye
E.... Ş....
96
29/10/2008
0
Edirne
Ofis 2013 64 Bit
14/02/2017,15:30
Çözüldü 
Değerli Arkadaşlar Merhaba,

Ben bir personel formu yaptım. Bu formda bilgilerin olduğu formda e-maile bastığımda o kişiye mail gönderebiliyorum. Ancak benim istediğim, ünvana göre mail göndermek, Yani bir comboboxtan ünvanı seçip ünvanı seçili olan kişilere mail göndermek. Bir de tüm kişilere mail göndermek.

Her zamanki gibi forumda araştırma yaptım ancak, baktığım konular toplu mail gönderme ile ilgili.

Lütfen yardımcı olur musunuz? Sadd

Ek Dosyalar
personelformu.rar


Cevapla

Seruz

Uzman
Kullanici Avatari
Uzman
S.... U....
1.550
7
30/10/2008
814
Tekirdağ
Ofis XP
13/09/2017,17:08
Çözüldü 
Sn. bonasera,

Yorumunuzda seçili kişiye mail gönderebiliyorum yazmışsınız ama gönderdiğiniz örnekteki formda E-Posta komut düğmesinde herhangi bir kod görünmüyor.

Ayrıca bahsettiğiniz gibi Ünvan seçme içeren bir formda yok.

Benim daha önce DAO ile sorgudaki kayıtları teker teker okuyup sırayla mail gönderdiğim bir kod vardı, onu gönderiyorum

Visual Basic Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
Private Sub Ilgililere_Mail_Gonder()
On Error GoTo Hata
'---------------------------------------------------------------
    Dim DB As DAO.Database, RS As DAO.Recordset
    Dim objMessage As Object
    Dim SMTP_Sunucu, strBody
    Dim Kullanicinin_Adi, Kullanicinin_Mail_Adresi, Kullanicinin_Mail_Sifresi
    Dim TalepEdenin_Adi, TalepEdenin_Mail_Adresi
    Dim Onceki_TALEP_EDEN
    Const cdoAnonymous = 0
    Const cdoBasic = 1
    Const cdoNTLM = 2
    '---------------------------------------------------------------
    SMTP_Sunucu = "smtp.bline.net.tr"
    Kullanicinin_Adi = Me.TALEP_EDEN.Column(1)
    Kullanicinin_Mail_Adresi = Me.TALEP_EDEN.Column(2)
    Kullanicinin_Mail_Sifresi = Me.TALEP_EDEN.Column(3)
    If Kullanicinin_Mail_Adresi = "" Or Kullanicinin_Mail_Sifresi = "" Then
        MsgBox "Gerekli bilgileriniz eksik olduğu için Malzeme Talep Edenlere e-posta gönderilemiyor !" & vbCrLf & "Lütfen Bilgi Teknolojileri Departmanına bilgi veriniz", vbCritical, "Hata oluştu."
        Exit Sub
    End If
    '---------------------------------------------------------------
    Set DB = CurrentDb()
    Set RS = DB.OpenRecordset("Select * From Malzeme_Alis_MailListesi Where HRB_ID=" & [Forms]![Malzeme_Alis]![IrsListesi], dbOpenForwardOnly)
    Set objMessage = CreateObject("CDO.Message")
    Onceki_TALEP_EDEN = ""
    Do While Not RS.EOF
        '---------------------------------------------------------------
        If Onceki_TALEP_EDEN <> RS.Fields("TALEP_EDEN") Then
            '---------------------------------------
            'Bir önceki kişiye mail gönderiliyor
            '---------------------------------------
            If Onceki_TALEP_EDEN <> "" Then
                strBody = strBody & "</table>"
                strBody = strBody & "</font><br><br>"
                '---------------------------------------------------------------
                objMessage.Subject = "Gelen Malzeme Bilgisi"
                objMessage.From = Kullanicinin_Adi & "<" & Kullanicinin_Mail_Adresi & ">"
                objMessage.To = TalepEdenin_Mail_Adresi
                objMessage.HTMLBody = strBody
                objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = Kullanicinin_Mail_Adresi
                objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = Kullanicinin_Mail_Sifresi
                objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
                objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = SMTP_Sunucu
                objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoBasic
                objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 587
                objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False
                objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
                objMessage.Configuration.Fields.Update
                objMessage.Send
                '---------------------------------------------------------------
            End If
            TalepEdenin_Adi = RS.Fields("Kull_ADI")
            TalepEdenin_Mail_Adresi = RS.Fields("Kull_MAIL")
            '---------------------------------------
            ' Yeni kişi için yeni mail oluşturuluyor
            '---------------------------------------
            strBody = ""
            strBody = strBody & "<p>"
            strBody = strBody & "<font face='Verdana' size='2'>"
            strBody = strBody & "Sn. " & TalepEdenin_Adi
            strBody = strBody & "<br><br>"
            strBody = strBody & "Talep etmiş olduğunuz malzeme(ler) gelmiştir."
            strBody = strBody & "<br><br>"
            strBody = strBody & "'MALZEME TALEPLERİ' programında açılış formunda veya "
            strBody = strBody & "<br>"
            strBody = strBody & " menüden 'Teslim Onayı' formunu seçerek gelen malzemeleri "
            strBody = strBody & "<br>"
            strBody = strBody & " teslim aldığınızı onaylamalısınız."
            strBody = strBody & "<br>"
            strBody = strBody & "Teslim onayından sonra malzemelerinizi depodan alabilirsiniz."
            strBody = strBody & "<br><br><br>"
            strBody = strBody & "Gelen Malzemeler:"
            strBody = strBody & "</font>"
            strBody = strBody & "</p>"
            strBody = strBody & "<table border='1' cellspacing='0' cellpadding='1' font face='Verdana' size='1' bgcolor='LightBlue'>"
            strBody = strBody & "<tr>"
            strBody = strBody & "<td><b>&nbsp;Talep Tarihi&nbsp;</b></td>"
            strBody = strBody & "<td><b>&nbsp;Talep No&nbsp;</b></td>"
            strBody = strBody & "<td><b>&nbsp;Malzeme&nbsp;</b></td>"
            strBody = strBody & "<td><b>&nbsp;Miktar&nbsp;</b></td>"
            strBody = strBody & "</tr>"
            '------
            Onceki_TALEP_EDEN = RS.Fields("TALEP_EDEN")
        End If
        '---------------------------------------------------------------
        strBody = strBody & "<tr>"
        strBody = strBody & "<td>&nbsp;" & RS.Fields("TALEP_TARIHI") & "&nbsp;</td>"
        strBody = strBody & "<td>&nbsp;" & RS.Fields("TALEP_NO") & "&nbsp;</td>"
        If IsNull(RS.Fields("MLZ_OZELLIK")) Then
            strBody = strBody & "<td>&nbsp;" & RS.Fields("MLZ_TANIMI") & "&nbsp;</td>"
        Else
            strBody = strBody & "<td>&nbsp;" & RS.Fields("MLZ_TANIMI") & "(" & RS.Fields("MLZ_OZELLIK") & ")&nbsp;</td>"
        End If
        strBody = strBody & "<td align=right>&nbsp;" & RS.Fields("MLZ_MIKTARI") & " " & RS.Fields("MLZ_BIRIMI") & "&nbsp;</td>"
        strBody = strBody & "</tr>"
        RS.MoveNext
    Loop
    RS.Close
    Set RS = Nothing
    
    '---------------------------------------
    'Son kişiye mail gönderiliyor
    '---------------------------------------
    If Onceki_TALEP_EDEN <> "" Then
        strBody = strBody & "</table>"
        strBody = strBody & "</font><br><br>"
        '---------------------------------------------------------------
        objMessage.Subject = "Gelen Malzeme Bilgisi"
        objMessage.From = Kullanicinin_Adi & "<" & Kullanicinin_Mail_Adresi & ">"
        objMessage.To = TalepEdenin_Mail_Adresi
        objMessage.HTMLBody = strBody
        objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = Kullanicinin_Mail_Adresi
        objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = Kullanicinin_Mail_Sifresi
        objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = SMTP_Sunucu
        objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoBasic
        objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 587
        objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False
        objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
        objMessage.Configuration.Fields.Update
        objMessage.Send
        '---------------------------------------------------------------
    End If
    
    MsgBox "İlgili kişi(lere) e-posta gönderilmiştir.", vbInformation, "İşlem tamam"
Exit Sub
'---------------------------------------------------------------
Hata:
    MsgBox "Talep edene e-posta gönderimi başarısız oldu!", vbCritical, "Hata oluştu."
End Sub

Bu kodda aynı kişinin birden fazla olabilmesi durumunda bir kez gönderebilmesi için bazı kontroller var (Onceki_TALEP_EDEN),
onları kaldırmanız lazım. O zaman DAO kullanmışım, isterseniz ADO'ya çevirin, daha iyi ve hızlı olur.

Ayrıca, bu kodun gönderdiği mailin örnek formatını ve benzer programını aşağıdaki konunun 3. ve 5. sayfalarında bulabilirsiniz.
formdaki bilgileri ilgili kişiye eposta olarak gönderme

Örneğimde kullandığım metodu sn. ozanakkaya'nın aşağıdaki örneğinden alınmıştır.
SMTP Hesabıyla E-mail Gönderme Uygulaması


Bildiğini bilenin arkasından git, bildiğini bilmeyeni uyar, bilmediğini bilene öğret, bilmediğini bilmeyenden kaç.
Konfüçyüs
Cevapla

bonasera

Gümüş Üye
Kullanici Avatari
Gümüş Üye
E.... Ş....
96
29/10/2008
0
Edirne
Ofis 2013 64 Bit
14/02/2017,15:30
Çözüldü 
Teşekkürler Sayın Seruz. E-posta butonunun tıklandığında olayında katıştırılmış bir makro var. O makro sayesinde gönderiliyor. Tekrar incelemeniz mümkün mü acaba? Bir de ben kod yerleştiremiyorum pek formlarıma.. Çoğu zaman çalışmıyor.


Cevapla

Seruz

Uzman
Kullanici Avatari
Uzman
S.... U....
1.550
7
30/10/2008
814
Tekirdağ
Ofis XP
13/09/2017,17:08
Çözüldü 
Pardon, makroyu farketmemişim. Bu gün hiç vaktim olmadı maalesef.
Yarında fırsat bulabilirsem ancak akşamüstü bakabilirim, tabii ki oruçtan halim kalırsa.


Bildiğini bilenin arkasından git, bildiğini bilmeyeni uyar, bilmediğini bilene öğret, bilmediğini bilmeyenden kaç.
Konfüçyüs
Cevapla

bonasera

Gümüş Üye
Kullanici Avatari
Gümüş Üye
E.... Ş....
96
29/10/2008
0
Edirne
Ofis 2013 64 Bit
14/02/2017,15:30
Çözüldü 
Teşekkürler Sayın Seruz. İnşallah ilgilenebilirsiniz..


Cevapla

Seruz

Uzman
Kullanici Avatari
Uzman
S.... U....
1.550
7
30/10/2008
814
Tekirdağ
Ofis XP
13/09/2017,17:08
Çözüldü 
Öncelikle kodun içerisinde, gönderecek mail adresine ait bilgilerin doldurulması gerekiyor.
Daha kolay olması için, unvan seçip mail gönderme işini ayrı bir formda yaptım.
Bir deneyin bakalım, sizde problemsiz çalışacak mı?

Visual Basic Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Private Sub btn_EPOSTA_Click()
On Error GoTo Hata
'---------------------------------------------------------------
 Dim DB As DAO.Database, RS As DAO.Recordset
 Dim objMessage As Object
 Dim SMTP_Sunucu, strBody
 Dim Kullanicinin_Adi, Kullanicinin_Mail_Adresi, Kullanicinin_Mail_Sifresi
 Dim TalepEdenin_Adi, TalepEdenin_Mail_Adresi
 Const cdoAnonymous = 0
 Const cdoBasic = 1
 Const cdoNTLM = 2
 '---------------------------------------------------------------
 ' Buraya kendi mail bilgilerinizi girmeniz gerekiyor.
 ' İsterseniz bir tablodan veya formdan sorarak alabilirsiniz
 '---------------------------------------------------------------
 SMTP_Sunucu = "smtp.bline.net.tr"
 Kullanicinin_Adi = "Adı ve Soyadı"
 Kullanicinin_Mail_Adresi = "mail adresiniz"
 Kullanicinin_Mail_Sifresi = "Mail şifreniz"
 '---------------------------------------------------------------
 Set DB = CurrentDb()
 'Set RS = DB.OpenRecordset(Me.Personel_Listesi.RowSource, dbOpenForwardOnly)
 Set RS = DB.OpenRecordset("Select * From Personel Where unvan Like '" & Forms![E-Posta]!Secilen_Unvan & "*'", dbOpenForwardOnly)
 Set objMessage = CreateObject("CDO.Message")
 Do While Not RS.EOF
 '---------------------------------------------------------------
 ' Okunan kayıttaki kişi için mail bilgileri oluşturuluyor ve gönderiliyor
 '---------------------------------------------------------------
 strBody = "Sn. " & RS.Fields("adi") & " " & RS.Fields("soyadi")
 strBody = strBody & " gönderilecek metni buraya yazın"
 '---------
 objMessage.Subject = "Deneme Maili"
 objMessage.From = Kullanicinin_Adi & "<" & Kullanicinin_Mail_Adresi & ">"
 objMessage.To = RS.Fields("email")
 objMessage.HTMLBody = strBody
 objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = Kullanicinin_Mail_Adresi
 objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = Kullanicinin_Mail_Sifresi
 objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
 objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = SMTP_Sunucu
 objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoBasic
 objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 587
 objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False
 objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
 objMessage.Configuration.Fields.Update
 objMessage.Send
 '---------------------------------------------------------------
 RS.MoveNext
 Loop
 RS.Close
 Set RS = Nothing
 MsgBox "İlgili kişi(lere) e-posta gönderilmiştir.", vbInformation, "İşlem tamam"

Exit Sub
'---------------------------------------------------------------
Hata:
 MsgBox "E-posta gönderimi başarısız oldu!", vbCritical, "Hata oluştu."
 MsgBox Err.Number & ":" & Err.Description
End Sub


Ek Dosyalar
.rar   PersonelFormu_Seruz.rar (Dosya Boyutu: 2,52 MB / İndirme Sayısı: 58)
Bildiğini bilenin arkasından git, bildiğini bilmeyeni uyar, bilmediğini bilene öğret, bilmediğini bilmeyenden kaç.
Konfüçyüs
Cevapla


Konuyu Okuyanlar: 1 Ziyaretçi

Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Tarih Son Yorum
Çözüldü Form Üzerinden Tablodaki Satış Koduna Ait Verileri İskonta Oranına Göre Güncelle husem 2 131 30/08/2017, 15:51 husem
Çözüldü Geçerli Kaydı Mail Atma Hk. serkan1985 6 212 25/08/2017, 09:02 serkan1985
Çözüldü Döneme Göre Kayıt Etme haziran4 5 206 17/08/2017, 08:22 haziran4
Çözüldü Formda İki Kritere Göre Filtre Uygulamak ertans 2 246 18/07/2017, 11:43 ertans
Çözüldü Cari baş harfine göre firma kodu oluşturma hakkında Gokcen Akan 25 965 14/07/2017, 08:32 Gokcen Akan

Türkçe Çeviri: MCTR, Yazılım: MyBB, © 2002-2017 MyBB Group.
Forum use Krzysztof "Supryk" Supryczynski addons.