iphone - যবহ - আপেল আইডি খোলার নিয়ম




আমি কিভাবে একটি আইফোন অ্যাপ্লিকেশন থেকে মেইল পাঠাতে পারেন (8)

আইওএস 3.0 এবং পরবর্তীতে আপনাকে MFMailComposeViewController ক্লাস এবং MFMailComposeViewControllerDelegate প্রোটোকলটি ব্যবহার করতে হবে, যা বার্তাউআই ফ্রেমওয়ার্কে টিকবে।

প্রথম framework এবং আমদানি যোগ করুন:

#import <MessageUI/MFMailComposeViewController.h>

তারপর, একটি বার্তা পাঠাতে:

MFMailComposeViewController* controller = [[MFMailComposeViewController alloc] init];
controller.mailComposeDelegate = self;
[controller setSubject:@"My Subject"];
[controller setMessageBody:@"Hello there." isHTML:NO]; 
if (controller) [self presentModalViewController:controller animated:YES];
[controller release];

তারপর ব্যবহারকারী কাজ করে এবং আপনি সময় প্রতিনিধি কলব্যাক পেতে:

- (void)mailComposeController:(MFMailComposeViewController*)controller  
          didFinishWithResult:(MFMailComposeResult)result 
                        error:(NSError*)error;
{
  if (result == MFMailComposeResultSent) {
    NSLog(@"It's away!");
  }
  [self dismissModalViewControllerAnimated:YES];
}

ইমেইল পাঠানোর জন্য ডিভাইস কনফিগার করা হয়েছে কিনা তা পরীক্ষা করে দেখুন:

if ([MFMailComposeViewController canSendMail]) {
  // Show the composer
} else {
  // Handle the error
}

আমি আমার আইফোন অ্যাপ্লিকেশন থেকে একটি ইমেইল পাঠাতে চান। আমি শুনেছি যে আইওএস এসডিকে একটি ইমেইল এপিআই নেই। আমি নিম্নলিখিত কোডটি ব্যবহার করতে চাই না কারণ এটি আমার অ্যাপ্লিকেশান থেকে প্রস্থান করবে:

NSString *url = [NSString stringWithString: @"mailto:[email protected][email protected]&subject=Greetings%20from%20Cupertino!&body=Wish%20you%20were%20here!"];
[[UIApplication sharedApplication] openURL: [NSURL URLWithString: url]];

তাই আমি কিভাবে আমার অ্যাপ থেকে একটি ইমেইল পাঠাতে পারি?


আইফোন অ্যাপ্লিকেশন থেকে একটি ইমেইল পাঠাতে আপনাকে কাজের তালিকা নীচের করতে হবে।

পদক্ষেপ 1: আমদানি করুন #import <MessageUI/MessageUI.h> ইমপোর্ট #import <MessageUI/MessageUI.h> আপনার নিয়ামক শ্রেণিতে যেখানে আপনি একটি ইমেল পাঠাতে চান।

পদক্ষেপ 2: নিচে দেখানো মত আপনার কন্ট্রোলার প্রতিনিধি যোগ করুন

 @interface <yourControllerName> : UIViewController <MFMessageComposeViewControllerDelegate, MFMailComposeViewControllerDelegate>

ধাপ 3: ইমেল পাঠানোর জন্য নীচের পদ্ধতি যোগ করুন।

 - (void) sendEmail {
 // Check if your app support the email.
 if ([MFMailComposeViewController canSendMail]) {
    // Create an object of mail composer.
    MFMailComposeViewController *mailComposer =      [[MFMailComposeViewController alloc] init];
    // Add delegate to your self.
    mailComposer.mailComposeDelegate = self;
    // Add recipients to mail if you do not want to add default recipient then remove below line.
    [mailComposer setToRecipients:@[<add here your recipient objects>]];
    // Write email subject.
    [mailComposer setSubject:@“<Your Subject Here>”];
    // Set your email body and if body contains HTML then Pass “YES” in isHTML.
    [mailComposer setMessageBody:@“<Your Message Body>” isHTML:NO];
    // Show your mail composer.
    [self presentViewController:mailComposer animated:YES completion:NULL];
 }
 else {
 // Here you can show toast to user about not support to sending email.
}
}

