IT-serve
IT-serve

Reputation: 131

How to attach image from ImageView to E-mail within an App

Got the following. I made a simple IOS / Swift app that needs to send an image to a specific e-mail. What i already got working:

  1. Take picture
  2. Grap picture from existing photo's
  3. Image is shown in Image View
  4. Send button thats leads me to mail with already configured: recipient, subject and messagebody.

What i need to get working is how i can add the selected image from Image View to be added to the e-mail when i press send.

Following code is the one i use:

FOR TAKING AND SELECTING IMAGES:

@IBOutlet var imageView: UIImageView!

@IBOutlet weak var PicLabel: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

@IBAction func FotoKnop(sender: AnyObject) {
}

@IBAction func chooseImageFromPhotoLibrary() {
    let picker = UIImagePickerController()

    picker.delegate = self
    picker.sourceType = .PhotoLibrary

    presentViewController(picker, animated: true, completion: nil)
}
@IBAction func chooseFromCamera() {
    let picker = UIImagePickerController()

    picker.delegate = self
    picker.sourceType = .Camera

    presentViewController(picker, animated: true, completion: nil)
}
func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject : AnyObject]!) {
    imageView.image = image
    self.dismissViewControllerAnimated(true, completion: nil)

}

For e-mail

    @IBAction func sendEmailButtonTapped(sender: AnyObject) {
        let mailComposeViewController = configuredMailComposeViewController()
        if MFMailComposeViewController.canSendMail() {
            self.presentViewController(mailComposeViewController, animated: true, completion: nil)

        } else {
        }
    }

    func configuredMailComposeViewController() -> MFMailComposeViewController {
        let mailComposerVC = MFMailComposeViewController()
        mailComposerVC.mailComposeDelegate = self // Extremely important to set the --mailComposeDelegate-- property, NOT the --delegate-- property
        mailComposerVC.setToRecipients(["[email protected]"])
        mailComposerVC.setSubject("Mail vanuit PicMail")
        mailComposerVC.setMessageBody("Onderstaand de doorgestuurde informatie", isHTML:
            false)

        return mailComposerVC


    }


    func showSendMailErrorAlert() {
        let sendMailErrorAlert = UIAlertView(title: "Could Not Send Email", message: "Your device could not send e-mail.  Please check e-mail configuration and try again.", delegate: self, cancelButtonTitle: "OK")
        sendMailErrorAlert.show()
    }

    // MARK: MFMailComposeViewControllerDelegate Method
    func mailComposeController(controller: MFMailComposeViewController!, didFinishWithResult result: MFMailComposeResult, error: NSError!) {
        controller.dismissViewControllerAnimated(true, completion: nil)
    }
}

Any thoughts would be great!

Upvotes: 1

Views: 1511

Answers (1)

Hamza Ansari
Hamza Ansari

Reputation: 3084

func configuredMailComposeViewController() -> MFMailComposeViewController {
    let mailComposerVC = MFMailComposeViewController()
    mailComposerVC.mailComposeDelegate = self // Extremely important to set the --mailComposeDelegate-- property, NOT the --delegate-- property
    mailComposerVC.setToRecipients(["[email protected]"])
    mailComposerVC.setSubject("Mail vanuit PicMail")
    mailComposerVC.setMessageBody("Onderstaand de doorgestuurde informatie", isHTML:
        false)

    //Add Image as Attachment
    if let image = imageView.image {
       let data = UIImageJPEGRepresentation(image, 1.0)
        mailComposerVC.addAttachmentData(data!, mimeType: "image/jpg", fileName: "image")
    }

    return mailComposerVC
}

Upvotes: 3

Related Questions