---
title: "mailComposeController(_:didFinishWith:error:)"
framework: Message UI
role: symbol
role_heading: Instance Method
platforms: [iOS 3.0+, iPadOS 3.0+, Mac Catalyst 13.1+, visionOS 1.0+]
path: "messageui/mfmailcomposeviewcontrollerdelegate/mailcomposecontroller(_:didfinishwith:error:)"
---

# mailComposeController(_:didFinishWith:error:)

Tells the delegate that the user wants to dismiss the mail composition view.

## Declaration

```swift
optional func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: (any Error)?)
```

## Parameters

- `controller`: The view controller object that manages the mail composition view.
- `result`: The result of the user’s action.
- `error`: If an error occurred, this parameter contains an error object with information about the type of failure.

## Discussion

Discussion Your implementation of this method should dismiss the mail composition view. Implementation of this method is optional, but expected. If the user has opted to send the email created by this interface, that email should be queued in the user’s Mail program by the time this method is called. If an error occurred while queueing the email message, the error parameter contains an error object that indicates the type of failure that occurred.

## See Also

### Responding to Email Completion

- [MFMailComposeResult](messageui/mfmailcomposeresult.md)
