3
5

More than 3 years have passed since last update.

[Swift5]MessageUIを用いたメール機能(お問い合わせ機能)の実装方法

Posted at

やりたいこと

今回はMessageUIを用いたメール機能の実装方法を紹介します。

メール機能 == お問い合わせ機能として扱えるかと思います。
ユーザー情報を管理する場合、通報機能としても代用できるのでぜひ参考にしてください!

使用するライブラリ

import MessageUI

コード紹介

今回はお問い合わせボタンが存在すると仮定して紹介します。
@IBAction func tapMailButton(_ sender: Any)はお問い合わせボタンがタップされると呼ばれます。

// お問い合わせボックスをタップすると呼ばれる
@IBAction func tapMailButton(_ sender: Any) {

  // メールを送信できるかどうかの確認
  if !MFMailComposeViewController.canSendMail() {
    print("Mail services are not available")
    return
  }

  // インスタンスの作成とデリゲートの委託
  let mailViewController = MFMailComposeViewController()
      mailViewController.mailComposeDelegate = self

  // 宛先の設定(開発者側のアドレス)
  let toRecipients = ["ここにユーザーから受信するメールアドレスを入力"]

  // 件名と宛先の表示
  mailViewController.setSubject("開発者側で設定する件名")
  mailViewController.setToRecipients(toRecipients)
  mailViewController.setMessageBody("開発者側で設定する本文", isHTML: false)

  // mailViewControllerの反映(メール内容の反映)
  self.present(mailViewController, animated: true, completion: nil)
}

これでメールの設定は完了です。

次にメールを開いた後の結果でアクションを分岐します。

// メール機能終了処理
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {

  // メールの結果で条件分岐
  switch result {

  // キャンセルの場合
  case .cancelled:
    print("Email Send Cancelled")
    break

  // 下書き保存の場合
  case .saved:
    print("Email Saved as a Draft")
    break

  // 送信成功の場合
  case .sent:
    print("Email Sent Successfully")
    break

  // 送信失敗の場合
  case .failed:
    print("Email Send Failed")
    break
  default:
    break
  }

  //メールを閉じる
  controller.dismiss(animated: true, completion: nil)
}

これでMessageUIを用いたメール機能(お問い合わせ機能)の実装は完了です。
アドレスや、件名や本文を自身で触ってみると楽しいですよ!

備考

メール機能はXcodeのシュミレーターでは動かないので、動作確認は実機で行うようにして下さい。

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5