Forum
Merhaba,
Bazı kullanıcılarımızın gönderdiği mail boyutunun 2 mb'ı geçmemesi gerekmektedir. Ortamda Exchange yok, Mail sunucum postfix. Bir program buldum bilgisayara yüklüyorsunuz, mail gönderirken eki var mı yok mu diye denetliyor, yoksa maili göndermiyor. Bu tarzda bir programa ihtiyacım var fakat bulamadım. Maili karşı tarafa gitmeden denetlemeli.
Kullanıcı bazlı engellemek zor. Siz lokalinize bir program kurdunuz peki kişi webmail üzerinden gönderirse bunu nasıl kullanıcı bazlı limitleyeceksiniz.
Bu kısıtlamanın uygulandığı kullanıcıların sadece 110 ve 25 nolu portları açık. Webmail kullanamazlar. Zaten amacımız engellemek değil. Uydu bağlantısı kullandığımızdan her kb için para ödüyoruz. Bu yüzden büyük maillerin engellenmesi önemli.
outlook kullaniyorsaniz asagidaki macro koduyla sorunu cozebilirsiniz. tabi burda ekli dosya boyutu kontrol ediliyor. 2 mb text mesaj yazmazlar herhalde 🙂
Private Sub Application_ItemSend(ByVal Item As Object, durum As Boolean)
If TypeOf Item Is Outlook.MailItem Then
durum= Not (kontrolet(Item))
End If
End Sub
Private Function kontrolet(posta As Outlook.MailItem) As Boolean
Dim boyut1 As Long
Const MAX_ITEM_SIZE As Long =2097152 ' 2 MB
Dim gonder As Boolean
gonder = True
If posta.Attachments.Count Then
boyut1 = posta.Size
If boyut1 > MAX_ITEM_SIZE Then
gonder = (MsgBox("mail boyutu: " & boyut1 & " Byte. iptal edilsinmi?",
vbYesNo) = vbNo)
End If
End If
kontrolet= gonder
End Function
İstediğim tamda böyle bir kontroldü. Ancak kod hata da vermiyor, görevini de yapmıyor. makro denetleme durumu tamamen kapalı.
Private Sub Application_ItemSend(ByVal Item As Object, durum As Boolean)
If TypeOf Item Is Outlook.MailItem Then
durum = Not (kontrolet(Item))
End If
End Sub
Private Function kontrolet(posta As Outlook.MailItem) As Boolean
Dim boyut1 As Long
Const MAX_ITEM_SIZE As Long = 2097152 ' 2 MB
Dim gonder As Boolean
gonder = True
If posta.Attachments.Count Then boyut1 = posta.Size
If boyut1 > MAX_ITEM_SIZE Then
gonder = (MsgBox("mail boyutu: " & boyut1 & " Byte. iptal edilsinmi?", vbYesNo) = vbNo)
End If
kontrolet = gonder
End Function
tamam düzeltiyorum kodu
Private Sub Application_ItemSend(ByVal Item As Object, durum As Boolean)
If TypeOf Item Is Outlook.MailItem Then
durum = Not (kontrolet(Item))
End If
End Sub
Private Function kontrolet(posta As Outlook.MailItem) As Boolean
Dim boyut As Long
Dim shift
Dim toplamboyut
Const MAX_ITEM_SIZE As Long = 2097152 ' Byte
Dim gonder As Boolean
gonder = True
If posta.Attachments.Count Then
posta.Save
boyut = posta.size
shift = 10 ^ 2
toplamboyut = CInt((boyut / 1048576) * shift) / shift
If boyut > MAX_ITEM_SIZE Then
gonder = (MsgBox("Ekli dosyanızın boyutu 2MB." & vbCr & "Toplam mail boyutu: " & toplamboyut & " MB's. " & vbCr & " Yinede göndermek istiyormusunuz?", vbYesNo) = vbYes)
End If
End If
kontrolet = gonder
End Function
Harika. Tam istediğim buydu işte. Sorunsuz çalışıyor, teşekkürler.