[VBA] Mail Uygulaması (forumu Inceledim Bulamadım)
#7
(13-11-2020, 16:37)adnnfrm demiş ki: Hocam ilginize çok teşekkür ederim. Ama ben konu başında gmail diye belirtmiştim Nah(

Mesaj 2'de gmail ile ilgili konuya referans vermiştim.

GMail ile Dosya Gonderme



  Alıntı
Bu mesajı beğenenler:
#8
(15-11-2020, 16:07)dsezgin demiş ki:
(13-11-2020, 16:37)adnnfrm demiş ki: Hocam ilginize çok teşekkür ederim. Ama ben konu başında gmail diye belirtmiştim Nah(

Mesaj 2'de gmail ile ilgili konuya referans vermiştim.

GMail ile Dosya Gonderme

Hocam Merhaba,
Ben ilgili konuyu inceledim ve kendi projem için yavaş yavaş uyarlamaları yapmaya başladım. Fakat birkaç sorum olacak;

Öncelikle kodu aşağıdaki gibi kullandım;

Sub sendGmail()
Set objCDOMail = CreateObject("CDO.Message")
konu = "deneme"
ana = "Merhaba değerli müşterimiz. Aşağıda bilgileri olan siparişiniz tarafımızca tamamlanmıştır." & vbNewLine

 
objCDOMail.To = "kendimailim@gmail.com"
objCDOMail.From = "kendimailim@gmail.com"
 
objCDOMail.Subject = konu
objCDOMail.TextBody = ana
 
 
With objCDOMail.Configuration.Fields
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
 
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "kendimailim@gmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "****"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
.Update
End With
End Sub


1)
End with ten sonraki  aşağıdaki kod ne işe yarıyor anlamadım
  1. objCDOMail.Send

  2.  

  3. Set objCDOMail = Nothing
2)
Raporu sanırım diğer kullanıcı önce pc sine kaydettriyor. Sonrasında maile ek yapıyor. Bende pdf e kayıt kısmınını sormasına gerek yok hocam. O yüzden pdf kısmındaki kodu ilave edemedim.

3)
"objCDOMail.To" 
Kısmı varya hocam to kısmını ilgili müşteri için tanımlanan tüm e mail adreslerine göndermesini istiyorum. 

4)
Gmail bu arada "Oturum açma girişimi engellendi" diye bir hata verdi. Maili göndermedi. 

Ben bir örnek database yüklesem siz gerekli uyarlamaları yapmanız mümkün müdür ben çözemedim işin açıkcası. Hem herkes için bir bir uygulama örneği olmuş olur.

