UtterAccess.com
X   Site Message
(Message will auto close in 2 seconds)

Welcome to UtterAccess! Please ( Login   or   Register )

Custom Search
 
   Reply to this topicStart new topic
> Saving Outlook Email Based Off Field In Access Table, Access 2016    
 
   
Richard Trevor
post Feb 3 2019, 11:57 PM
Post#1



Posts: 10
Joined: 3-February 19



Hello,

I been stuck on this for a while now. I have an access db consisting of a table for inventory and a table with imported outlook data.

I have matched the inventory accounts to the outlook data using instr functions to identify which accounts have an email in my inbox. I have also stored a unique key concatenated off the outlook data (Sender Name, Received Date and Subject).

What I am trying to accomplish is based off this unique key in my db, go to my outlook folder and match it to the email by dim (in outlook) it’s own unique key based off the same criteria (Sender Name, Received Date and Subject).

Once a match is found, save that email as the account name + date.

dbOl_key is my unique key in my access table and
Ool_key is the unique key being made in VBA.

The issue I am having is what when I run it as is, it does not save any emails. However, if I remove this statement : “If Ool_key = dbOl_key then” it does save the emails as account name + date. However the email being saved does not correlate with the right account name.

Any help would be appreciated.

Option Compare Database

Option Explicit
Public Sub SaveMessageAsMsg()
Dim olapp As Outlook.Application
Dim oMail As Outlook.MailItem
Dim olFolder As Outlook.MAPIFolder
Dim objItem As Object
Dim objNS As Outlook.NameSpace
Dim sPath As String
Dim Subject As String
Dim enviro As String
Dim StrFolderPath As String
Dim db As Database
Dim rs As Recordset
Dim oSender As String
Dim rec_dt As Date
Dim Ool_key As String 'unique key being made in code'
Dim dbDCN As String 'account number'
Dim dbOl_key As String 'unique key from db'
Dim oMLU As String

Set olapp = Outlook.Application
Set objNS = olapp.GetNamespace("MAPI")
Set olFolder = objNS.PickFolder
Set oMail = objItem
Set db = CurrentDb
Set rs = db.OpenRecordset("aquila_ol_mtch_temp", dbOpenTable)

For Each objItem In olFolder.Items

If objItem.MessageClass = "IPM.Note" Then
Set oMail = objItem


oSender = oMail.SenderName
rec_dt = oMail.ReceivedTime
Subject = oMail.Subject
Ool_key = Replace(oSender & rec_dt & Subject, " ", "") 'unique email key'
enviro = CStr(Environ("USERPROFILE"))
StrFolderPath = (enviro & "\documents\outlook_emails_2")


If Ool_key = dbOl_key Then 'if I remove this, it saves the email, however not to the right account name'

dbDCN = rs.Fields("dcn").Value 'account number'
dbOl_key = rs.Fields("ol_key").Value 'unique db key'
oMLU = dbDCN & "_" & rec_dt ' save as naming convention'
ReplaceCharsForFileName oMLU, "-"


rs.Edit
rs![MLU] = oMLU
rs.Update
rs.MoveNext


sPath = StrFolderPath & "\"
Debug.Print sPath & Subject
oMail.SaveAs sPath & oMLU & ".msg", olMSG
Else

End If
End If
Next

rs.Close
Set rs = Nothing

End Sub

Private Sub ReplaceCharsForFileName(oMLU As String, _
sChr As String _
)
oMLU = Replace(oMLU, "'", sChr)
oMLU = Replace(oMLU, "*", sChr)
oMLU = Replace(oMLU, "/", sChr)
oMLU = Replace(oMLU, "\", sChr)
oMLU = Replace(oMLU, ":", sChr)
oMLU = Replace(oMLU, "?", sChr)
oMLU = Replace(oMLU, Chr(34), sChr)
oMLU = Replace(oMLU, "<", sChr)
oMLU = Replace(oMLU, ">", sChr)
oMLU = Replace(oMLU, "|", sChr)

' MsgBox "Emails have been saved to documents\outlook_emails", vbInformation, "Status"
End Sub



Go to the top of the page
 
June7
post Feb 4 2019, 12:24 AM
Post#2



Posts: 287
Joined: 25-January 16



Code reads oldest emails first.

Have you step debugged? Set breakpoint and follow the code execution one line at a time. Check that variables populate as expected.

Ool_key = dbOl_key won't work because dbOl_Key is empty string on the first iteration and this cannot change because code within that block never executes. Removing that condition simply saves data starting with first record. Nothing in code looks for record in recordset that matches email identifiers so consider using FindFirst method on recordset.

Provide example of structure of "aquila_ol_mtch_temp" table.

Please post code within CODE tags to retain indentation and readability.





This post has been edited by June7: Feb 4 2019, 01:08 AM

--------------------
To provide db: copy, remove confidential data, run compact & repair, zip w/Windows Compression. Attachment Manager is below Advanced editor window, click Go Advanced below Quick Reply window.
Go to the top of the page
 
DanielPineault
post Feb 4 2019, 07:58 AM
Post#3


UtterAccess VIP
Posts: 6,395
Joined: 30-June 11



First off, for anyone trying to help, below is properly formatted code so you can more easily read it.

CODE
Public Sub SaveMessageAsMsg()
      Dim olapp                 As Outlook.Application
      Dim oMail                 As Outlook.MailItem
      Dim olFolder              As Outlook.MAPIFolder
      Dim objItem               As Object
      Dim objNS                 As Outlook.NameSpace
      Dim sPath                 As String
      Dim Subject               As String
      Dim enviro                As String
      Dim StrFolderPath         As String
      Dim db                    As Database
      Dim rs                    As Recordset
      Dim oSender               As String
      Dim rec_dt                As Date
      Dim Ool_key               As String    'unique key being made in code'
      Dim dbDCN                 As String    'account number'
      Dim dbOl_key              As String    'unique key from db'
      Dim oMLU                  As String
  
      Set olapp = Outlook.Application
      Set objNS = olapp.GetNamespace("MAPI")
      Set olFolder = objNS.PickFolder
      Set oMail = objItem
      Set db = CurrentDb
      Set rs = db.OpenRecordset("aquila_ol_mtch_temp", dbOpenTable)
  
      For Each objItem In olFolder.Items
          If objItem.MessageClass = "IPM.Note" Then
              Set oMail = objItem
              
              oSender = oMail.SenderName
              rec_dt = oMail.ReceivedTime
              Subject = oMail.Subject
              Ool_key = Replace(oSender & rec_dt & Subject, " ", "")    'unique email key'
              enviro = CStr(Environ("USERPROFILE"))
              StrFolderPath = (enviro & "\documents\outlook_emails_2")
  
              If Ool_key = dbOl_key Then    'if I remove this, it saves the email, however not to the right account name'
                  dbDCN = rs.Fields("dcn").Value    'account number'
                  dbOl_key = rs.Fields("ol_key").Value    'unique db key'
                  oMLU = dbDCN & "_" & rec_dt    ' save as naming convention'
                  ReplaceCharsForFileName oMLU, "-"
  
                  rs.Edit
                  rs![MLU] = oMLU
                  rs.Update
                  rs.MoveNext
  
                  sPath = StrFolderPath & "\"
                  Debug.Print sPath & Subject
                  oMail.SaveAs sPath & oMLU & ".msg", olMSG
              End If
          End If
      Next
  
      rs.Close
      Set rs = Nothing
  End Sub
  
  Private Sub ReplaceCharsForFileName(oMLU As String, _
                                      sChr As String)
      oMLU = Replace(oMLU, "'", sChr)
      oMLU = Replace(oMLU, "*", sChr)
      oMLU = Replace(oMLU, "/", sChr)
      oMLU = Replace(oMLU, "\", sChr)
      oMLU = Replace(oMLU, ":", sChr)
      oMLU = Replace(oMLU, "?", sChr)
      oMLU = Replace(oMLU, Chr(34), sChr)
      oMLU = Replace(oMLU, "<", sChr)
      oMLU = Replace(oMLU, ">", sChr)
      oMLU = Replace(oMLU, "|", sChr)
      ' MsgBox "Emails have been saved to documents\outlook_emails", vbInformation, "Status"
  End Sub








Now, as for the question, you are performing your test

CODE
If Ool_key = dbOl_key Then


but you're not defining dbOl_key until the test is positive, so it is never the case. You would need to set the dbOl_key value prior to the If statement.




Also, you need to add proper error handling, and it is good practice to cleanup all the variables you set at the end of your code (olapp, objNS, ...).

--------------------
Daniel Pineault (2010-2018 Microsoft MVP)
Professional Help: http://www.cardaconsultants.com
Free MS Access Code, Tips, Tricks and Samples: http://www.devhut.net

* Design should never say "Look at me". It should always say "Look at this". -- David Craib
* A user interface is like a joke, if you have to explain it, it's not that good! -- Martin LeBlanc


All code samples, demonstration databases, links,... are provided 'AS IS' and are to be used at your own risk! Take the necessary steps to check, validate ...(you are responsible for your choices and actions)
Go to the top of the page
 
ForestByte
post Feb 4 2019, 02:19 PM
Post#4



Posts: 38
Joined: 15-January 18



Have you considered saving the unique EntryID (https://docs.microsoft.com/en-us/office/VBA/api/outlook.mailitem.entryid) of the message instead of creating your own key? Using that you can find the message even if it got moved into another folder. That way you wouldn't really need to save them as .msg files, you could move them all (using an Outlook rule) into a "Processed" or "Accounts" and simply open them in Outlook. This is how I do it in a list box that shows all the emails:

CODE
Private Sub lstNewEmail_DblClick(Cancel As Integer)
'we need to open the message based on the entryid
Dim oMailItem As MailItem, strEntryId
Dim ObjOutlook As Outlook.Application
Dim myNameSpace As Object

On Error GoTo View_ERROR
'check if email
    
    If Me.lstNewEmail <> "" Then
        strEntryId = Me.lstNewEmail
        Set ObjOutlook = CreateObject("Outlook.Application", "localhost")
        Set myNameSpace = ObjOutlook.GetNamespace("MAPI")
        Set oMailItem = myNameSpace.GetItemFromID(strEntryId)
        oMailItem.Display
View_EXIT:
        Exit Sub
    End If
View_ERROR:
If Err.Number = 0 Then Exit Sub
MsgBox "The following error occured while trying to open the selected message: " & _
    vbCrLf & Err.Description & "(Error #: " & Err.Number & ")", vbCritical, "Open Message Error"
Resume View_EXIT

End Sub


For this to work you would need a shared mailbox for a multiuser environment.

Cheers,
Vlad
Go to the top of the page
 
DanielPineault
post Feb 4 2019, 04:03 PM
Post#5


UtterAccess VIP
Posts: 6,395
Joined: 30-June 11



You do have to be careful because the EntryID does change when the e-mail is moved between PSTs, for instance.

--------------------
Daniel Pineault (2010-2018 Microsoft MVP)
Professional Help: http://www.cardaconsultants.com
Free MS Access Code, Tips, Tricks and Samples: http://www.devhut.net

* Design should never say "Look at me". It should always say "Look at this". -- David Craib
* A user interface is like a joke, if you have to explain it, it's not that good! -- Martin LeBlanc


All code samples, demonstration databases, links,... are provided 'AS IS' and are to be used at your own risk! Take the necessary steps to check, validate ...(you are responsible for your choices and actions)
Go to the top of the page
 
Richard Trevor
post Feb 4 2019, 05:26 PM
Post#6



Posts: 10
Joined: 3-February 19



Hi Daniel,

You were correct that I was not defining my key or even giving a starting point in the recordset to find a key.

I reworked my code a bit. What I am trying to accomplish is:

1. find the first key in my rs.
2. go through the inbox until the my outlook key(ool_key) and db key (dbol_key) are a match.
3. if they are a match, then save the email.
4. move to the next record in my recordset and repeat the process until end of record set.

this is the latest code I am working with. I am getting a Run time error '13 on the 'Next' statement and cant figure out why.

Option Compare Database

Option Explicit
Public Sub SaveMessageAsMsg()
Dim olapp As Outlook.Application
Dim oMail As Outlook.MailItem
Dim olFolder As Outlook.MAPIFolder
Dim objItem As Object
Dim objNS As Outlook.NameSpace
Dim strEntry_id As String
Dim sPath As String
Dim Subject As String
Dim enviro As String
Dim StrFolderPath As String
Dim db As Database
Dim rs As Recordset
Dim oSender As String
Dim rec_dt As Date
Dim Ool_key As String
Dim dbDCN As String
Dim dbOl_key As String
Dim oMLU As String

Set olapp = Outlook.Application
Set objNS = olapp.GetNamespace("MAPI")
Set olFolder = objNS.PickFolder
Set oMail = objItem
Set db = CurrentDb
Set rs = db.OpenRecordset("aquila_ol_mtch_temp", dbOpenSnapshot, dbReadOnly)


If rs.EOF Then
rs.MoveFirst
Else
rs.MoveFirst
dbDCN = rs.Fields("dcn").Value
dbOl_key = rs.Fields("ol_key").Value
End If


For Each oMail In olFolder.Items
If olFolder.Items.Count > 0 Then

oSender = oMail.SenderName
rec_dt = oMail.ReceivedTime
Subject = oMail.Subject
Ool_key = Replace(oSender & rec_dt & Subject, " ", "")
enviro = CStr(Environ("USERPROFILE"))
StrFolderPath = (enviro & "\documents\outlook_emails_2")


If Ool_key = dbOl_key Then
olFolder.Items.Find (Ool_key)
oMail.Display

oMLU = dbDCN & "_" & rec_dt
ReplaceCharsForFileName oMLU, "-"
sPath = StrFolderPath & "\"
oMail.SaveAs sPath & oMLU & ".msg", olMSG
Debug.Print oMLU

Else
rs.MoveNext
dbDCN = rs.Fields("dcn").Value
dbOl_key = rs.Fields("ol_key").Value
End If
Else: MsgBox ("Inbox is empty")
End If
Next
Go to the top of the page
 
June7
post Feb 4 2019, 05:31 PM
Post#7



Posts: 287
Joined: 25-January 16



Did you read post 2? Consider:

CODE
    Set rs = db.OpenRecordset("aquila_ol_mtch_temp", dbOpenSnapshot, dbReadOnly)

     If olFolder.Items.Count > 0 Then
         For Each oMail In olFolder.Items
             oSender = oMail.SenderName
             rec_dt = oMail.ReceivedTime
             Subject = oMail.Subject
             Ool_key = Replace(oSender & rec_dt & Subject, " ", "")
             enviro = CStr(Environ("USERPROFILE"))
             StrFolderPath = (enviro & "\documents\outlook_emails_2")
             rs.FindFirst "[fieldname]='" & Ool_key & "'"
             If Not rs.NoMatch Then
                 olFolder.Items.Find (Ool_key)
                 oMail.Display
                 oMLU = dbDCN & "_" & rec_dt
                 ReplaceCharsForFileName oMLU, "-"
                 sPath = StrFolderPath & "\"
                 oMail.SaveAs sPath & oMLU & ".msg", olmsg
                 Debug.Print oMLU
             End If
         Next
     Else
         MsgBox ("Inbox is empty")
     End If

This post has been edited by June7: Feb 4 2019, 05:40 PM

--------------------
To provide db: copy, remove confidential data, run compact & repair, zip w/Windows Compression. Attachment Manager is below Advanced editor window, click Go Advanced below Quick Reply window.
Go to the top of the page
 
Richard Trevor
post Feb 4 2019, 06:24 PM
Post#8



Posts: 10
Joined: 3-February 19



June7,

Thank you for your input.

I am trying your code and got an error 13 - type mismatch, on the "Next" statement.

Also, when I however over the statements oMail = nothing. Could this be a cause?
This post has been edited by Richard Trevor: Feb 4 2019, 07:07 PM
Go to the top of the page
 
DanielPineault
post Feb 4 2019, 06:27 PM
Post#9


UtterAccess VIP
Posts: 6,395
Joined: 30-June 11



Perhaps something more like

CODE
Public Sub SaveMessageAsMsg()
    Dim olapp                 As Outlook.Application
    Dim oMail                 As Outlook.MailItem
    Dim olFolder              As Outlook.MAPIFolder
    Dim objItem               As Object
    Dim objNS                 As Outlook.NameSpace
    Dim strEntry_id           As String
    Dim sPath                 As String
    Dim Subject               As String
    Dim enviro                As String
    Dim StrFolderPath         As String
    Dim db                    As Database
    Dim rs                    As Recordset
    Dim oSender               As String
    Dim rec_dt                As Date
    Dim Ool_key               As String
    Dim dbDCN                 As String
    Dim dbOl_key              As String
    Dim oMLU                  As String

    Set olapp = Outlook.Application
    Set objNS = olapp.GetNamespace("MAPI")
    Set olFolder = objNS.PickFolder
    Set oMail = objItem
    Set db = CurrentDb
    Set rs = db.OpenRecordset("aquila_ol_mtch_temp", dbOpenSnapshot, dbReadOnly)
    If rs.RecordCount <> 0 Then
        Do While Not rs.EOF
            dbDCN = rs![dcn] 'could this return Null, if so, what about Nz()
            dbOl_key = rs![ol_key] 'could this return Null, if so, what about Nz()

            For Each oMail In olFolder.Items
                If olFolder.Items.Count > 0 Then
                    oSender = oMail.SenderName
                    rec_dt = oMail.ReceivedTime
                    Subject = oMail.Subject
                    Ool_key = Replace(oSender & rec_dt & Subject, " ", "")
                    enviro = CStr(Environ("USERPROFILE"))
                    StrFolderPath = (enviro & "\documents\outlook_emails_2")

                    If Ool_key = dbOl_key Then
                        olFolder.Items.Find (Ool_key)
                        oMail.Display
                        oMLU = dbDCN & "_" & rec_dt
                        ReplaceCharsForFileName oMLU, "-"
                        sPath = StrFolderPath & "\"
                        oMail.SaveAs sPath & oMLU & ".msg", olMSG
                        Debug.Print oMLU
                    Else
                        rs.MoveNext
                        dbDCN = rs![dcn]
                        dbOl_key = rs![ol_key]
                    End If
                Else
                    MsgBox ("Inbox is empty")
                End If
            Next
            rs.MoveNext
        Loop
    End If


Also, instead of iterating through all the Outlook items, maybe you could use .Restrict to only return those that match the dbOl_key in the first place.





--------------------
Daniel Pineault (2010-2018 Microsoft MVP)
Professional Help: http://www.cardaconsultants.com
Free MS Access Code, Tips, Tricks and Samples: http://www.devhut.net

* Design should never say "Look at me". It should always say "Look at this". -- David Craib
* A user interface is like a joke, if you have to explain it, it's not that good! -- Martin LeBlanc


All code samples, demonstration databases, links,... are provided 'AS IS' and are to be used at your own risk! Take the necessary steps to check, validate ...(you are responsible for your choices and actions)
Go to the top of the page
 
June7
post Feb 4 2019, 08:24 PM
Post#10



Posts: 287
Joined: 25-January 16



I did not show all the Set lines in my example. Did you include them in your attempt?

I have confirmed that looping olFolder items does work. I did Debug.Print of oMail attributes. I cannot verify your recordset code but I show valid syntax.

Daniel, really need to test for the folder item count before trying to loop through items.

If olFolder.Items.Count > 0 Then
For Each oMail In olFolder.Items





This post has been edited by June7: Feb 4 2019, 08:39 PM

--------------------
To provide db: copy, remove confidential data, run compact & repair, zip w/Windows Compression. Attachment Manager is below Advanced editor window, click Go Advanced below Quick Reply window.
Go to the top of the page
 
Richard Trevor
post Feb 4 2019, 08:51 PM
Post#11



Posts: 10
Joined: 3-February 19



This is the correct code I am running. its just copied from yours for the exception of edit in: rs.FindFirst ("[ol_key]="" & Ool_key & """)

there error I am getting is at the Next statement.

Option Compare Database

Option Explicit
Public Sub SaveMessageAsMsg()
Dim olapp As Outlook.Application
Dim oMail As Outlook.MailItem
Dim olFolder As Outlook.MAPIFolder
Dim objItem As Object
Dim objNS As Outlook.NameSpace
Dim strEntry_id As String
Dim sPath As String
Dim Subject As String
Dim enviro As String
Dim StrFolderPath As String
Dim db As Database
Dim rs As Recordset
Dim oSender As String
Dim rec_dt As Date
Dim Ool_key As String
Dim dbDCN As String
Dim dbOl_key As String
Dim oMLU As String

Set olapp = Outlook.Application
Set objNS = olapp.GetNamespace("MAPI")
Set olFolder = objNS.PickFolder
Set oMail = objItem

Set db = CurrentDb
Set rs = db.OpenRecordset("aquila_ol_mtch_temp", dbOpenSnapshot, dbReadOnly)

If olFolder.Items.Count > 0 Then

For Each oMail In olFolder.Items
oSender = oMail.SenderName
rec_dt = oMail.ReceivedTime
Subject = oMail.Subject
Ool_key = Replace(oSender & rec_dt & Subject, " ", "")
enviro = CStr(Environ("USERPROFILE"))
StrFolderPath = (enviro & "\documents\outlook_emails_2")
rs.FindFirst ("[ol_key]="" & Ool_key & """)
If Not rs.NoMatch Then
olFolder.Items.Find (Ool_key)
oMail.Display
oMLU = dbDCN & "_" & rec_dt
ReplaceCharsForFileName oMLU, "-"
sPath = StrFolderPath & "\"
oMail.SaveAs sPath & oMLU & ".msg", olMSG
Debug.Print oMLU
Else
End If
Next
Else
MsgBox ("Inbox is empty")
End If


End Sub



Private Sub ReplaceCharsForFileName(oMLU As String, _
sChr As String _
)
oMLU = Replace(oMLU, "'", sChr)
oMLU = Replace(oMLU, "*", sChr)
oMLU = Replace(oMLU, "/", sChr)
oMLU = Replace(oMLU, "\", sChr)
oMLU = Replace(oMLU, ":", sChr)
oMLU = Replace(oMLU, "?", sChr)
oMLU = Replace(oMLU, Chr(34), sChr)
oMLU = Replace(oMLU, "<", sChr)
oMLU = Replace(oMLU, ">", sChr)
oMLU = Replace(oMLU, "|", sChr)

End Sub



Go to the top of the page
 
June7
post Feb 4 2019, 09:04 PM
Post#12



Posts: 287
Joined: 25-January 16



Please post code within CODE tags.

Test this procedure and when it works, expand to include your recordset code:

CODE
Sub Test()
      Dim olapp                 As Outlook.Application
      Dim oMail                 As Outlook.MailItem
      Dim olFolder              As Outlook.MAPIFolder
      Dim objItem               As Object
      Dim objNS                 As Outlook.NameSpace
  
      Set olapp = Outlook.Application
      Set objNS = olapp.GetNamespace("MAPI")
      Set olFolder = objNS.PickFolder
      Set oMail = objItem
      If olFolder.Items.Count > 0 Then
          For Each oMail In olFolder.Items
              Debug.Print oMail.SenderName & ":" & oMail.ReceivedTime & ":" & oMail.Subject
          Next
      Else
           MsgBox ("Inbox is empty")
       End If
  End Sub






This post has been edited by June7: Feb 4 2019, 09:10 PM

--------------------
To provide db: copy, remove confidential data, run compact & repair, zip w/Windows Compression. Attachment Manager is below Advanced editor window, click Go Advanced below Quick Reply window.
Go to the top of the page
 
Richard Trevor
post Feb 9 2019, 01:42 PM
Post#13



Posts: 10
Joined: 3-February 19



Hi all,

Thanks for the feed back and examples.

I have gotten the code run to as I expected it to. The only struggle I have right now is having my code pick up a specific outlook folder instead of giving the user an option.

currently my code is set to: Set olFolder = objNS.PickFolder.

How can I set my olFolder to a specific outlook folder? The folder I am trying to access is not my personal folder, it is a another email box I am mapped to.
Go to the top of the page
 
June7
post Feb 9 2019, 03:48 PM
Post#14



Posts: 287
Joined: 25-January 16



See if this helps with connecting to different account https://officetricks.com/VBA-macro-choose-o...unt-send-email/





--------------------
To provide db: copy, remove confidential data, run compact & repair, zip w/Windows Compression. Attachment Manager is below Advanced editor window, click Go Advanced below Quick Reply window.
Go to the top of the page
 
cvanderkamp
post Feb 10 2019, 04:03 PM
Post#15



Posts: 1
Joined: 10-February 19



I had issues with sending email objects for users with newer versions of Windows and it simply came down to them being unable to write to their own c: drive. I had to create a NEW folder to send output. Have you tried the process manually to ensure you have permissions? Sorry if this help is too remedial but you never know.
Go to the top of the page
 
Richard Trevor
post Feb 13 2019, 05:19 PM
Post#16



Posts: 10
Joined: 3-February 19



Hi all,

Thanks for all the feedback. I was able to get my code to a place that is satisfactory.

Noob question though, how do I label this topic as "closed" or resolved?
Go to the top of the page
 


Custom Search


RSSSearch   Top   Lo-Fi    16th February 2019 - 02:14 AM