func encode()

in NIOSMTP/NIOSMTP/SMTPRequestEncoder.swift [22:60]


    func encode(data: SMTPRequest, out: inout ByteBuffer) throws {
        switch data {
        case .sayHello(serverName: let server):
            out.writeString("EHLO \(server)")
        case .startTLS:
            out.writeString("STARTTLS")
        case .mailFrom(let from):
            out.writeString("MAIL FROM:<\(from)>")
        case .recipient(let rcpt):
            out.writeString("RCPT TO:<\(rcpt)>")
        case .data:
            out.writeString("DATA")
        case .transferData(let email):
            let date = Date()
            let dateFormatter = DateFormatter()
            dateFormatter.dateFormat = "EEE, dd MMM yyyy HH:mm:ss Z"
            let dateFormatted = dateFormatter.string(from: date)

            out.writeString("From: \(formatMIME(emailAddress: email.senderEmail, name: email.senderName))\r\n")
            out.writeString("To: \(formatMIME(emailAddress: email.recipientEmail, name: email.recipientName))\r\n")
            out.writeString("Date: \(dateFormatted)\r\n")
            out.writeString("Message-ID: <\(date.timeIntervalSince1970)\(email.senderEmail.drop { $0 != "@" })>\r\n")
            out.writeString("Subject: \(email.subject)\r\n\r\n")
            out.writeString(email.body)
            out.writeString("\r\n.")
        case .quit:
            out.writeString("QUIT")
        case .beginAuthentication:
            out.writeString("AUTH LOGIN")
        case .authUser(let user):
            let userData = Data(user.utf8)
            out.writeBytes(userData.base64EncodedData())
        case .authPassword(let password):
            let passwordData = Data(password.utf8)
            out.writeBytes(passwordData.base64EncodedData())
        }
        
        out.writeString("\r\n")
    }