首頁>Program>source

我想从我的自定義iPhone應用程式發送郵件.我用過 MFMailComposeViewController 从我以前的應用程式中的iPhone發送郵件.現在,我不想展示 MFMailComposeViewController 给使用者,如果他们單击 Send Mail button 郵件自動發送到 recipient mail address .我怎樣才能做到這一點? 你能帮我吗? 預先感谢。

我已使用以下代碼顯示MFMailComposeViewController,

MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] init];
controller.mailComposeDelegate = self;
[controller setSubject:@"Details"];
[controller setMessageBody:@"Hi" isHTML:NO];
[controller setToRecipients:[NSArray arrayWithObjects:@"[email protected]", nil]];
[self presentModalViewController:controller animated:YES];
[controller release];
最新回復
  • 5月前
    1 #

    以程式設計方式从iPhone應用程式 cannot發送電子郵件,而無需使用者干預 可使用任何Apple框架實施.在越狱的手機中可能会出現這種情况,但隨後它將永远看不到App Store的內部.

    如果您想控製電子郵件的發送,那麼更好的方法是在您的服務器端設置一个web服務,您可以使用HTTP請求發佈该服務.如果您只發佈到一个地址,則可以很好地工作,尽管您可能希望让使用者輸入他们的迴信地址。

    否則,只有標準對话框可用(這取決於使用他们在設備上設置的任何帐戶)。

  • 5月前
    2 #

    iOS SDK使得使用內建電子郵件發送電子郵件變得非常容易 蜜蜂.使用几行代碼,您可以啟動与庫存郵件應用程式相同的電子郵件介面,以編寫電子郵件.您可以使用MFMailComposeViewController類弹出郵件編寫器表格,編寫郵件並可以發送普通郵件或檔案附件郵件.有關更多資訊:从您的iOS應用發送電子郵件

    但是,在這一部分中,我將要解釋的是關於發送電子郵件而不顯示郵件編輯器表的資訊.在後台發送電子郵件.對於此功能,我们不能使用iOS本機MFMailComposer類,因為它不允许我们在後台發送電子郵件,而是从使用者必须點击"發送"按钮的地方弹出郵件編輯器视圖,因此在本节中,我將 使用SKPSMTPMessage庫在後台發送電子郵件,但是必须使用此方法對電子郵件帐戶进行硬編碼。

    限製:

    發件人/收件人電子郵件地址必须经過硬編碼,否則您必须使用應用程式中的一些弹出式表格来抓取它,使用者可以在其中輸入發件人/收件人電子郵件地址.此外,發件人帐戶凭据也必须进行硬編碼,因為我们無法从設備設置中获取它。

    方法:

    將CFNetwork.framework匯入到您的專案中。

    包含#import" SKPSMTPMessage.h" #import" NSData + Base64Additions.h" //用於Base64編碼

    包含在您的ViewController中


    下載SKPSMTPMessage庫 https://github.com/jetseven/skpsmtpmessage

    拖放已下載到專案中的" SMTPLibrary"檔案夹。

    在繼續之前,让您知道我正在使用在此示例代碼中硬編碼的發送者/接收者電子郵件地址和發送者密碼。但是,您可以从使用者那裏获取此凭据,从而允许他们以某種形式輸入(使用 UIViews)。

    -(void) sendEmailInBackground {
        NSLog(@"Start Sending");
        SKPSMTPMessage *emailMessage = [[SKPSMTPMessage alloc] init];
        emailMessage.fromEmail = @"[email protected]"; //sender email address
        emailMessage.toEmail = @"[email protected]";  //receiver email address
        emailMessage.relayHost = @"smtp.gmail.com";
        //emailMessage.ccEmail [email protected]"your cc address";
        //emailMessage.bccEmail [email protected]"your bcc address";
        emailMessage.requiresAuth = YES;
        emailMessage.login = @"[email protected]"; //sender email address
        emailMessage.pass = @"Passwxxxx"; //sender email password
        emailMessage.subject [email protected]"@"email subject header message";
        emailMessage.wantsSecure = YES; 
        emailMessage.delegate = self; // you must include <SKPSMTPMessageDelegate> to your class
        NSString *messageBody = @"your email body message";
        //for example :   NSString *messageBody = [NSString stringWithFormat:@"Tour Name: %@\nName: %@\nEmail: %@\nContact No: %@\nAddress: %@\nNote: %@",selectedTour,nameField.text,emailField.text,foneField.text,addField.text,txtView.text];
        // Now creating plain text email message
        NSDictionary *plainMsg = [NSDictionary dictionaryWithObjectsAndKeys:@"text/plain",kSKPSMTPPartContentTypeKey, messageBody,kSKPSMTPPartMessageKey,@"8bit",kSKPSMTPPartContentTransferEncodingKey,nil];
        emailMessage.parts = [NSArray arrayWithObjects:plainMsg,nil];
        //in addition : Logic for attaching file with email message.
        /*
        NSString *filePath = [[NSBundle mainBundle] pathForResource:@"filename" ofType:@"JPG"];
        NSData *fileData = [NSData dataWithContentsOfFile:filePath];
        NSDictionary *fileMsg = [NSDictionary dictionaryWithObjectsAndKeys:@"text/directory;\r\n\tx- unix-mode=0644;\r\n\tname=\"filename.JPG\"",kSKPSMTPPartContentTypeKey,@"attachment;\r\n\tfilename=\"filename.JPG\"",kSKPSMTPPartContentDispositionKey,[fileData encodeBase64ForData],kSKPSMTPPartMessageKey,@"base64",kSKPSMTPPartContentTransferEncodingKey,nil];
        emailMessage.parts = [NSArray arrayWithObjects:plainMsg,fileMsg,nil]; //including plain msg and attached file msg
        */
        [emailMessage send];
        // sending email- will take little time to send so its better to use indicator with message showing sending...
    }
    

    現在,處理委託方法:

    //成功後

    -(void)messageSent:(SKPSMTPMessage *)message{
        NSLog(@"delegate - message sent");
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Message sent." message:nil delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles: nil];
        [alert show]; 
    }
    

    //失败時

    -(void)messageFailed:(SKPSMTPMessage *)message error:(NSError *)error{
    // open an alert with just an OK button
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error!" message:[error localizedDescription] delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles: nil];
        [alert show];
        NSLog(@"delegate - error(%d): %@", [error code], [error localizedDescription]);
    }
    

    好的,从編碼端開始就可以了.希望本教程對您有用吗

  • 適用於MATLAB的Java JPA類
  • 使用ViewHolder的Android ListView