         self.init(mimeType: mimeType, name: name, description: description)
         self.inputStream = inputStream
         self.length = length
+    }
+    
+    public convenience init(content: String, mimeType: String) {
+        self.init(content: content, mimeType: mimeType, name: nil, description: nil)
+    }
+    
+    public convenience init(content: String, mimeType: String, name: String?, description: String?) {
+        self.init(mimeType: mimeType, name: name, description: description)
+        self.content = content
     }
     
     public required init(mimeType: String, name: String?, description: String?) {

                    formData.appendPartWithFileData(data, name: attachment.name ?? "file", fileName: "attachment\(i)", mimeType: attachment.mimeType)
                } else if let inputStream = attachment.inputStream {
                    formData.appendPartWithInputStream(inputStream, name: attachment.name ?? "file", fileName: "attachment\(i)", length: attachment.length ?? 0, mimeType: attachment.mimeType)
                }
            }
            }, error: nil)

                let fileAttributes = try? NSFileManager.defaultManager().attributesOfItemAtPath(URL.path!)
                self.length = (fileAttributes?[NSFileSize] as? NSNumber)?.longLongValue
                success?(inputStream: self.inputStream!, length: self.length ?? 0)
            }) { error in
                failure?(error: error)
            }
        }
    }
    
    public func downloadString(success: ((content: String) -> Void)?, failure: ((error: NSError) -> Void)?) {
        if let attachmentID = self.attachmentID {
            MMAttachmentService.download(attachmentID, success: { URL in
                if let data = NSData(contentsOfURL: URL), content = NSString(data: data, encoding: NSUTF8StringEncoding) as? String {
                    success?(content: content)
                }
            }) { error in
                failure?(error: error)
            }
