0

我正在制作一个电子邮件应用程序,用户可以在哪里设置发送电子邮件的时间?我可以在用户选择的时间在后台进程中发送电子邮件,但只有在应用程序打开时,在 UILocalNotification 的帮助下。但我想在用户关闭应用程序时发送电子邮件。例如:用户选择了 10 分钟后发送邮件的时间,并在此之前关闭了他的应用程序。

请帮帮我

以下是我的代码:

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{

    NSLog(@"didReceiveLocalNotification");

    NSLog(@"\nNotification dic = %@ %@",notification.userInfo,notification.alertBody);

    dictUser=notification.userInfo;
    [dictUser retain];

    NSLog(@"dictuser124:%@",dictUser);
    [dictUser retain];

    if ([str_info4 isEqualToString:@"0"]) 
    {
        [self sendEMAIL];
    }
    else if ([str_info4 isEqualToString:@"1"]) 
    {
        [self sendSMS];
    }

}

-(void)sendEMAIL
{
    [dictUser retain];

    SKPSMTPMessage *testMsg = [[SKPSMTPMessage alloc] init];


    //testMsg.fromEmail = @"Lexi mobile";//nimit51parekh@gmail.com

    testMsg.fromEmail = str_uname;
    NSLog(@"str_Uname=%@",testMsg.fromEmail);

    str_info = [str_info stringByReplacingOccurrencesOfString:@"," withString:@""];
    testMsg.toEmail = str_info;
    NSLog(@"autoemail=%@",testMsg.toEmail);


    testMsg.relayHost = @"smtp.gmail.com";


    testMsg.requiresAuth = YES;


    testMsg.login = str_uname;
    NSLog(@"autoelogin=%@",testMsg.login);

    testMsg.pass = str_password;
    NSLog(@"autopass=%@",testMsg.pass);

    testMsg.subject = @"Schedule Sms And Email";


    testMsg.wantsSecure = YES; 

    NSString *sendmsg=[[NSString alloc]initWithFormat:@"%@",str_info2];
    NSLog(@"automsg=%@",sendmsg);

    testMsg.delegate = self;


    NSDictionary *plainPart = [NSDictionary dictionaryWithObjectsAndKeys:@"text/plain",kSKPSMTPPartContentTypeKey,

                             sendmsg,kSKPSMTPPartMessageKey,@"8bit",kSKPSMTPPartContentTransferEncodingKey,nil];

    testMsg.parts = [NSArray arrayWithObjects:plainPart,nil];


    [testMsg send];

   // [self DeleteRowAfterSending];
    [self performSelector:@selector(DeleteRowAfterSending) withObject:nil afterDelay:5.0];
}



-(void)messageSent:(SKPSMTPMessage *)message

{
    [message release];

    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Success" message:@"Your email is sent successfully" delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];

    [alert show];

    [alert release];

    NSLog(@"delegate - message sent");

}

-(void)messageFailed:(SKPSMTPMessage *)message error:(NSError *)error{

    [message release];

    // open an alert with just an OK button

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Fail" message:@"Message sending failure" delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];

    [alert show];

    [alert release];


    NSLog(@"delegate - error(%d): %@", [error code], [error localizedDescription]);

}
4

3 回答 3

1

据我所知,一旦应用程序关闭,您将无法进行任何操作。您可以在后端 SERVER 端执行此操作以自动执行操作。

于 2012-05-28T06:28:19.217 回答
0

据我所知,我知道当应用程序关闭并且没有可用的应用程序实例时,它不可能执行某些操作。

我宁愿建议在后端使用 SERVER 来实现推送通知。您可以将用户必须发送电子邮件的时间保存在数据库中,并相应地编写用于在该时间发送电子邮件的 CRNS。

于 2012-05-28T06:10:03.033 回答
0

如果应用程序已经关闭,则无法“安排”从应用程序发送电子邮件。你最好的选择是在后端服务器上处理所有这些东西。该应用程序存储了消息应该发送到的人、内容、时间、地点。设置一个 cronjob 轮询需要发送的消息队列,如果预定时间匹配,则发送电子邮件。

于 2012-05-28T05:58:40.100 回答