如何从iOS应用程序发送邮件-SWIFT
我想从我的申请表中发送一封邮件。我正和斯威夫特一起踏出我的第一步,我已经在某一点上卡住了。我想按一下按钮打开邮件。你能告诉我怎么做按钮连接吗?我认为这应该是一种行为,但我不知道该把它写在代码上的什么地方如何从iOS应用程序发送邮件-SWIFT,ios,xcode,swift,email,mfmailcomposeviewcontroller,Ios,Xcode,Swift,Email,Mfmailcomposeviewcontroller,我想从我的申请表中发送一封邮件。我正和斯威夫特一起踏出我的第一步,我已经在某一点上卡住了。我想按一下按钮打开邮件。你能告诉我怎么做按钮连接吗?我认为这应该是一种行为,但我不知道该把它写在代码上的什么地方 import UIKit import MessageUI class ViewController: UIViewController, MFMailComposeViewControllerDelegate { func sendEmail() { let mai
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()
}
}
更改
sendmail
如下:
@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)
}
并在界面生成器中将您的按钮连接到此操作以发送邮件,通常使用MFMailComposer。它可以在设备上测试,因为它不能在iOS模拟器上工作 要测试邮件服务是否可用,请使用以下功能
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_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)
发送邮件完成时有委托方法,可定义如下:
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)
}
向Anton Platonov添加:在请求源文件时导入MessageUI,并在为视图控制器声明类时添加协议:class FirstVC:UIViewController,MFMailComposeViewControllerDelegate{Swift 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)
}
}
首先导入库:
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)
}
100%工作并经过测试我必须删除func sndEmail()吗?@jonathan只需更改func sendmail(){line很抱歉这个愚蠢的问题,但如果是那样的话..它仍然没有works@IBActionfunc电子邮件(发件人:AnyObject){//func电子邮件(){let mailVC=MFMailComposeViewController()mailVC.mailComposeDelegate=self-mailVC.setToRecipients([])mailVC.setSubject(“电子邮件主题”)mailVC.setMessageBody(“电子邮件消息字符串”,isHTML:false)presentViewController(mailVC,动画:true,完成:nil)}@jonathan我很高兴听到,请随意接受回答谢谢你的回答。如何启用邮件服务?