By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
434,720 Members | 2,153 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 434,720 IT Pros & Developers. It's quick & easy.

Send email with outlook express 'editing mode'

P: 59
now for the bigger problam :)

I know you pepole hate using OE for sending emails, but its user friendly and its needed in this case...

I found on this forum, a code that sends email using OE with attachments.

it works, but with two problams... first, its directly sends the email, without opening the OE "editing mode" of the email, like when you use the DoCmd.SendObject.
this is the smaller problams though...

the bigger problam which I think is connected to the first one, is that when it send the email it also neutralize access completely untill the email is sent. and if I attach a big file (which will be always in my db case...) you can't continue working on the db... : \

maybe I need a completly diffrent code, but I'll paste what I'm trying anyway, maybe it will help someone else :)

on a module:

Expand|Select|Wrap|Line Numbers
  1. Option Compare Database
  2. Option Explicit
  3.  
  4.  
  5. Private Type MAPIRecip
  6. Reserved As Long
  7. RecipClass As Long
  8. Name As String
  9. Address As String
  10. EIDSize As Long
  11. EntryID As String
  12. End Type
  13.  
  14. Private Type MAPIFileTag
  15. Reserved As Long
  16. TagLength As Long
  17. Tag() As Byte
  18. EncodingLength As Long
  19. Encoding() As Byte
  20. End Type
  21.  
  22. Private Type MAPIFile
  23. Reserved As Long
  24. Flags As Long
  25. Position As Long
  26. PathName As String
  27. FileName As String
  28. FileType As Long
  29. End Type
  30.  
  31. Private Type MAPIMessage
  32. Reserved As Long
  33. Subject As String
  34. NoteText As String
  35. MessageType As String
  36. DateReceived As String
  37. ConversationID As String
  38. Originator As Long
  39. Flags As Long
  40. RecipCount As Long
  41. Recipients As Long
  42. FileCount As Long
  43. Files As Long
  44. End Type
  45.  
  46. Private Declare Function MAPISendMail Lib "c:\program files\outlook express\msoe.dll" (ByVal Session As Long, ByVal UIParam As Long, ByRef message As MAPIMessage, ByVal Flags As Long, ByVal Reserved As Long) As Long
  47. Private Const MAPI_E_NO_LIBRARY = 999
  48. Private Const MAPI_E_INVALID_PARAMETER = 998
  49.  
  50. Private Const MAPI_ORIG = 0
  51. Private Const MAPI_TO = 1
  52. Private Const MAPI_CC = 2
  53. Private Const MAPI_BCC = 3
  54.  
  55. Private Const MAPI_UNREAD = 1
  56. Private Const MAPI_RECEIPT_REQUESTED = 2
  57. Private Const MAPI_SENT = 4
  58.  
  59. Private Const MAPI_LOGON_UI = &H1
  60. Private Const MAPI_NEW_SESSION = &H2
  61. Private Const MAPI_DIALOG = &H8
  62. Private Const MAPI_UNREAD_ONLY = &H20
  63. Private Const MAPI_ENVELOPE_ONLY = &H40
  64. Private Const MAPI_PEEK = &H80
  65. Private Const MAPI_GUARANTEE_FIFO = &H100
  66. Private Const MAPI_BODY_AS_FILE = &H200
  67. Private Const MAPI_AB_NOMODIFY = &H400
  68. Private Const MAPI_SUPPRESS_ATTAch = &H800
  69. Private Const MAPI_FORCE_DOWNLOAD = &H1000
  70.  
  71. Private Const MAPI_OLE = &H1
  72. Private Const MAPI_OLE_STATIC = &H2
  73.  
  74.  
  75. Dim mAf() As MAPIFile
  76. Dim mAr() As MAPIRecip
  77. Dim lAr As Long
  78. Dim lAf As Long
  79. Dim mM As MAPIMessage
  80. Dim aErrors(0 To 26) As String
  81.  
  82. Public Sub Class_Initialize()
  83. aErrors(0) = "Success"
  84. aErrors(1) = "User Abort"
  85. aErrors(2) = "Failure"
  86. aErrors(3) = "LogIn Failure"
  87. aErrors(4) = "Disk Full"
  88. aErrors(5) = "Insufficient Memory"
  89. aErrors(6) = "Block Too Small"
  90. aErrors(8) = "Too Many Sessions"
  91. aErrors(9) = "Too Many Files"
  92. aErrors(10) = "Too Many Recipients"
  93. aErrors(11) = "Attachment No Found"
  94. aErrors(12) = "Attachment Open Failure"
  95. aErrors(13) = "Attachment Write Failure"
  96. aErrors(14) = "Unknown Recipient"
  97. aErrors(15) = "Bad Recipient"
  98. aErrors(16) = "No Messages"
  99. aErrors(17) = "Invalid Message"
  100. aErrors(18) = "Text Too Large"
  101. aErrors(19) = "Invalid Session"
  102. aErrors(20) = "Type Not Suppported"
  103. aErrors(21) = "Ambiguous Recipient"
  104. aErrors(22) = "Message in Use"
  105. aErrors(23) = "Network Failure"
  106. aErrors(24) = "Invalid Edit Fields"
  107. aErrors(25) = "Invalid Recipient"
  108. aErrors(26) = "Not Supported"
  109. End Sub
  110.  
  111. Public Sub BCCAddressAdd(ByVal strAddress As String)
  112.     RecipientAdd MAPI_BCC, , strAddress
  113. End Sub
  114.  
  115. Public Sub BCCNameAdd(ByVal strName As String)
  116.     RecipientAdd MAPI_BCC, strName
  117. End Sub
  118.  
  119. Public Sub CCAddressAdd(ByVal strAddress As String)
  120.     RecipientAdd MAPI_CC, , strAddress
  121. End Sub
  122.  
  123. Public Sub CCNameAdd(ByVal strName As String)
  124.     RecipientAdd MAPI_CC, strName
  125. End Sub
  126.  
  127. Public Sub MessageIs(ByVal strNoteText As String)
  128.     mM.NoteText = strNoteText
  129. End Sub
  130.  
  131. Public Sub SubjectIs(ByVal strSubject As String)
  132.     mM.Subject = strSubject
  133. End Sub
  134.  
  135. Public Sub ToAddressAdd(ByVal strAddress As String)
  136.     RecipientAdd MAPI_TO, , strAddress
  137. End Sub
  138.  
  139. Public Sub ToNameAdd(ByVal strName As String)
  140.     RecipientAdd MAPI_TO, strName
  141. End Sub
  142.  
  143. Public Sub FileAdd(ByVal strPathName As String)
  144.     Dim f As MAPIFile
  145. With f
  146.     .PathName = StrConv(strPathName, vbFromUnicode)
  147. End With
  148. ReDim Preserve mAf(lAf)
  149. mAf(lAf) = f
  150. lAf = lAf + 1
  151. End Sub
  152.  
  153. Public Sub Send()
  154. Dim r As Long
  155. With mM
  156.     If lAf > 0 Then
  157.         .FileCount = lAf
  158.         .Files = VarPtr(mAf(0))
  159.     End If
  160.     If lAr > 0 Then
  161.         .RecipCount = lAr
  162.         .Recipients = VarPtr(mAr(0))
  163.         r = MAPISendMail(0, 0, mM, 0, 0)
  164.         If r <> 0 Then MsgBox aErrors(r)
  165.     End If
  166. End With
  167. End Sub
  168.  
  169. Private Sub RecipientAdd(ByVal lngType As Long, Optional ByVal strName As String, Optional ByVal strAddress As String)
  170. Dim r As MAPIRecip
  171. r.RecipClass = lngType
  172. If strName <> "" Then r.Name = StrConv(strName, vbFromUnicode)
  173. If strAddress <> "" Then r.Address = StrConv(strAddress, vbFromUnicode)
  174. ReDim Preserve mAr(lAr)
  175. mAr(lAr) = r
  176. lAr = lAr + 1
  177. End Sub
  178.  
  179.  
