iOS-发送电子邮件
我用一种非常简单的方法发送电子邮件iOS-发送电子邮件,ios,email,mfmailcomposeviewcontroller,Ios,Email,Mfmailcomposeviewcontroller,我用一种非常简单的方法发送电子邮件 #import <MessageUI/MFMailComposeViewController.h> #import <MessageUI/MessageUI.h> #import <MessageUI/MFMessageComposeViewController.h> -(void) sendEmailto: (NSArray*)p_recipient withSubject:(NSString*)p_subject b
#import <MessageUI/MFMailComposeViewController.h>
#import <MessageUI/MessageUI.h>
#import <MessageUI/MFMessageComposeViewController.h>
-(void) sendEmailto: (NSArray*)p_recipient withSubject:(NSString*)p_subject body:(NSString*)p_body andAttachment:(NSData*)p_attachment
{
MFMailComposeViewController *emailComposer = [[MFMailComposeViewController alloc] init];
emailComposer.mailComposeDelegate = self;
if ([MFMailComposeViewController canSendMail] == YES)
{
[emailComposer setSubject:p_subject];
if(p_recipient != nil)
{
[emailComposer setToRecipients:p_recipient];
}
if (p_body!= nil && [p_body isEqualToString:@""]==NO)
{
[emailComposer setMessageBody:p_body isHTML:NO];
}
if(p_attachment != nil)
{
[emailComposer addAttachmentData:p_attachment mimeType:@"image/jpeg" fileName:@"image.jpg"];
}
// Present mail view controller on screen
[emailComposer setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
[self presentModalViewController:emailComposer animated:YES];
self.sentEmailTargetController = p_target;
}
else
{
NSLog(@"Can't Open Email");
}
}
- (void) mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
switch (result)
{
case MFMailComposeResultCancelled:
NSLog(@"e-mail cancelled");
break;
case MFMailComposeResultSaved:
NSLog(@"e-mail saved");
break;
case MFMailComposeResultSent:
NSLog(@"e-mail sent");
break;
case MFMailComposeResultFailed:
NSLog(@"e-mail sent failure: %@", [error localizedDescription]);
break;
default:
break;
}
if (![[self presentedViewController] isBeingDismissed])
{
[self dismissViewControllerAnimated:YES completion:NULL];
}
}
#导入
#进口
#进口
-(无效)发送电子邮件至:(NSArray*)带有subject的p_收件人:(NSString*)p_主题正文:(NSString*)p_正文和附件:(NSData*)p_附件
{
MFMailComposeViewController*emailComposer=[[MFMailComposeViewController alloc]init];
emailComposer.mailComposeDelegate=self;
如果([MFMailComposeViewController canSendMail]==是)
{
[emailComposer设置主题:p_主题];
如果(p_收件人!=无)
{
[emailComposer设置收件人:p_收件人];
}
if(p_body!=nil&[p_body IsequalString:@”“]==NO)
{
[emailComposer setMessageBody:pu body isHTML:NO];
}
如果(p_附件!=无)
{
[emailComposer addAttachmentData:p_附件mimeType:@“image/jpeg”文件名:@“image.jpg”];
}
//在屏幕上显示邮件视图控制器
[emailComposer SetModAltTransitionStyle:UIModAltTransitionStyleCrossBluse];
[self-presentModalViewController:emailComposer动画:是];
self.sentEmailTargetController=p_目标;
}
其他的
{
NSLog(@“无法打开电子邮件”);
}
}
-(void)mailComposeController:(MFMailComposeViewController*)控制器未完成结果:(MFMailComposeResult)结果错误:(NSError*)错误
{
开关(结果)
{
案例MFMailComposer结果已取消:
NSLog(@“电子邮件已取消”);
打破
案例MFMailComposer结果已保存:
NSLog(@“已保存电子邮件”);
打破
案例MFMailComposer结果已发送:
NSLog(@“已发送电子邮件”);
打破
案例MFMailComposer结果失败:
NSLog(@“电子邮件发送失败:%@,[错误本地化描述]);
打破
违约:
打破
}
如果(![[self-presentedViewController]被解除])
{
[self-dismissViewControllerAnimated:是完成:空];
}
}
我在接口中声明了MFMailComposeViewControllerDelegate
委托
在我的设备上运行电子邮件控制台打开时,我可以写一条消息,单击发送关闭电子邮件窗口,但实际上不发送电子邮件。方法-(void)mailComposeController:(MFMailComposeViewController*)控制器未完成结果:(mfmailcomposesult)结果错误:(NSError*)错误
记录发送的电子邮件,但邮件未到达目的地。尝试了几个电子邮件帐户
我可以写一封邮件,点击发送关闭电子邮件窗口,但实际上并不发送电子邮件
这实际上在规范中,如下所示:
使用此接口不保证立即发送相应的电子邮件
很多事情都可能出错,其中最明显的就是缺乏互联网连接。当然,即使电子邮件被发送,也不能保证它会送达任何人;其他事情可能会出错。FYI-不要对照
YES
或NO
检查BOOL
值。将if(someBool==YES)
更改为if(someBool)
。将if(someBool==NO)
改为if(!someBool)
(注意!
)@rmaddy每个编码员都有自己的编码风格你的评论就像告诉我不要写一样{在自己的一行中,并将其放在代码行的末尾…实际上,我的评论不是基于风格,而是基于实际功能。直接与NO
和YES
进行比较实际上可能会导致代码无法按预期工作。在大多数情况下,它可能会工作,但在某些情况下可能会失败,这将是一个非常困难的过程要追踪的错误。@liva听别人告诉你的。试着记住你是问问题的人;这意味着你不知道。rmaddy告诉你的是至关重要的。这不是风格问题。你的代码是错误的,很容易导致错误的结果。canSendMail
(或任何BOOL)不等于“是”也可以为真。永远不要,永远不要,永远不要将BOOL与“是”或“否”进行比较;直接使用BOOL作为条件。@matt我确实删除了“是”与“否”的比较,但它仍然不起作用!它将其记录为sentis。是否有更好的方法发送电子邮件?不,因为无论你做什么,你最终使用的是与Ma相同的引擎il应用程序(当然,除非您编写自己的SMTP客户端,或采用现有的SMTP客户端,如:)。您的方式在我的设备上一直有效。我不知道您的情况下到底出了什么问题,但我认为您无法做到您没有做到的事情。