2017-03-10 44 views
1

添付ファイル付きメールを送信する検索ソリューションです。 私はこのコードを持っていますが、ファイルが添付されていません...添付ファイル付きメールを送信

if let url = URL(string: "mailto:\(email)?subject=report&body=see_attachment&attachment=/Users/myname/Desktop/report.txt") { 
     NSWorkspace.shared().open(url) 
    } 

私はそれが多分MessageUIで作業を参照しているが、私はなぜ知らないこのフレームワークをインポートすることはできません。私はこのエラーメッセージを受け取ります:そのようなモジュールはありません 'MessageUI' 一般的な>リンクされたフレームワークとライブラリをチェックしましたが、MessageUIはありません...

誰かがメールでファイルを追加できますか? ありがとう

答えて

2

私が見つけたあなたの代わりに使用することができますどのような

(常に少なくとも...詳細は:)あなたがインターネット上で見てどこに大ざっぱ依存思わない)attachmentmailto:内のURLは、MacOSでサポートされていないようですは、NSSharingServiceのインスタンスです。documented here

Hereは、その使用方法を示す例です。

そして、あなたの場合には、あなたのような何かを行うことができます:

let email = "your email here" 
let path = "/Users/myname/Desktop/report.txt" 
let fileURL = URL(fileURLWithPath: path) 

let sharingService = NSSharingService(named: NSSharingServiceNameComposeEmail) 
sharingService?.recipients = [email] //could be more than one 
sharingService?.subject = "subject" 
let items: [Any] = ["see attachment", fileURL] //the interesting part, here you add body text as well as URL for the document you'd like to share 

sharingService?.perform(withItems: items) 

お役に立てば幸いです。

+0

恐ろしい! このコードは完全に機能します!ありがとうございました:) – Musyanon

+0

@ムシャノンあなたは元気です – pbodsk

1

まずはimport MessageUIをインポートする必要があります。このために、プロジェクトにフレームワークを追加します。

例:

enter image description here

した後、あなたが電子メールを送信して終了したときに知っているためMFMailComposeViewControllerDelegateを調査します。電子メールの作成の

例:

if(MFMailComposeViewController.canSendMail()) { 
     println("Can send email.") 

     let mailComposer = MFMailComposeViewController() 
     mailComposer.mailComposeDelegate = self 

     //Set the subject and message of the email 
     mailComposer.setSubject("Have you heard a swift?") 
     mailComposer.setMessageBody("This is what they sound like.", isHTML: false) 

     if let filePath = NSBundle.mainBundle().pathForResource("swifts", ofType: "wav") { 
      println("File path loaded.") 

      if let fileData = NSData(contentsOfFile: filePath) { 
       println("File data loaded.") 
       mailComposer.addAttachmentData(fileData, mimeType: "audio/wav", fileName: "swifts") 
      } 
     } 
     self.presentViewController(mailComposer, animated: true, completion: nil) 
    } 

の作業例は、このlinkが提示されます。

+1

ありがとうございます! Finaly私はMessageUIをインポートできない理由を理解しています。なぜなら、これはIOSアプリケーション専用だからです。私のプロジェクトはMac用です。どのように私はMacのアプリのためにそれを行うことができますか? – Musyanon

+0

@ムシャノンあなたは歓迎です –

+0

@ムシャノンあなたは別の質問をする必要があります。適切な質問タグ付き。このようにして私たちはこの質問を破ります。 –

1
import MessageUI 
class ViewController: UIViewController,MFMailComposeViewControllerDelegate { 

func sendMail() { 
    if(MFMailComposeViewController.canSendMail()){ 
     print("Can send email.") 

     let mailComposer = MFMailComposeViewController() 
     mailComposer.mailComposeDelegate = self 

     //Set to recipients 
     mailComposer.setToRecipients(["[email protected]"]) 

     //Set the subject 
     mailComposer.setSubject("email with document pdf") 

     //set mail body 
     mailComposer.setMessageBody("This is what they sound like.", isHTML: true) 
     let pathPDF = "\(NSTemporaryDirectory())contract.pdf" 
      if let fileData = NSData(contentsOfFile: pathPDF) 
      { 
       print("File data loaded.") 
       mailComposer.addAttachmentData(fileData as Data, mimeType: "application/pdf", fileName: "contract.pdf") 
      } 

     //this will compose and present mail to user 
     self.present(mailComposer, animated: true, completion: nil) 
    } 
    else 
    { 
     print("email is not supported") 
    } 

    func mailComposeController(_ didFinishWithcontroller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) 
    { 
    self.dismiss(animated: true, completion: nil) 
    } 
} 
関連する問題