ধাপ 4: MFMailComposeViewController কার্যভার বাস্তবায়ন

- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(nullable NSError *)error {
[controller dismissViewControllerAnimated:TRUE completion:nil];


switch (result) {
   case MFMailComposeResultSaved: {
    // Add code on save mail to draft.
    break;
}
case MFMailComposeResultSent: {
    // Add code on sent a mail.
    break;
}
case MFMailComposeResultCancelled: {
    // Add code on cancel a mail.
    break;
}
case MFMailComposeResultFailed: {
    // Add code on failed to send a mail.
    break;
}
default:
    break;
}
}

আপনি যদি আপনার অ্যাপ্লিকেশন থেকে ইমেল পাঠাতে চান তবে আপনার কোডের মধ্যে নিজের মেল ক্লায়েন্ট (SMTP) কোড না থাকা পর্যন্ত সার্ভারটি আপনার জন্য মেল পাঠানোর জন্য উপরে দেওয়া কোড এটি করার একমাত্র উপায়।

উদাহরণস্বরূপ, আপনি আপনার অ্যাপ্লিকেশনটিকে আপনার সার্ভারে একটি URL টি জোগানোর জন্য কোড করতে পারেন যা আপনার জন্য মেল পাঠাবে। তারপর আপনি কেবল আপনার কোড থেকে ইউআরএল কল।

উল্লেখ্য যে উপরের কোডের সাথে আপনি ইমেলটিতে কিছু সংযুক্ত করতে পারবেন না, যা SMTP ক্লায়েন্ট পদ্ধতিটি আপনাকে করতে দেবে, সেইসাথে সার্ভার-পার্শ্ব পদ্ধতিতেও।


আমি KRNSendEmail নামক একটি সরল রেপার লিখেছিলাম যা একটি পদ্ধতি কলকে ইমেল পাঠানো সহজ করে।

KRNSendEmail ভাল নথিভুক্ত এবং CocoaPods যোগ করা হয়।

https://github.com/ulian-onua/KRNSendEmail


এই কোডটি আপনাকে সাহায্য করতে পারে তবে বার্তাটি UI ফ্রেমওয়ার্ক অন্তর্ভুক্ত করতে ভুলবেন না এবং প্রতিনিধি পদ্ধতিটি অন্তর্ভুক্ত করুন MFMailComposeViewControllerDelegate

-(void)EmailButtonACtion{

        if ([MFMailComposeViewController canSendMail])
        {
            MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] init];
            controller.mailComposeDelegate = self;
            [controller.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigation_bg_iPhone.png"] forBarMetrics:UIBarMetricsDefault];
            controller.navigationBar.tintColor = [UIColor colorWithRed:51.0/255.0 green:51.0/255.0 blue:51.0/255.0 alpha:1.0];
            [controller setSubject:@""];
            [controller setMessageBody:@" " isHTML:YES];
            [controller setToRecipients:[NSArray arrayWithObjects:@"",nil]];
            UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
            UIImage *ui = resultimg.image;
            pasteboard.image = ui;
            NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(ui)];
            [controller addAttachmentData:imageData mimeType:@"image/png" fileName:@" "];
            [self presentViewController:controller animated:YES completion:NULL];
        }
        else{
            UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"alrt" message:nil delegate:self cancelButtonTitle:@"ok" otherButtonTitles: nil] ;
            [alert show];
        }

    }
    -(void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
    {

        [MailAlert show];
        switch (result)
        {
            case MFMailComposeResultCancelled:
                MailAlert.message = @"Email Cancelled";
                break;
            case MFMailComposeResultSaved:
                MailAlert.message = @"Email Saved";
                break;
            case MFMailComposeResultSent:
                MailAlert.message = @"Email Sent";
                break;
            case MFMailComposeResultFailed:
                MailAlert.message = @"Email Failed";
                break;
            default:
                MailAlert.message = @"Email Not Sent";
                break;
        }
        [self dismissViewControllerAnimated:YES completion:NULL];
        [MailAlert show];
    }

একটি সুইফ্ট সংস্করণ heres:

import MessageUI

class YourVC: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        if MFMailComposeViewController.canSendMail() {
            var emailTitle = "Vea Software Feedback"
            var messageBody = "Vea Software! :) "
            var toRecipents = ["[email protected]"]
            var mc:MFMailComposeViewController = MFMailComposeViewController()
            mc.mailComposeDelegate = self
            mc.setSubject(emailTitle)
            mc.setMessageBody(messageBody, isHTML: false)
            mc.setToRecipients(toRecipents)
            self.presentViewController(mc, animated: true, completion: nil)
        } else {
            println("No email account found")
        }
    }
}

