【发布时间】:2025-11-25 03:40:01
【问题描述】:
我想在使用MFMailComposeViewController 的自定义UITableViewCell 中单击按钮时发送邮件。
如果答案在 Objective-C 中,请欣赏。
【问题讨论】:
标签: ios objective-c mfmailcomposeviewcontroller
我想在使用MFMailComposeViewController 的自定义UITableViewCell 中单击按钮时发送邮件。
如果答案在 Objective-C 中,请欣赏。
【问题讨论】:
标签: ios objective-c mfmailcomposeviewcontroller
.h 文件中的以下代码
#import <MessageUI/MFMailComposeViewController.h>
给代表<MFMailComposeViewControllerDelegate>
.m 文件中的以下代码
//Where you want to open dialog write below code
if([MFMailComposeViewController canSendMail]) {
MFMailComposeViewController *mailCont = [[MFMailComposeViewController alloc] init];
mailCont.mailComposeDelegate = self; // Required to invoke mailComposeController when send
[mailCont setSubject:@"Your Subject!"];
[mailCont setToRecipients:[NSArray arrayWithObject:@"hello@test.com"]];
[mailCont setMessageBody:@"Your Body" isHTML:NO];
[self presentViewController:mailCont animated:YES completion:nil];
}
//Delegate Method
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
switch (result)
{
case MFMailComposeResultCancelled:
//YOUR ACTION
break;
case MFMailComposeResultSent:
//YOUR ACTION
break;
case MFMailComposeResultSaved:
//YOUR ACTION
break;
case MFMailComposeResultFailed:
//YOUR ACTION
break;
default:
break;
}
}
您可以通过此代码关闭视图 - [self dismissViewControllerAnimated:YES completion:nil];
【讨论】:
确保您是在真实设备而不是模拟器中测试它,并且您的设备中配置了邮件 ID
#import <MessageUI/MessageUI.h>
#import <MessageUI/MFMailComposeViewController.h>
@interface ViewController ()<MFMailComposeViewControllerDelegate>
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (IBAction)sendmail:(id)sender {
if ([MFMailComposeViewController canSendMail])
{
MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init];
mailer.mailComposeDelegate = self;
[mailer setSubject:@"Subject"];
NSArray *toRecipients = [NSArray arrayWithObjects:@"Recipients", nil];
[mailer setToRecipients:toRecipients];
NSString *emailBody = @"Body";
[mailer setMessageBody:emailBody isHTML:NO];
[self presentViewController:mailer animated:YES completion:nil];
}
}
- (void) mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
// Close the Mail Interface
[self dismissViewControllerAnimated:NO completion:NULL];
}
【讨论】: