【问题标题】:Attaching .txt to MFMailComposeViewController将 .txt 附加到 MFMailComposeViewController
【发布时间】:2013-01-20 09:16:37
【问题描述】:

我有一个 .txt 文件存储在 Documents 文件夹中,我想通过 MFMailComposeViewController 发送它,并在 -sendEmail 方法的正文中添加下一个代码:

NSData *txtData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"dataBase" ofType:@"txt"]];
        [mail addAttachmentData:txtData mimeType:@"text/plain" fileName:[NSString stringWithFormat:@"dataBase.txt"]];

当邮件编辑器出现时,我可以在邮件正文中看到附件,但我收到的邮件没有附件。可能是 .txt 附件的 MIME 类型错误或此代码有问题?

谢谢

【问题讨论】:

    标签: ios objective-c xcode email-attachments mfmailcomposeviewcontroller


    【解决方案1】:

    在 Swift 3 中,您可以像这样发送带有附件的邮件

    @IBAction func emailLogs(_ sender: Any) {
        let allPaths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
        let documentsDirectory = allPaths.first!
        let pathForLog = documentsDirectory.appending("/application.log")
    
        if MFMailComposeViewController.canSendMail() {
            let mail = MFMailComposeViewController()
            mail.mailComposeDelegate = self;
            mail.setToRecipients(["recipient@email.com"])
            mail.setSubject("Application Logs")
            mail.setMessageBody("Please see attached", isHTML: true)
    
            if let fileData = NSData(contentsOfFile: pathForLog) {
                mail.addAttachmentData(fileData as Data, mimeType: "text/txt", fileName: "application.log")
            }
    
            self.present(mail, animated: true, completion: nil)
        }
    }
    

    然后在结果上关闭作曲家控制器

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

    确保订阅此委托

    MFMailComposeViewControllerDelegate
    

    【讨论】:

      【解决方案2】:
      NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
      NSString *documentsDirectory = [paths objectAtIndex:0];        
              NSString *txtFilePath = [documentsDirectory stringByAppendingPathComponent:@"abc.txt"];
      NSData *noteData = [NSData dataWithContentsOfFile:txtFilePath];
              MFMailComposeViewController *_mailController = [[MFMailComposeViewController alloc] init];
              [_mailController setSubject:[NSString stringWithFormat:@"ABC"]];
              [_mailController setMessageBody:_messageBody
                                       isHTML:NO];
              [_mailController setMailComposeDelegate:self];
              [_mailController addAttachmentData:noteData mimeType:@"text/plain" fileName:@"abc.txt"];
      

      希望对你有帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-02-17
        • 1970-01-01
        • 2012-06-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多