Mail Extensions

RSS for tag

Use Mail Extensions for composition, message actions, secure email, and content blocking in the Mail app.

Posts under Mail Extensions tag

35 Posts
Sort by:
Post not yet marked as solved
0 Replies
332 Views
I am wondering if there is a way to add an ME message action that can delete a message. I see that it is possible to move messages to various folders but I want to write an extension that can delete messages if they meet certain criteria.
Posted
by sienabay.
Last updated
.
Post not yet marked as solved
0 Replies
344 Views
My app's Mail Extension uses the MEMessageSecurityHandler and its decoding functions but opening various emails is noticeably slower, sometimes taking 3-5s, especially on emails with attachments. Specifically, the time it takes from selecting an email from the list to the email body/contents to show up on the right panel is slow, even showing "loading" with the spinner icon. In comparison, when I disable the Mail Extension, emails open in less than a second as expected. Curiously, the "Build Mail app extensions" WWDC sample project seems to have the exact same issue despite having minimal functionality (passes through the mime data without doing any processing on it). Any idea? Env: macOS Ventura 13.4.1 (c) (22F770820d) Mail Version 16.0 (3731.600.7) Xcode 14.2
Posted Last updated
.
Post not yet marked as solved
1 Replies
373 Views
In Mail Kit, MEMessageSecurityHandler.extensionViewController(messageContext:)'s context is always nil. Any idea why? class MessageSecurityHandler: NSObject, MEMessageSecurityHandler { func extensionViewController(messageContext context: Data) -> MEExtensionViewController? { let controller = ExampleSigningViewController.sharedInstance controller.msgContext = context // nil ??? why? return controller } I thought it had to do with the MEDecodedMessage.context returned in decodedMessage(forMessageData:) but changing returned the context below still results in the above giving an empty Data. func decodedMessage(forMessageData data: Data) -> MEDecodedMessage? { MEDecodedMessage( data: data, securityInformation: MEMessageSecurityInformation( signers: [], isEncrypted: true, signingError: nil, encryptionError: nil), context: data, // extensionViewController(messageContext:)'s context is still empty banner: nil) Env: macOS Ventura 13.4.1 (c) (22F770820d) Mail Version 16.0 (3731.600.7) Xcode 14.2
Posted Last updated
.
Post not yet marked as solved
0 Replies
326 Views
Hi all, I've noticed that my app mail doesn't work well anymore. Anytime I try to search it gives me 0 results, or if any results appear, they will take minutes to come. I've tried rebuilding the mailbox, tried to rebuild the spotlight. Deleted the V10 folder, updated to Sonoma beta version. Nothing seems to make it work. Some of my mail boxes only have around 1000 emails and always worked fine. Is there any way to freshly install the app ? or only a new macOS installation will sort this out ?
Posted Last updated
.
Post not yet marked as solved
0 Replies
342 Views
I was looking at creating a Action Mail Extension to programatically delete an e-mail in MacOS Mail. However, it seems MEMessageAction only supports moving the message to the Trash folder (or Junk and Archive). Mail (v16) itself seems to offer this capability in its' Junk Mail Advanced dialog's "Perform the following actions" picker in the form of a "Delete Message" choice. However, in practice I haven't been able to get this to work for an iCloud account which is why I was looking into the Mail Extensions route. Is this an action that could be addressed in a future rev. of Mail Extensions or is there a different way I could go about this today? Thank you!
Posted
by NBW-1984.
Last updated
.
Post not yet marked as solved
0 Replies
615 Views
I tried to configure autodiscover service for Mac Mail. Application cannot set configuration for mailbox from autodiscover. On DNS i've all required records, i've autodiscover.xml on server with actual settings for mailbox. Can you tell me, what i did wrong?
Posted Last updated
.
Post not yet marked as solved
0 Replies
981 Views
I keep getting this error when I try to run my app: responseValidationFailed(reason:Alamofire.AFError.ResponseValidationFailureReason.unacceptableStatusCode(code: 401)) Status code: 401 I am just trying to incorporate Mailgun into my app. I've don't=e some reaserch and people keep saying that I put in an invalid API key, but it is the correct one! Help would be much appreciated. Here's the code (obviously the API Key and domain would be filled in with my actual one): import SwiftUI import Alamofire import SwiftyJSON struct ContentView: View { let mailgunAPIKey = "-apikey-" let mailgunDomain = "-mailgundomain-" let recipientEmail = "email@email.com" @State private var userEmail = "" @State private var showAlert = false var body: some View { VStack { TextField("Your Email", text: $userEmail) .textFieldStyle(RoundedBorderTextFieldStyle()) .padding() Button(action: { sendEmail() }) { Text("Send Email") } } .alert(isPresented: $showAlert) { Alert(title: Text("Success"), message: Text("Email sent successfully"), dismissButton: .default(Text("OK"))) } } func sendEmail() { let parameters: [String: String] = [ "from": userEmail, "to": recipientEmail, "subject": "Test Email", "text": "Hello from Mailgun!" ] AF.request("https://api.mailgun.net/v3/\(mailgunDomain)/messages", method: .post, parameters: parameters, encoding: URLEncoding.httpBody, headers: HTTPHeaders(["Authorization": "Basic \(mailgunAPIKey)"])) .validate() .responseJSON { response in switch response.result { case .success(let value): if let json = value as? [String: Any] { print(json) showAlert = true // Show the alert on success } else { print("Error parsing JSON response") } case .failure(let error): print(error) if let statusCode = response.response?.statusCode { print("Status code: \(statusCode)") } // Handle error } } } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } }
Posted Last updated
.
Post not yet marked as solved
0 Replies
778 Views
I'm writing a security extension which implements the MEMessageSecurityHandler protocol. The problem I experience is related to the encodingStatus method as defined here. The problem is that when I return the following MEOutgoingMessageEncodingStatus instance the signing and encryption controls don't appear even though I believe they should: MEOutgoingMessageEncodingStatus( canSign: false, canEncrypt: true, securityError: nil, addressesFailingEncryption: [] ) Any other combination of the canSign and canEncrypt properties does generate the expected output. So... is there anything I'm missing? Thanks a ton for your time!
Posted Last updated
.
Post not yet marked as solved
1 Replies
625 Views
Hey everyone, I am building an app for my dad's business and I have implemented a feature where you can book a consultation with him. You can select a date, enter your name and your email and a note if you'd like. And when you press "Book", it sends an email to my dad with all of the info that you inputted. That all works well, but when you select the "Book" button, the mail composer pops up with the appointment info that you inputted. But I would like for the email to automatically send to my dad when the user presses "Book", I don't want the user to have to send the email along with pressing the "Book" button. Is this possible? And if not, what are some other ways that I can implement the appointment booking software? Any help would be appreciated! Thanks in advance. Here is the code for the booking page: import UIKit import MessageUI struct AppointmentFormView: View { @State private var name: String = "" @State private var contact: String = "" @State private var selectedDate = Date() @State private var notes: String = "" @State private var showAlert = false var body: some View { Form { Section(header: Text("Personal Information")) { TextField("First + Last Name", text: $name) TextField("Your Email Address", text: $contact) } Section(header: Text("Appointment Details")) { DatePicker("When would you like your appointment?", selection: $selectedDate, displayedComponents: [.date]) TextField("Anything you'd like us to know?", text: $notes) } Button(action: { // Perform validation and backend tasks bookAppointment() }) { Text("Book") } } .alert(isPresented: $showAlert) { Alert(title: Text("Appointment Booked"), message: Text("Your appointment has been successfully booked."), dismissButton: .default(Text("OK"))) } } private func bookAppointment() { // Perform validation and backend tasks here // Example implementation: show alert when appointment is booked showAlert = true // Compose and send the email notification let mailView = MailView(recipientEmail: "inquiries@metricacarpentry.com", subject: "New Appointment Booked", messageBody: """ Name: \(name) Contact: \(contact) Date: \(selectedDate) Notes: \(notes) """) UIApplication.shared.windows.first?.rootViewController?.present(UIHostingController(rootView: mailView), animated: true, completion: nil) } } struct UIMailView: UIViewControllerRepresentable { let recipientEmail: String let subject: String let messageBody: String @Binding var showAlert: Bool // Add showAlert binding func makeUIViewController(context: Context) -> MFMailComposeViewController { let composeVC = MFMailComposeViewController() composeVC.mailComposeDelegate = context.coordinator composeVC.setToRecipients([recipientEmail]) composeVC.setSubject(subject) composeVC.setMessageBody(messageBody, isHTML: false) return composeVC } func updateUIViewController(_ uiViewController: MFMailComposeViewController, context: Context) { // No need to update the view controller } func makeCoordinator() -> Coordinator { Coordinator(showAlert: $showAlert) // Pass showAlert binding to Coordinator } final class Coordinator: NSObject, MFMailComposeViewControllerDelegate { @Binding var showAlert: Bool init(showAlert: Binding<Bool>) { _showAlert = showAlert } func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) { EmailHelper.getRootViewController()?.dismiss(animated: true, completion: nil) if result == .sent { let alert = UIAlertController(title: "Email Sent ✅", message: "Thanks for your inquiry! We'll get back to you within 24 hours.", preferredStyle: .alert) alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil)) EmailHelper.getRootViewController()?.present(alert, animated: true, completion: nil) } } } }
Posted Last updated
.
Post not yet marked as solved
3 Replies
1.6k Views
As long time Mail plugin developer (11 years) I really welcome the addition of extensions for Mail. Unfortunately for now the feature set is very minimal and will only help us to implement a minimal viable version of our product if we switch to it. Is the current API set in stone for macOS Monterey or does it make sense to send feature requests? If so, where it the best place to post them? Here or via Radar? Thanks!
Posted
by lukas.
Last updated
.
Post not yet marked as solved
1 Replies
714 Views
I previously got no relevant replies here so I'm trying again. I'm hoping to connect to an Apple engineer here. Issue description: For some fetched messages, the ENVELOPE's message-ID contains unescaped double quotes where those are not allowed according to the RFC (not allowed to link to that here but it's specified in section 9 of the RFC3501). Like this: "<"392889836.11.1529401004417.JavaMail.Redacted"@Redacted>" This causes some IMAP clients to crash or not sync properly (hence not working well or at all with iCloud mail accounts). Proposed fix The double quotes iCloud returns in the response should instead be escaped like this: "<\"392889836.11.1529401004417.JavaMail.Redacted\"@Redacted>" in order to comply with the RFC. More details For more details about how I discovered this issue, please see this.
Posted
by BT8080.
Last updated
.
Post not yet marked as solved
0 Replies
410 Views
Hi all, I've been trying for over a year to get a review for our app to become a default mail app request. I've sent emails to our devrel contact, the app review contact, and tried to find other places to look. How can we get this processed?
Posted Last updated
.
Post not yet marked as solved
0 Replies
530 Views
All developers hate Mac when it comes to Outlook. I will list the two most frustrating things about Mac when it comes to using Apple: Email folders are not highlighted, so you cannot view and open folders fast when needed. It is not possible to move an email folder from one email to another, lets say you have an info@ email and name@ email, there is no way to move the folder unless its IMAP, but companies use 365 so how can you do that. For a company like APPLE this should be an easy solution and its a pitty that many users in companies refrain from buying apple computers when all these features are unavailable.
Posted
by Egli.
Last updated
.
Post not yet marked as solved
0 Replies
491 Views
I am currently working on a project where I need to control the text signature for email drafts using MailKit(Mail Extension) on MacOS. However, I am not sure if this is possible or not. I have not been able to find any information on this in the MailKit documentation (https://developer.apple.com/documentation/mailkit). Signature selection I want to control/switch by a dropdown the signature of an email draft using swift code extension with MailKit. Has anyone had experience with this before? Is there a way to control the signature for email drafts using MailKit on MacOS? If so, could you please provide some guidance or code snippets on how to achieve this? Any help would be greatly appreciated. Thank you in advance!
Posted
by jodergraf.
Last updated
.
Post not yet marked as solved
0 Replies
309 Views
Since downloading latest beta update my mail app not working properly it will only send and receive outlook mail stopped sending and receiving emails from aol and gmail have tried several times to uninstall and reinstall mail app but keep getting same result
Posted
by Padreamer.
Last updated
.