Ben ekte bir örnek vt hazırladım hocam. Siparişler formunda "e-posta gönder" butonuna basıldığında ilgili müşteri için tanımlanmış ve e-posta tercihi tiklenmiş (sorgular kısmında "Müşteri_İletişim(Tercih)" e-postalara raporu pdf olarak göndermek istiyorum. Ama bir türlü ilgili kodların uyarlamasını yapamadım. Nah(

Saygılarımla


Eklenti Dosyaları
.rar   Örnek.rar (Boyut: 42,78 KB / İndirilme: 39)



  Alıntı
Bu mesajı beğenenler:
#9
Visual Basic
  1. Private Sub Komut2_Click()
  2. Dim Kyt As DAO.Recordset, Kimlere As String
  3. Dim Posta
  4. Set Posta = CreateObject("CDO.Message")
  5. konu = "deneme"
  6. ana = "Merhaba degerli müsterimiz. Asagida bilgileri olan siparisiniz tarafimizca tamamlanmistir." & vbNewLine
  7. Set Kyt = CurrentDb.OpenRecordset("SELECT [E-Posta] FROM Müşteri_İletişim WHERE (((Müşteri_ID)=" & Me.Açılan_Kutu0 & "))")
  8. If Kyt.RecordCount = 0 Then Exit Sub
  9. Do Until Kyt.EOF
  10. Kimlere = Kimlere & Kyt![E-Posta] & "; "
  11. Kyt.MoveNext
  12. Loop
  13. Kyt.Close: Set Kyt = Nothing
  14. Posta.To = "kendimailim@gmail.com"
  15. Posta.From = Kimlere '*** Gonderilecek kisilerin listesi **** Kyt kayit seti ile olusturuldu ******
  16. Posta.Subject = konu
  17. Posta.TextBody = ana
  18. DoCmd.OpenReport "Satışlar", acViewNormal, , , acHidden
  19. DoCmd.OutputTo acOutputReport, "Satışlar", acFormatPDF, Application.CurrentProject.Path & "\Dosya.pdf", False
  20. Posta.AddAttachment Application.CurrentProject.Path & "\Dosya.pdf"
  21. DoCmd.Close acReport, "Satışlar"
  22. With Posta.Configuration.Fields
  23. .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
  24. .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
  25. .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
  26. .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
  27. .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "kendimailim@gmail.com"
  28. .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "****"
  29. .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
  30. .Update
  31. End With
  32. Posta.Send
  33. Set Posta = Nothing
  34. Kill Application.CurrentProject.Path & "\Dosya.pdf '******* rapor Gecici olarak uretildikten sonra silme **********"
  35. End Sub



denermısınız, kod ile posta gonderebılmek ıcın gmail guvenlik ayarlarını en aza indirmelisiniz!



  Alıntı
Bu mesajı beğenenler:
#10
(18-11-2020, 02:01)dsezgin demiş ki:
Visual Basic
  1. Private Sub Komut2_Click()
  2. Dim Kyt As DAO.Recordset, Kimlere As String
  3. Dim Posta
  4. Set Posta = CreateObject("CDO.Message")
  5. konu = "deneme"
  6. ana = "Merhaba degerli müsterimiz. Asagida bilgileri olan siparisiniz tarafimizca tamamlanmistir." & vbNewLine
  7. Set Kyt = CurrentDb.OpenRecordset("SELECT [E-Posta] FROM Müşteri_İletişim WHERE (((Müşteri_ID)=" & Me.Açılan_Kutu0 & "))")
  8. If Kyt.RecordCount = 0 Then Exit Sub
  9. Do Until Kyt.EOF
  10.    Kimlere = Kimlere & Kyt![E-Posta] & "; "
  11.    Kyt.MoveNext
  12. Loop
  13. Kyt.Close: Set Kyt = Nothing
  14. Posta.To = "kendimailim@gmail.com"
  15. Posta.From = Kimlere   '*** Gonderilecek kisilerin listesi **** Kyt kayit seti ile olusturuldu ******
  16. Posta.Subject = konu
  17. Posta.TextBody = ana
  18. DoCmd.OpenReport "Satışlar", acViewNormal, , , acHidden
  19. DoCmd.OutputTo acOutputReport, "Satışlar", acFormatPDF, Application.CurrentProject.Path & "\Dosya.pdf", False
  20. Posta.AddAttachment Application.CurrentProject.Path & "\Dosya.pdf"
  21. DoCmd.Close acReport, "Satışlar"
  22. With Posta.Configuration.Fields
  23.        .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
  24.        .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
  25.        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
  26.        .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
  27.        .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "kendimailim@gmail.com"
  28.        .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "****"
  29.        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
  30.        .Update
  31. End With
  32. Posta.Send
  33. Set Posta = Nothing
  34. Kill Application.CurrentProject.Path & "\Dosya.pdf     '******* rapor Gecici olarak uretildikten sonra silme **********"
  35. End Sub



denermısınız, kod ile posta gonderebılmek ıcın gmail guvenlik ayarlarını en aza indirmelisiniz!

Hocam;

Denedim fakat şöyle hatalar aldım.
Öncelikle kod kaydetme penceresi açıyor ama aynı zamanda programın bulunduğu klasöre "dosya" diye bir pdf atıyor. Eğer ben başka bir isimde kaydetme işlemi yaparsam örneğin "rapor.pdf" diye bunu da kaydediyor. Ama bu sefer aşağıdaki satırda debug veriyor;

Posta.Send

ve hata kodu olarak:
Run-Time '-2147220977 (8004020f)':
Sunucu, bir veya daha çok alıcı adresini reddetti. Sunucunun yanıtı: 5.............
diye gidiyor.


Eğer "dosya.pdf" diye kaydedersem bu seferde aşağıdaki satırda debug veriyor

DoCmd.OutputTo acOutputReport, "Satışlar", acFormatPDF, Application.CurrentProject.Path & "\Dosya.pdf", False


Saygılarımla



  Alıntı
Bu mesajı beğenenler:
#11
(18-11-2020, 03:37)adnnfrm demiş ki:
(18-11-2020, 02:01)dsezgin demiş ki:
Visual Basic
  1. Private Sub Komut2_Click()
  2. Dim Kyt As DAO.Recordset, Kimlere As String
  3. Dim Posta
  4. Set Posta = CreateObject("CDO.Message")
  5. konu = "deneme"
  6. ana = "Merhaba degerli müsterimiz. Asagida bilgileri olan siparisiniz tarafimizca tamamlanmistir." & vbNewLine
  7. Set Kyt = CurrentDb.OpenRecordset("SELECT [E-Posta] FROM Müşteri_İletişim WHERE (((Müşteri_ID)=" & Me.Açılan_Kutu0 & "))")
  8. If Kyt.RecordCount = 0 Then Exit Sub
  9. Do Until Kyt.EOF
  10.    Kimlere = Kimlere & Kyt![E-Posta] & "; "
  11.    Kyt.MoveNext
  12. Loop
  13. Kyt.Close: Set Kyt = Nothing
  14. Posta.To = "kendimailim@gmail.com"
  15. Posta.From = Kimlere   '*** Gonderilecek kisilerin listesi **** Kyt kayit seti ile olusturuldu ******
  16. Posta.Subject = konu
  17. Posta.TextBody = ana
  18. DoCmd.OpenReport "Satışlar", acViewNormal, , , acHidden
  19. DoCmd.OutputTo acOutputReport, "Satışlar", acFormatPDF, Application.CurrentProject.Path & "\Dosya.pdf", False
  20. Posta.AddAttachment Application.CurrentProject.Path & "\Dosya.pdf"
  21. DoCmd.Close acReport, "Satışlar"
  22. With Posta.Configuration.Fields
  23.        .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
  24.        .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
  25.        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
  26.        .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
  27.        .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "kendimailim@gmail.com"
  28.        .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "****"
  29.        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
  30.        .Update
  31. End With
  32. Posta.Send
  33. Set Posta = Nothing
  34. Kill Application.CurrentProject.Path & "\Dosya.pdf     '******* rapor Gecici olarak uretildikten sonra silme **********"
  35. End Sub



denermısınız, kod ile posta gonderebılmek ıcın gmail guvenlik ayarlarını en aza indirmelisiniz!

Hocam;

Denedim fakat şöyle hatalar aldım.
Öncelikle kod kaydetme penceresi açıyor ama aynı zamanda programın bulunduğu klasöre "dosya" diye bir pdf atıyor. Eğer ben başka bir isimde kaydetme işlemi yaparsam örneğin "rapor.pdf" diye bunu da kaydediyor. Ama bu sefer aşağıdaki satırda debug veriyor;

Posta.Send

ve hata kodu olarak:
Run-Time '-2147220977 (8004020f)':
Sunucu, bir veya daha çok alıcı adresini reddetti. Sunucunun yanıtı: 5.............
diye gidiyor.


Eğer "dosya.pdf" diye kaydedersem bu seferde aşağıdaki satırda debug veriyor

DoCmd.OutputTo acOutputReport, "Satışlar", acFormatPDF, Application.CurrentProject.Path & "\Dosya.pdf", False


Bu arada pdf kaydetme işlemini sormasına gerek yok hocam. İlgili raporu oluşturup gönderebilir.


Saygılarımla



  Alıntı
Bu mesajı beğenenler:
#12
(18-11-2020, 03:39)adnnfrm demiş ki:
(18-11-2020, 03:37)adnnfrm demiş ki:
(18-11-2020, 02:01)dsezgin demiş ki:
Visual Basic
  1. Private Sub Komut2_Click()
  2. Dim Kyt As DAO.Recordset, Kimlere As String
  3. Dim Posta
  4. Set Posta = CreateObject("CDO.Message")
  5. konu = "deneme"
  6. ana = "Merhaba degerli müsterimiz. Asagida bilgileri olan siparisiniz tarafimizca tamamlanmistir." & vbNewLine
  7. Set Kyt = CurrentDb.OpenRecordset("SELECT [E-Posta] FROM Müşteri_İletişim WHERE (((Müşteri_ID)=" & Me.Açılan_Kutu0 & "))")
  8. If Kyt.RecordCount = 0 Then Exit Sub
  9. Do Until Kyt.EOF
  10.    Kimlere = Kimlere & Kyt![E-Posta] & "; "
  11.    Kyt.MoveNext
  12. Loop
  13. Kyt.Close: Set Kyt = Nothing
  14. Posta.To = "kendimailim@gmail.com"
  15. Posta.From = Kimlere   '*** Gonderilecek kisilerin listesi **** Kyt kayit seti ile olusturuldu ******
  16. Posta.Subject = konu
  17. Posta.TextBody = ana
  18. DoCmd.OpenReport "Satışlar", acViewNormal, , , acHidden
  19. DoCmd.OutputTo acOutputReport, "Satışlar", acFormatPDF, Application.CurrentProject.Path & "\Dosya.pdf", False
  20. Posta.AddAttachment Application.CurrentProject.Path & "\Dosya.pdf"
  21. DoCmd.Close acReport, "Satışlar"
  22. With Posta.Configuration.Fields
  23.        .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
  24.        .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
  25.        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
  26.        .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
  27.        .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "kendimailim@gmail.com"
  28.        .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "****"
  29.        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
  30.        .Update
  31. End With
  32. Posta.Send
  33. Set Posta = Nothing
  34. Kill Application.CurrentProject.Path & "\Dosya.pdf     '******* rapor Gecici olarak uretildikten sonra silme **********"
  35. End Sub



denermısınız, kod ile posta gonderebılmek ıcın gmail guvenlik ayarlarını en aza indirmelisiniz!

Hocam;

Denedim fakat şöyle hatalar aldım.
Öncelikle kod kaydetme penceresi açıyor ama aynı zamanda programın bulunduğu klasöre "dosya" diye bir pdf atıyor. Eğer ben başka bir isimde kaydetme işlemi yaparsam örneğin "rapor.pdf" diye bunu da kaydediyor. Ama bu sefer aşağıdaki satırda debug veriyor;

Posta.Send

ve hata kodu olarak:
Run-Time '-2147220977 (8004020f)':
Sunucu, bir veya daha çok alıcı adresini reddetti. Sunucunun yanıtı: 5.............
diye gidiyor.


Eğer "dosya.pdf" diye kaydedersem bu seferde aşağıdaki satırda debug veriyor

DoCmd.OutputTo acOutputReport, "Satışlar", acFormatPDF, Application.CurrentProject.Path & "\Dosya.pdf", False


Bu arada pdf kaydetme işlemini sormasına gerek yok hocam. İlgili raporu oluşturup gönderebilir.


Saygılarımla

Hocam sanırım problemi çözdüm;

Ekli olarak mail gönderebiliyorum. Şimdi metin ayarları vs. var. Onlarıda "DFirst" fonksiyonu ile çözeceğim. İnşallah tamamlamış olurum.


yine forumdan aldım kodları üstatlar sağolsun aşağıdaki kodlama ile çözdüm var mıdır sizce sıkıntılı bir durum hocam;

Function yolla()
DoCmd.OutputTo acOutputReport, "Rapor1", acFormatPDF, "C:\xyz\Rapor.pdf", False

Dim objCDOMail As Object
    Set objCDOMail = CreateObject("CDO.Message")
 
    objCDOMail.To = DFirst("mail_List", "srg_Mail_B") ' Sorgudan Alıyorum. Sorguda alt alta tanımlı mail adreslerini aralarında ";" koyarak tek satır oluşturuyor.
    objCDOMail.From = "xxxxxxxxx" ' bu alanı da DFirst ile ayar tablosuna bağlayacağım.
    objCDOMail.CC = "xxxxxxxxxx" ' bu alanı da DFirst ile ayar tablosuna bağlayacağım.
    objCDOMail.Subject = "konu" ' bu alanı da farklı sorgular kullanarak yine Dfirst ile çekeceğim.
    objCDOMail.Addattachment "C:\xyz\Rapor.pdf" ' tanımlı klasörden otomatik alacak raporu. Rapor fix tanımla oluşacak çünkü.
 
    objCDOMail.TextBody = "metin" ' bu alanı da farklı sorgular kullanarak yine Dfirst ile çekeceğim.
 
    objCDOMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True ' bu alanı da DFirst ile ayar tablosuna bağlayacağım.
    objCDOMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 ' bu alanı da DFirst ile ayar tablosuna bağlayacağım.
     objCDOMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 ' bu alanı da DFirst ile ayar tablosuna bağlayacağım.
 
 
    objCDOMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com" ' bu alanı da DFirst ile ayar tablosuna bağlayacağım.
 
    objCDOMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = DFirst("smtp_username", "tbl_tanimlamalar")
    objCDOMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = DFirst("smtp_password", "tbl_tanimlamalar")
    objCDOMail.Configuration.Fields.Item("urn:schemas:httpmail:importance") = 2 ' bu alanı da DFirst ile ayar tablosuna bağlayacağım.
    objCDOMail.Configuration.Fields.Item("urn:schemas:mailheader:X-Priority") = 1 ' bu alanı da DFirst ile ayar tablosuna bağlayacağım.
    objCDOMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465 ' bu alanı da DFirst ile ayar tablosuna bağlayacağım.
 
    objCDOMail.Configuration.Fields.Update
    objCDOMail.Send
 
    Set objCDOMail = Nothing
MsgBox "Mailiniz Gönderildi"
End Function



Saygılarımla



  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  [VBA] Mail Ile Tablo Ya Da Sorgu Gönderme benuva 5 244 17-06-2023, 12:18
Son Mesaj: benuva
  [FORM] Liste Kutusundaki Veriyi Mail Ile Göndermek husem 8 914 27-01-2023, 00:52
Son Mesaj: BeyTor
  [FORM] Access Aktif Olan Formu, Mail Olarak Göndermek. Fenerli88 5 379 25-01-2023, 02:14
Son Mesaj: BeyTor
  [FORM] Mail gönderimi. orderyazbim 14 6.302 19-11-2022, 20:10
Son Mesaj: firatmalkoc
  [VBA] Gmail Le Mail Gönderme Yeni Ayarları (çözüldü) hedefkaya 7 535 20-07-2022, 12:13
Son Mesaj: benuva
  [FORM] menu uygulaması harun57 3 1.695 02-07-2022, 12:05
Son Mesaj: golf2000
  [VBA] Hotmail Veya Yandex Ile Mail Gönderme (gmail Dışında Başka Hesapla) hedefkaya 0 223 28-06-2022, 14:49
Son Mesaj: hedefkaya
  [VBA] Ayrı Ayrı Outlook'la Mail Gönderebilmek benuva 9 566 21-06-2022, 01:18
Son Mesaj: dsezgin

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi