Results 1 to 3 of 3

Thread: smtp + winsock

  1. #1

    Thread Starter
    New Member
    Join Date
    Sep 2000
    Location
    Chesterfield (UK)
    Posts
    7
    I have written a VB routine to send an email via winsock. However, for testing I am sending a binary file with character 1 through 255. When I receipt the mail through Outlook and save the file I find a character 13 as appeared before a character 10.

    In test's it is writing a chr(13) before every chr(10).

    As anybody any idea's.

    Regards

    Steve

  2. #2
    Addicted Member
    Join Date
    Apr 2000
    Posts
    215
    hmmm that is weird, are you encoding the file (to send an email with an attachment over smpt you need to encode the file I think...) but you are most likely are but just incase here is a function to encode a file to be sent through smpt I don't know who wrote this:

    Code:
    Public Function UUEncodeFile(strFilePath As String) As String
    
        Dim intFile         As Integer      'file handler
        Dim intTempFile     As Integer      'temp file
        Dim lFileSize       As Long         'size of the file
        Dim strFileName     As String       'name of the file
        Dim strFileData     As String       'file data chunk
        Dim lEncodedLines   As Long         'number of encoded lines
        Dim strTempLine     As String       'temporary string
        Dim i               As Long         'loop counter
        Dim j               As Integer      'loop counter
        
        Dim strResult       As String
        '
        'Get file name
        strFileName = Mid$(strFilePath, InStrRev(strFilePath, "\") + 1)
        '
        'Insert first marker: "begin 664 ..."
        strResult = "begin 664 " + strFileName + vbLf
        '
        'Get file size
        lFileSize = FileLen(strFilePath)
        lEncodedLines = lFileSize \ 45 + 1
        '
        'Prepare buffer to retrieve data from
        'the file by 45 symbols chunks
        strFileData = Space(45)
        '
        intFile = FreeFile
        '
        Open strFilePath For Binary As intFile
            For i = 1 To lEncodedLines
                'Read file data by 45-bytes cnunks
                '
                If i = lEncodedLines Then
                    'Last line of encoded data often is not
                    'equal to 45, therefore we need to change
                    'size of the buffer
                    strFileData = Space(lFileSize Mod 45)
                End If
                'Retrieve data chunk from file to the buffer
                Get intFile, , strFileData
                'Add first symbol to encoded string that informs
                'about quantity of symbols in encoded string.
                'More often "M" symbol is used.
                strTempLine = Chr(Len(strFileData) + 32)
                '
                If i = lEncodedLines And (Len(strFileData) Mod 3) Then
                    'If the last line is processed and length of
                    'source data is not a number divisible by 3, add one or two
                    'blankspace symbols
                    strFileData = strFileData + Space(3 - (Len(strFileData) Mod 3))
                End If
                
                For j = 1 To Len(strFileData) Step 3
                    'Breake each 3 (8-bits) bytes to 4 (6-bits) bytes
                    '
                    '1 byte
                    strTempLine = strTempLine + Chr(Asc(Mid(strFileData, j, 1)) \ 4 + 32)
                    '2 byte
                    strTempLine = strTempLine + Chr((Asc(Mid(strFileData, j, 1)) Mod 4) * 16 _
                                   + Asc(Mid(strFileData, j + 1, 1)) \ 16 + 32)
                    '3 byte
                    strTempLine = strTempLine + Chr((Asc(Mid(strFileData, j + 1, 1)) Mod 16) * 4 _
                                   + Asc(Mid(strFileData, j + 2, 1)) \ 64 + 32)
                    '4 byte
                    strTempLine = strTempLine + Chr(Asc(Mid(strFileData, j + 2, 1)) Mod 64 + 32)
                Next j
                'replace " " with "`"
                strTempLine = Replace(strTempLine, " ", "`")
                'add encoded line to result buffer
                strResult = strResult + strTempLine + vbLf
                'reset line buffer
                strTempLine = ""
            Next i
        Close intFile
    
        'add the end marker
        strResult = strResult & "`" & vbLf + "end" + vbLf
        'asign return value
        UUEncodeFile = strResult
        
    End Function
    I probably am not much help but that was the only thing I could think of that might be the problem.


  3. #3

    Thread Starter
    New Member
    Join Date
    Sep 2000
    Location
    Chesterfield (UK)
    Posts
    7
    Thanks, I wasn't encoding the attachments.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width