extension YourVC: MFMailComposeViewControllerDelegate {
    func mailComposeController(controller: MFMailComposeViewController!, didFinishWithResult result: MFMailComposeResult, error: NSError!) {
        switch result.value {
        case MFMailComposeResultCancelled.value:
            println("Mail Cancelled")
        case MFMailComposeResultSaved.value:
            println("Mail Saved")
        case MFMailComposeResultSent.value:
            println("Mail Sent")
        case MFMailComposeResultFailed.value:
            println("Mail Failed")
        default:
            break
        }
        self.dismissViewControllerAnimated(false, completion: nil)
    }
}

Source


সুইফ্ট 2.0

func mailComposeController(controller: MFMailComposeViewController, didFinishWithResult result: MFMailComposeResult, error: NSError?){
    if let error = error{
        print("Error: \(error)")
    }else{
        //NO Error
        //------------------------------------------------
        var feedbackMsg = ""

        switch result.rawValue {
        case MFMailComposeResultCancelled.rawValue:
            feedbackMsg = "Mail Cancelled"
        case MFMailComposeResultSaved.rawValue:
            feedbackMsg = "Mail Saved"
        case MFMailComposeResultSent.rawValue:
            feedbackMsg = "Mail Sent"
        case MFMailComposeResultFailed.rawValue:
            feedbackMsg = "Mail Failed"
        default:
            feedbackMsg = ""
        }

        print("Mail: \(feedbackMsg)")

        //------------------------------------------------
    }
}

সুইফ্ট 2.2। Esq এর উত্তর থেকে অ্যাডাপ্টেড

import Foundation
import MessageUI

class MailSender: NSObject, MFMailComposeViewControllerDelegate {

    let parentVC: UIViewController

    init(parentVC: UIViewController) {
        self.parentVC = parentVC
        super.init()
    }

    func send(title: String, messageBody: String, toRecipients: [String]) {
        if MFMailComposeViewController.canSendMail() {
            let mc: MFMailComposeViewController = MFMailComposeViewController()
            mc.mailComposeDelegate = self
            mc.setSubject(title)
            mc.setMessageBody(messageBody, isHTML: false)
            mc.setToRecipients(toRecipients)
            parentVC.presentViewController(mc, animated: true, completion: nil)
        } else {
            print("No email account found.")
        }
    }

    func mailComposeController(controller: MFMailComposeViewController,
        didFinishWithResult result: MFMailComposeResult, error: NSError?) {

            switch result.rawValue {
            case MFMailComposeResultCancelled.rawValue: print("Mail Cancelled")
            case MFMailComposeResultSaved.rawValue: print("Mail Saved")
            case MFMailComposeResultSent.rawValue: print("Mail Sent")
            case MFMailComposeResultFailed.rawValue: print("Mail Failed")
            default: break
            }

            parentVC.dismissViewControllerAnimated(false, completion: nil)
    }
}

ক্লায়েন্ট কোড:

var ms: MailSender?

@IBAction func onSendPressed(sender: AnyObject) {
    ms = MailSender(parentVC: self)
    let title = "Title"
    let messageBody = "https://.com/questions/310946/how-can-i-send-mail-from-an-iphone-application this question."
    let toRecipents = ["[email protected]"]
    ms?.send(title, messageBody: messageBody, toRecipents: toRecipents)
}




email