Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   Αποστολή επισυναπτόμενων αρχείων μέσα από φόρμα με mail (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/2709-apostoli-episynaptomenon-arxeion-mesa-apo-forma-me-mail.html)

dim.konst 28-09-13 20:10

Αποστολή επισυναπτόμενων αρχείων μέσα από φόρμα με mail
 
1 Συνημμένο(α)
Γεια σας, έχω μια βάση που καταγράφω διάφορα προβλήματα και τους δίνω αύξουσα αρίθμηση (Πεδίο Id),
Σε μία φόρμα με όνομα PROTOKOLO που βλέπει τον Πίνακα PROTOKOLO καταγράφω τα προβλήματα και τα στέλνω σαν pdf με email για επίλυση.
Στη φόρμα υπάρχει και ένα πεδίο με τύπο Συνημμένο που επισυνάπτω διάφορα έγγραφα
Θα ήθελα στο mail που δημιουργεί το κουμπάκι που έφτιαξα να μπαίνουν και τα επισυναπτόμενα έγγραφα μαζί με το pdf του προβλήματος
Σας στέλνω παράδειγμα της βάσης
Ευχαριστώ

dim.konst 02-10-13 11:24

Στο internet βρήκα τον παρακάτω κώδικα που τον προσάρμοσα στη βάση μου και τον εκτελώ με ένα κουμπί cmdEmail
Λειτουργεί αλλά όλα γίνονται από το microsoft. outlook ενεργοποιώντας από τα tools - references to microsoft.object library
κάτι που δεν μπορούν να τρέξουν όλοι οι χρήστες που έχουν άλλα προγράμματα mail

Αν υπάρχει ευκολότερος τρόπος θα είναι καλοδεχούμενος.

Private Sub cmdEmail_Click()
Dim rsTable As DAO.Recordset
Dim rsAttachments As DAO.Recordset
Dim objOutlook As Outlook.Application
Dim objOutlookMsg As Outlook.MailItem
Dim objOutlookRecip As Outlook.Recipient
Dim objOutlookAttach As Outlook.Attachment

' Create the Outlook session.
On Error GoTo cmdEmail_Click_Error
Set objOutlook = CreateObject("Outlook.Application")
' Create the message.
Set objOutlookMsg = objOutlook.CreateItem(olMailItem)
With objOutlookMsg
'Add the To recipient(s) to the message. Substitute
'your names here.
Set objOutlookRecip = .Recipients.Add("onoma@yahoo.com") '<--Recipient's name or email address
objOutlookRecip.Type = olTo
'The Subject of the message.
.Subject = "Email Subject" '<--Subject
'The Email Body Text
.Body = "Body text of the email" '<--Email Body text.

'Instantiate the parent recordset.
Set rsTable = CurrentDb.OpenRecordset("PROTOKOLO")

'rsTable.MoveFirst
'Loop through the Records.
Do While Not rsTable.EOF
'Instantiate the child recordset.
Set rsAttachments = rsTable.Fields("SINIMMENA2").Value

'Loop through the attachments, attaching each one to the email
Do While Not rsAttachments.EOF
'Save current attachment to disk.
rsAttachments.Fields("FileData").SaveToFile "C:\"

Set objOutlookAttach = .Attachments.Add("C:\" & rsAttachments.Fields("FileName"))
'Delete this temp file:
Kill "C:\" & rsAttachments.Fields("FileName")

rsAttachments.MoveNext
Loop
rsTable.MoveNext

Loop
'Resolve each Recipient's name.
For Each objOutlookRecip In .Recipients
If Not objOutlookRecip.Resolve Then
objOutlookMsg.Display
End If
Next

'Send email without viewing it.
'.Send

'Dispay email before sending.
.Display

End With
'Cleanup Code
Set objOutlookMsg = Nothing
Set objOutlook = Nothing
Set objOutlookRecip = Nothing
Set objOutlookAttach = Nothing
'No need to close rsAttachments,
'in fact if you close it, it will generate an error
Set rsAttachments = Nothing
rsTable.Close
Set rsTable = Nothing
On Error GoTo 0
Exit Sub
cmdEmail_Click_Error:
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure cmdEmail_Click"

End Sub

Tasos 02-10-13 18:20

Καλησπέρα Δημήτρη!

Με χρήση VBA και χωρίς τη χρήση εξωτερικών στοιχείων ελέγχου (*.ocx) μπορείς να στείλεις συνημμένο μέσω Email μόνο με Mιcrosoft Outlook.

Μια λύση με CDO θα εξυπηρετούσε αν τα συνημμένα μπορούσαν να αποστέλλονται από έναν έγκυρο λογαριασμό ηλεκτρονικού ταχυδρομείου.
Και πάλι θα πρέπει να φροντίσεις στον υπολογιστή προορισμού να υπάρχει και να είναι δηλωμένο στο μητρώο των Windows CDOSYS.dll (για Windows 2000).

Σε κάθε άλλη περίπτωση θα χρειαστείς κάποιο εμπορικό ή μη στοιχείο ελέγχου (το οποίο επίσης θα πρέπει να βρίσκεται στον υπολογιστή προορισμού και να είναι δηλωμένο στο μητρώο των Windows)
που να σου επιτρέπει την αυτόματη αποστολή συνημμένου μέσω του προεπιλεγμένου προγράμματος Email του κάθε υπολογιστή.

Με εκτίμηση

Τάσος

dim.konst 02-10-13 22:10

Τάσο ευχαριστώ για την απάντηση σου !!!
Ερώτηση αν ξέρεις εσύ ή κάποιος άλλος, όταν τρέχει η εφαρμογή με access runtime οι βιβλιοθήκες (object library ) που έχουμε τσεκάρει στα tools (πχ Microsoft Outlook 12 Object Library) όταν δημιουργούμε τη βάση μεταφέρονται και λειτουργεί ο κώδικας που τις χρησιμοποιεί ή θα έχω πρόβλημα;

alex 03-10-13 00:26

Δημήτρη καλησπέρα!!!

Όλα τα reference μεταφέρονται όταν η βάση είναι στη μορφή μετατροπή σε MDE.
Όταν είναι MDB και σταλεί με email ο απομακρυσμένος υπολογιστής θα λάβει την βάση με miissing στις αναφορές.
Στη δεύτερη περίπτωση CDO που αναφέρει ο Τάσος θα πρέπει να περάσεις στα reference την αναφορά Microsoft CDO for windows 2000 library.

dim.konst 03-10-13 07:37

Ευχαριστώ πολύ Αλέξανδρε.


Η ώρα είναι 05:31.

Ms-Office.gr - ©2000 - 2025, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2