Sep 8 '07 #1
Share this Question
Share on Google+
1 Reply


ADezii
Expert 5K+
P: 8,635
now for the bigger problam :)

I know you pepole hate using OE for sending emails, but its user friendly and its needed in this case...

I found on this forum, a code that sends email using OE with attachments.

it works, but with two problams... first, its directly sends the email, without opening the OE "editing mode" of the email, like when you use the DoCmd.SendObject.
this is the smaller problams though...

the bigger problam which I think is connected to the first one, is that when it send the email it also neutralize access completely untill the email is sent. and if I attach a big file (which will be always in my db case...) you can't continue working on the db... : \

maybe I need a completly diffrent code, but I'll paste what I'm trying anyway, maybe it will help someone else :)

on a module:

Expand|Select|Wrap|Line Numbers
  1. Option Compare Database
  2. Option Explicit
  3.  
  4.  
  5. Private Type MAPIRecip
  6. Reserved As Long
  7. RecipClass As Long
  8. Name As String
  9. Address As String
  10. EIDSize As Long
  11. EntryID As String
  12. End Type
  13.  
  14. Private Type MAPIFileTag
  15. Reserved As Long
  16. TagLength As Long
  17. Tag() As Byte
  18. EncodingLength As Long
  19. Encoding() As Byte
  20. End Type
  21.  
  22. Private Type MAPIFile
  23. Reserved As Long
  24. Flags As Long
  25. Position As Long
  26. PathName As String
  27. FileName As String
  28. FileType As Long
  29. End Type
  30.  
  31. Private Type MAPIMessage
  32. Reserved As Long
  33. Subject As String
  34. NoteText As String
  35. MessageType As String
  36. DateReceived As String
  37. ConversationID As String
  38. Originator As Long
  39. Flags As Long
  40. RecipCount As Long
  41. Recipients As Long
  42. FileCount As Long
  43. Files As Long
  44. End Type
  45.  
  46. Private Declare Function MAPISendMail Lib "c:\program files\outlook express\msoe.dll" (ByVal Session As Long, ByVal UIParam As Long, ByRef message As MAPIMessage, ByVal Flags As Long, ByVal Reserved As Long) As Long
  47. Private Const MAPI_E_NO_LIBRARY = 999
  48. Private Const MAPI_E_INVALID_PARAMETER = 998
  49.  
  50. Private Const MAPI_ORIG = 0
  51. Private Const MAPI_TO = 1
  52. Private Const MAPI_CC = 2
  53. Private Const MAPI_BCC = 3
  54.  
  55. Private Const MAPI_UNREAD = 1
  56. Private Const MAPI_RECEIPT_REQUESTED = 2
  57. Private Const MAPI_SENT = 4
  58.  
  59. Private Const MAPI_LOGON_UI = &H1
  60. Private Const MAPI_NEW_SESSION = &H2
  61. Private Const MAPI_DIALOG = &H8
  62. Private Const MAPI_UNREAD_ONLY = &H20
  63. Private Const MAPI_ENVELOPE_ONLY = &H40
  64. Private Const MAPI_PEEK = &H80
  65. Private Const MAPI_GUARANTEE_FIFO = &H100
  66. Private Const MAPI_BODY_AS_FILE = &H200
  67. Private Const MAPI_AB_NOMODIFY = &H400
  68. Private Const MAPI_SUPPRESS_ATTAch = &H800
  69. Private Const MAPI_FORCE_DOWNLOAD = &H1000
  70.  
  71. Private Const MAPI_OLE = &H1
  72. Private Const MAPI_OLE_STATIC = &H2
  73.  
  74.  
  75. Dim mAf() As MAPIFile
  76. Dim mAr() As MAPIRecip
  77. Dim lAr As Long
  78. Dim lAf As Long
  79. Dim mM As MAPIMessage
  80. Dim aErrors(0 To 26) As String
  81.  
  82. Public Sub Class_Initialize()
  83. aErrors(0) = "Success"
  84. aErrors(1) = "User Abort"
  85. aErrors(2) = "Failure"
  86. aErrors(3) = "LogIn Failure"
  87. aErrors(4) = "Disk Full"
  88. aErrors(5) = "Insufficient Memory"
  89. aErrors(6) = "Block Too Small"
  90. aErrors(8) = "Too Many Sessions"
  91. aErrors(9) = "Too Many Files"
  92. aErrors(10) = "Too Many Recipients"
  93. aErrors(11) = "Attachment No Found"
  94. aErrors(12) = "Attachment Open Failure"
  95. aErrors(13) = "Attachment Write Failure"
  96. aErrors(14) = "Unknown Recipient"
  97. aErrors(15) = "Bad Recipient"
  98. aErrors(16) = "No Messages"
  99. aErrors(17) = "Invalid Message"
  100. aErrors(18) = "Text Too Large"
  101. aErrors(19) = "Invalid Session"
  102. aErrors(20) = "Type Not Suppported"
  103. aErrors(21) = "Ambiguous Recipient"
  104. aErrors(22) = "Message in Use"
  105. aErrors(23) = "Network Failure"
  106. aErrors(24) = "Invalid Edit Fields"
  107. aErrors(25) = "Invalid Recipient"
  108. aErrors(26) = "Not Supported"
  109. End Sub
  110.  
  111. Public Sub BCCAddressAdd(ByVal strAddress As String)
  112.     RecipientAdd MAPI_BCC, , strAddress
  113. End Sub
  114.  
  115. Public Sub BCCNameAdd(ByVal strName As String)
  116.     RecipientAdd MAPI_BCC, strName
  117. End Sub
  118.  
  119. Public Sub CCAddressAdd(ByVal strAddress As String)
  120.     RecipientAdd MAPI_CC, , strAddress
  121. End Sub
  122.  
  123. Public Sub CCNameAdd(ByVal strName As String)
  124.     RecipientAdd MAPI_CC, strName
  125. End Sub
  126.  
  127. Public Sub MessageIs(ByVal strNoteText As String)
  128.     mM.NoteText = strNoteText
  129. End Sub
  130.  
  131. Public Sub SubjectIs(ByVal strSubject As String)
  132.     mM.Subject = strSubject
  133. End Sub
  134.  
  135. Public Sub ToAddressAdd(ByVal strAddress As String)
  136.     RecipientAdd MAPI_TO, , strAddress
  137. End Sub
  138.  
  139. Public Sub ToNameAdd(ByVal strName As String)
  140.     RecipientAdd MAPI_TO, strName
  141. End Sub
  142.  
  143. Public Sub FileAdd(ByVal strPathName As String)
  144.     Dim f As MAPIFile
  145. With f
  146.     .PathName = StrConv(strPathName, vbFromUnicode)
  147. End With
  148. ReDim Preserve mAf(lAf)
  149. mAf(lAf) = f
  150. lAf = lAf + 1
  151. End Sub
  152.  
  153. Public Sub Send()
  154. Dim r As Long
  155. With mM
  156.     If lAf > 0 Then
  157.         .FileCount = lAf
  158.         .Files = VarPtr(mAf(0))
  159.     End If
  160.     If lAr > 0 Then
  161.         .RecipCount = lAr
  162.         .Recipients = VarPtr(mAr(0))
  163.         r = MAPISendMail(0, 0, mM, 0, 0)
  164.         If r <> 0 Then MsgBox aErrors(r)
  165.     End If
  166. End With
  167. End Sub
  168.  
  169. Private Sub RecipientAdd(ByVal lngType As Long, Optional ByVal strName As String, Optional ByVal strAddress As String)
  170. Dim r As MAPIRecip
  171. r.RecipClass = lngType
  172. If strName <> "" Then r.Name = StrConv(strName, vbFromUnicode)
  173. If strAddress <> "" Then r.Address = StrConv(strAddress, vbFromUnicode)
  174. ReDim Preserve mAr(lAr)
  175. mAr(lAr) = r
  176. lAr = lAr + 1
  177. End Sub
  178.  
  179.  
It could be the nature of the code that it is executed synchronously, meaning all other processes are suspended until current code completion.
Sep 9 '07 #2

Post your reply

Sign in to post your reply or Sign up for a free account.