2016-04-25 6 views
9

मैं अपने आवेदन से एक मेल भेजना चाहता हूं। मैं स्विफ्ट के साथ अपना पहला कदम कर रहा हूं और मैं एक बिंदु पर फंस गया हूं। मैं एक बटन दबाकर मेल खोलना चाहता हूं। क्या आप कृपया मुझे बता सकते हैं कि बटन कनेक्शन कैसे करें? मुझे लगता है कि यह एक एक्शन होना चाहिए लेकिन मैं नहीं जानता कि जहां यह कोडमेरे आईओएस एप्लिकेशन से मेल कैसे भेजें- SWIFT

import UIKit 
import MessageUI 

class ViewController: UIViewController, MFMailComposeViewControllerDelegate { 

    func sendEmail() { 
     let mailVC = MFMailComposeViewController() 
     mailVC.mailComposeDelegate = self 
     mailVC.setToRecipients([]) 
     mailVC.setSubject("Subject for email") 
     mailVC.setMessageBody("Email message string", isHTML: false) 

     presentViewController(mailVC, animated: true, completion: nil) 
    } 

    // MARK: - Email Delegate 

    func mailComposeController(controller: MFMailComposeViewController, didFinishWithResult result: MFMailComposeResult, error: NSError?) { 
     controller.dismissViewControllerAnimated(true, completion: nil) 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 

    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 

    } 
} 

उत्तर

10

परिवर्तन sendEmail इस तरह पर डाल:

@IBAction func sendEmail(sender: AnyObject) { 
    let mailVC = MFMailComposeViewController() 
    mailVC.mailComposeDelegate = self 
    mailVC.setToRecipients([]) 
    mailVC.setSubject("Subject for email") 
    mailVC.setMessageBody("Email message string", isHTML: false) 

    presentViewController(mailVC, animated: true, completion: nil) 
} 

और इंटरफ़ेस में कनेक्ट अपने बटन बिल्डर इस कार्रवाई

को
+0

मैं समारोह sndEmail() को हटाने के लिए है? – jonathan

+0

@jonathan बस (sendEmail समारोह बदल) {लाइन – gvuksic

+0

मूर्खतापूर्ण सवाल के लिए खेद है, लेकिन जब ऐसा है .. यह अभी भी does not – jonathan

5

मेल भेजने के लिए, आम तौर पर एमएफमेल कॉम्पोज़र का उपयोग किया जाता है। यह डिवाइस पर परीक्षण किया जा सकता है क्योंकि यह आईओएस सिम्युलेटर पर काम नहीं करता है।

परीक्षण है कि क्या मेल सेवा उपलब्ध है या नहीं के लिए, समारोह नीचे

if !MFMailComposeViewController.canSendMail() { 
    print("Mail services are not available") 
    return 
} 

उपयोग करें, और अपने कार्य या बटन की क्रिया में कोड के नीचे, मेल भेजने के उपयोग करने के लिए।

let composeVC = MFMailComposeViewController() 
composeVC.mailComposeDelegate = self 

// Configure the fields of the interface. 
composeVC.setToRecipients(["[email protected]"]) 
composeVC.setSubject("Hello World!") 
composeVC.setMessageBody("Hello from iOS!", isHTML: false) 

// Present the view controller modally. 
self.presentViewController(composeVC, animated: true, completion: nil) 

नहीं है मेल भेजने के पूरा होने पर प्रतिनिधि विधि है जो नीचे के रूप में दिखाया गया है परिभाषित किया जा सकता,

func mailComposeController(controller: MFMailComposeViewController, 
          didFinishWithResult result: MFMailComposeResult, error: NSError?) { 
    // Check the result or perform other tasks. 

    // Dismiss the mail compose view controller. 
    controller.dismissViewControllerAnimated(true, completion: nil) 
} 
+0

उत्तर को स्वीकार करने के लिए स्वतंत्र महसूस करें। और मेल सेवाओं को कैसे सक्षम किया जा सकता है? –

1
एंटोन Platonov को

जोड़ें: अपने स्रोत फ़ाइल की भीख माँग पर आयात MessageUI, और जब आप की घोषणा आपके विचार नियंत्रक ऐड प्रोटोकॉल के लिए वर्ग: कक्षा FirstVC: UIViewController, MFMailComposeViewControllerDelegate {

5

स्विफ्ट 3

let composer = MFMailComposeViewController() 

if MFMailComposeViewController.canSendMail() { 
    composer.mailComposeDelegate = self 
    composer.setToRecipients(["Email1", "Email2"]) 
    composer.setSubject("Test Mail") 
    composer.setMessageBody("Text Body", isHTML: false) 
    present(composer, animated: true, completion: nil) 
} 

प्रतिनिधि विधि

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

आयात पहले पुस्तकालय:

import MessageUI 

सेट प्रतिनिधि की तरह:

MFMailComposeViewControllerDelegate 

लिखें सुंदर कोड:

@IBAction func buttonHandlerSendEmail(_ sender: Any) { 

    let mailComposeViewController = configureMailComposer() 
    if MFMailComposeViewController.canSendMail(){ 
     self.present(mailComposeViewController, animated: true, completion: nil) 
    }else{ 
     print("Can't send email") 
    } 
} 
func configureMailComposer() -> MFMailComposeViewController{ 
    let mailComposeVC = MFMailComposeViewController() 
    mailComposeVC.mailComposeDelegate = self 
    mailComposeVC.setToRecipients([self.textFieldTo.text!]) 
    mailComposeVC.setSubject(self.textFieldSubject.text!) 
    mailComposeVC.setMessageBody(self.textViewBody.text!, isHTML: false) 
    return mailComposeVC 
} 

भी तरह प्रतिनिधि विधि लिखें:

//MARK: - MFMail compose method 
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) { 
    controller.dismiss(animated: true, completion: nil) 
} 

enter image description here

100% काम करने और परीक्षण किया

संबंधित मुद्दे