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

実装時の注意点
動作確認を行う際は、以下の点に注意してください。
- iPhoneの「メール」アプリに少なくとも1つのアカウントが設定されている必要があります。アカウント未設定の場合、
canSendMail()はfalseを返します。 - 添付したいPDFファイルが指定したパスにローカル保存されていることを確認してください。ファイルが存在しない場合、添付は行われません。
なお、シミュレータではメールアカウントを設定できないため、実際の動作確認は実機でのテストを推奨します。
-
ExcelとOutlookを使って一括メールを送信する3つの方法【添付ファイル・Word差し込み印刷・Power Automate】
Excelを使ってOutlookから大量のメールを一括送信する方法をお探しの方は、この記事が参考になります。同じ内容のメールを多数の宛先に送りたい場面は業務でよくありますが、この作業を効率化するためのさまざまな方法を、本記事で詳しく解説していきます。それでは早速本文に入りましょう。 ワークブックのダウンロード ExcelとOutlookで一括メールを送信する3つの方法 ここでは、ある会社の従業員ID、氏名、性別、年齢、メールアドレスの一覧データを用意しました。このメールアドレス宛に、Excel・Outlook・Word・Power Automateを活用してメールを送る方法を、以下の3つの
-
匿名でメールを送信する方法|プライバシーを守る3つの実践テクニック
Gmail、Outlook、Yahoo!メールなど、大手インターネット企業が運営する高機能なメールクライアントは市場に数多く存在します。しかし、こうしたプラットフォームはユーザーの行動や他のオンライン活動を追跡・監視しようとするため、多くのユーザーはオンラインのプライバシーに対して不安を感じています。 通常、メールは双方向のコミュニケーション手段として使われますが、身元を明かさずにメールを送受信したい場面もあるでしょう。その理由は完全に正当なものであり得ます。単にプライバシーを大切にしたい、アカウント登録時に個人情報を提供したくない、あるいは決して追跡されたくない機密性の高いメールを送りたい—