アプリ内のデータファイルを添付ファイルでメール送信したくて、ググっていたが…一番近い内容が以下の記事でした。
添付ファイルは、Documentフォルダ内のファイルを添付したい…。
Documentフォルダまではググれるけど、バイナリファイルとして添付するにはどうするんだろう…と、Dataクラスを潜ってみたら…。
/// Initialize a `Data` with the contents of a `URL`. /// /// - parameter url: The `URL` to read. /// - parameter options: Options for the read operation. Default value is `[]`. /// - throws: An error in the Cocoa domain, if `url` cannot be read. public init(contentsOf url: URL, options: Data.ReadingOptions = default) throws
英語がわからんけど、使えそう…で、以下のように添付してみました。
//Documentフォルダのパス if let documentDirectoryFileURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last { // ファイルパス ... ディレクトリのパスにファイル名をつなげてファイルのフルパスを作る let realmFileName = "default.realm" let targetFilePath = documentDirectoryFileURL.appendingPathComponent(realmFileName) do { //realmファイルの送信 let data = try Data(contentsOf: targetFilePath) mailViewController.addAttachmentData(data, mimeType: "realm/binary", fileName: realmFileName) } catch { print("error ...") } }
テストして見ると、受け取ったメールの添付ファイルをちゃんと開くことができた!
最終的に、メールを送信するメソッドは以下のようになりました。