И спасибо @LeoDabus за предложенное улучшение кода. Это также хорошо работает.

я есть то, что я считаю, это уникальная проблема. У меня проблемы с получением окна электронной почты для отклонения. Я использую Xcode 8.

В первый раз, когда я открываю письмо, оно отклоняется правильно, но если я его открою снова, оно не будет. Если я нажимаю «Отмена», это не дает мне возможность «Удалить черновик». Если я нажимаю «Отправить», электронное письмо отправляется, но окно не закрывается.

Мой код ниже.mailComposeController вызывается правильно в первый раз, но никогда не вызывается во второй раз. У кого-нибудь есть идеи о том, что мне не хватает?

let mail = MFMailComposeViewController()
func sendEmail(body: String, subject: String) {
    if MFMailComposeViewController.canSendMail() {
        mail.mailComposeDelegate = self

        mail.setSubject(subject)
        mail.setMessageBody("\(body)", isHTML: false)

        if let data = (body as NSString).data(using: String.Encoding.utf8.rawValue){
            //Attach File
            mail.addAttachmentData(data, mimeType: "text/plain", fileName: "data.txt")
        }

        present(mail, animated: true)
    } else {
        // show failure alert
    }
}

func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
    controller.dismiss(animated: true, completion: nil)
}

Ответы на вопрос(1)

Ваш ответ на вопрос