iOS
 Computer >> コンピューター >  >> プログラミング >> iOS

Swiftでメールに添付ファイルを送信する方法をわかりやすく解説

はじめに:Swiftでメール送信機能を実装するには

iPhoneアプリからメールを送信できるようにするには、iOS SDKが提供しているMessageUIフレームワークをインポートする必要があります。このフレームワークには、標準のメール作成画面を表示できるMFMailComposeViewControllerが含まれており、これを使うことでユーザーはアプリ内から直接メールを送信できます。

ここでは、PDFファイルを添付したメールを送信する方法を、手順に沿って解説していきます。

手順1:MessageUIフレームワークのインポートとUIの準備

まず、アプリ内でMessageUIフレームワークをインポートします。次に、Storyboard上でビューコントローラーにボタンをドラッグ&ドロップで配置し、そのボタンに対して空のアクション(IBAction)を作成しておきましょう。

手順2:メール送信用のコードを実装する

続いて、ビューコントローラーに以下のコードを追加します。このメソッドでは、宛先・件名・本文・添付ファイル(PDF)を設定して、メール作成画面を表示しています。

func composeEmail(to email: String, subject: String, Body: String) {
    if MFMailComposeViewController.canSendMail() {
        let mailComposer = MFMailComposeViewController()
        mailComposer.mailComposeDelegate = self
        mailComposer.setToRecipients([email])
        mailComposer.setSubject(subject)
        mailComposer.setMessageBody(Body, isHTML: true)

        // 一時ディレクトリ内のPDFファイルを取得して添付
        let pathPDF = "\(NSTemporaryDirectory())result.pdf"
        if let fileData = NSData(contentsOfFile: pathPDF) {
            mailComposer.addAttachmentData(fileData as Data,
                mimeType: "application/pdf",
                fileName: "result.pdf")
        }

        self.present(mailComposer, animated: true, completion: nil)
    } else {
        print("email is not supported")
    }
}

// メール送信画面を閉じるためのデリゲートメソッド
func mailComposeController(_ controller: MFMailComposeViewController,
    didFinishWith result: MFMailComposeResult, error: Error?) {
    self.dismiss(animated: true, completion: nil)
}

コードのポイント

  • canSendMail()による事前チェック: デバイスでメールが送信できる状態かを確認し、できない場合はエラーメッセージを出力します。
  • addAttachmentData(_:mimeType:fileName:): 添付データ・MIMEタイプ・ファイル名を指定してファイルを添付します。PDFの場合は「application/pdf」を指定します。
  • デリゲートメソッドの実装: メール送信後に画面を閉じるため、mailComposeController(_:didFinishWith:error:)を実装してdismissを呼び出す必要があります。

手順3:ボタンのアクションから呼び出す

先ほど作成したボタンのアクション内で、このメソッドを呼び出します。

@IBAction func actionButtonOne(_ sender: Any) {
    composeEmail(to: "ashish@xy.com",
        subject: "Saying Hi",
        Body: "Hey there, hope you are doing well.")
}

実行結果

上記のコードを実装してアプリを起動し、ボタンをタップすると、次のようにメール作成画面が表示されます。件名・本文・添付ファイルが自動的に設定されていることが確認できます。

Swiftでメールに添付ファイルを送信する方法をわかりやすく解説

実装時の注意点

動作確認を行う際は、以下の点に注意してください。

  • iPhoneの「メール」アプリに少なくとも1つのアカウントが設定されている必要があります。アカウント未設定の場合、canSendMail()はfalseを返します。
  • 添付したいPDFファイルが指定したパスにローカル保存されていることを確認してください。ファイルが存在しない場合、添付は行われません。

なお、シミュレータではメールアカウントを設定できないため、実際の動作確認は実機でのテストを推奨します。

  1. ExcelとOutlookを使って一括メールを送信する3つの方法【添付ファイル・Word差し込み印刷・Power Automate】

    Excelを使ってOutlookから大量のメールを一括送信する方法をお探しの方は、この記事が参考になります。同じ内容のメールを多数の宛先に送りたい場面は業務でよくありますが、この作業を効率化するためのさまざまな方法を、本記事で詳しく解説していきます。それでは早速本文に入りましょう。 ワークブックのダウンロード ExcelとOutlookで一括メールを送信する3つの方法 ここでは、ある会社の従業員ID、氏名、性別、年齢、メールアドレスの一覧データを用意しました。このメールアドレス宛に、Excel・Outlook・Word・Power Automateを活用してメールを送る方法を、以下の3つの

  2. 匿名でメールを送信する方法|プライバシーを守る3つの実践テクニック

    Gmail、Outlook、Yahoo!メールなど、大手インターネット企業が運営する高機能なメールクライアントは市場に数多く存在します。しかし、こうしたプラットフォームはユーザーの行動や他のオンライン活動を追跡・監視しようとするため、多くのユーザーはオンラインのプライバシーに対して不安を感じています。 通常、メールは双方向のコミュニケーション手段として使われますが、身元を明かさずにメールを送受信したい場面もあるでしょう。その理由は完全に正当なものであり得ます。単にプライバシーを大切にしたい、アカウント登録時に個人情報を提供したくない、あるいは決して追跡されたくない機密性の高いメールを送りたい—