Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS-发送电子邮件_Ios_Email_Mfmailcomposeviewcontroller - Fatal编程技术网

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客户端,如:)。您的方式在我的设备上一直有效。我不知道您的情况下到底出了什么问题,但我认为您无法做到您没有做到的事情。