jon*_*an 14 email xcode ios swift mfmailcomposeviewcontroller
我想从我的应用程序发送邮件.我正在用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()
}
}
Run Code Online (Sandbox Code Playgroud)
Mr.*_*ani 15
首先导入库:
import MessageUI
Run Code Online (Sandbox Code Playgroud)
设置委托像:
MFMailComposeViewControllerDelegate
Run Code Online (Sandbox Code Playgroud)
写漂亮的代码:
@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
}
Run Code Online (Sandbox Code Playgroud)
也写代理方法,如:
//MARK: - MFMail compose method
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
controller.dismiss(animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)
100%工作和测试
gvu*_*sic 13
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)
}
Run Code Online (Sandbox Code Playgroud)
并在"界面"构建器中将您的按钮连接到此操作
斯威夫特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)
}
Run Code Online (Sandbox Code Playgroud)
委托方法
class SendMailViewController: MFMailComposeViewControllerDelegate {
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
dismiss(animated: true, completion: nil)
}
}
Run Code Online (Sandbox Code Playgroud)
要发送邮件,通常使用MFMailComposer.它可以在设备上进行测试,因为它在iOS模拟器上不起作用.
要测试邮件服务是否可用,请使用以下功能,
if !MFMailComposeViewController.canSendMail() {
print("Mail services are not available")
return
}
Run Code Online (Sandbox Code Playgroud)
并发送邮件,使用您的功能或按钮操作下面的代码.
let composeVC = MFMailComposeViewController()
composeVC.mailComposeDelegate = self
// Configure the fields of the interface.
composeVC.setToRecipients(["email_address@example.com"])
composeVC.setSubject("Hello World!")
composeVC.setMessageBody("Hello from iOS!", isHTML: false)
// Present the view controller modally.
self.presentViewController(composeVC, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
完成发送邮件时有委托方法,可以定义如下,
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)
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
20925 次 |
最近记录: |