مشاوره رایگان
دریافت لینک های دانلود دریافت پستی درب منزل مبلغ کل: تومان
جهت دریافت کد تخفیف به کانال تلگرام مراجعه و یا با پشتیبان آنلاین هماهنگ نمایید

آموزش ارسال ایمیل با قابلیت Attachment در iOS


نحوه ایجاد Email با قابلیت Attachment

در این جلسه می خواهیم نحوه ضمیمه کردن فایل هایی مانند تصاویر ، اسناد PDF یا پاورپوینت را در یک ایمیل آموزش دهیم. کلاس  MessageUI framework واقعاً امکان ارسال ایمیل در اپ ها را ساده نموده است. اگر اسناد رسمی فریم ورک MessageUI را مطالعه نمایید ، با کلاس MFMailComposeViewController  آشنا می شوید که یک متد به نام “addAttachmentData:” را فراخوانی می نماید ، تا بتوان هر نوع فایلی را به عنوان ضمیمه (attachment) به ایمیل ها اضافه نمود.

نگاهی به اپ Demo

از آن جایی که تمرکز اصلی این آموزش بر روی نشان دادن کاربرد قابلیت attachment می باشد ، اپ demo را بسیار ساده نگه خواهیم داشت. این اپ به سادگی ، لیستی از فایل ها را در یک table view ساده نمایش می دهد. ما table view را با انواع مختلفی از فایل ها پر خواهیم کرد ، از جمله فرمت PNG و JPEG ، Microsoft Word document ، PowerPoint ، سند PDF و فایل HTML. هنگامی که کاربر بر روی هر کدام از این فایل ها ضربه بزند ، اپ به طور خودکار یک ایمیل را با فایل انتخاب شده به عنوان ضمیمه خواهد ساخت.

شروع کار با تمپلت پروژه Xcode

برای رهایی از ایجاد پروژه Xcode از ابتدا ، می توانید تمپلت پروژه را از اینجا download this project template  دانلود نموده و کار توسعه را با آن شروع نمایید. تمپلت پروژه با موارد ذیل همراه است:

  • Storyboard از پیش ساخته شده با یک table view controller برای نمایش دادن لیستی از فایل ها.
  • یک کلاس AttachmentTableViewController .
  • یک مجموعه از فایل هایی که برای attachment موردنیاز هستند.
  • یک مجموعه از آیکون های رایگان از Pixeden.

پس از دانلود و extract نمودن فایل زیپ شده ، اپ را کامپایل و پروژه را اجرا می نماییم. اپ demo باید لیستی از فایل ها را در main view نمایش دهد. اکنون ، برای پیاده سازی عملکرد email کار را ادامه می دهیم.

ایجاد Email با استفاده از فریم ورک MessageUI

ابتدا ، عبارت import را اضافه کرده و در فایل “AttachmentTableViewController.m” نماینده “MFMailComposeViewControllerDelegate” را پیاده سازی می کنیم:

#import <MessageUI/MessageUI.h>
 
@interface AttachmentTableViewController () <MFMailComposeViewControllerDelegate>

در ادامه ، کد زیر را در همان فایل اضافه می نماییم:

- (void)showEmail:(NSString*)file {
 
    NSString *emailTitle = @"Great Photo and Doc";
    NSString *messageBody = @"Hey, check this out!";
    NSArray *toRecipents = [NSArray arrayWithObject:@"support@appcoda.com"];
    
    MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init];
    mc.mailComposeDelegate = self;
    [mc setSubject:emailTitle];
    [mc setMessageBody:messageBody isHTML:NO];
    [mc setToRecipients:toRecipents];
    
    // Determine the file name and extension
    NSArray *filepart = [file componentsSeparatedByString:@"."];
    NSString *filename = [filepart objectAtIndex:0];
    NSString *extension = [filepart objectAtIndex:1];
    
    // Get the resource path and read the file using NSData
    NSString *filePath = [[NSBundle mainBundle] pathForResource:filename ofType:extension];
    NSData *fileData = [NSData dataWithContentsOfFile:filePath];
    
    // Determine the MIME type
    NSString *mimeType;
    if ([extension isEqualToString:@"jpg"]) {
        mimeType = @"image/jpeg";
    } else if ([extension isEqualToString:@"png"]) {
        mimeType = @"image/png";
    } else if ([extension isEqualToString:@"doc"]) {
        mimeType = @"application/msword";
    } else if ([extension isEqualToString:@"ppt"]) {
        mimeType = @"application/vnd.ms-powerpoint";
    } else if ([extension isEqualToString:@"html"]) {
        mimeType = @"text/html";
    } else if ([extension isEqualToString:@"pdf"]) {
        mimeType = @"application/pdf";
    }
    
    // Add attachment
    [mc addAttachmentData:fileData mimeType:mimeType fileName:filename];
    
    // Present mail view controller on screen
    [self presentViewController:mc animated:YES completion:NULL];
    
}
 
- (void) mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
    switch (result)
    {
        case MFMailComposeResultCancelled:
            NSLog(@"Mail cancelled");
            break;
        case MFMailComposeResultSaved:
            NSLog(@"Mail saved");
            break;
        case MFMailComposeResultSent:
            NSLog(@"Mail sent");
            break;
        case MFMailComposeResultFailed:
            NSLog(@"Mail sent failure: %@", [error localizedDescription]);
            break;
        default:
            break;
    }
    
    // Close the Mail Interface
    [self dismissViewControllerAnimated:YES completion:NULL];
}

وارد جزئیات متد “didFinishWithResult:” نمی شویم. این متد از پروتکل MFMailComposeViewControllerDelegate می باشد و باید پیاده سازی شود. برای اطلاع از عملکرد این متد ، می توانید به جلسه نحوه ارسال ایمیل در اپ iOS با استفاده از فریم ورک MessageUI از دوره تکمیلی آموزش برنامه نویسی iOS مراجعه نمایید.

بسیار خوب! بیایید وارد متد “showEmail” شویم. خطوط 3- 5 از کد فوق ، یک موضوع ایمیل (subject) ، محتوای پیام (message content) و گیرنده ها (recipients) را تعریف می نماید. خط 7 یک MFMailComposeViewController داخلی را ایجاد می کند که رابط کاربری استاندارد برای مدیریت ویرایش و ارسال نمودن یک پیام ایمیل را ایجاد می نماید. ما فیلدهای view را با مقادیر اولیه ، شامل گیرنده ایمیل ، subject و متن بدنه پر می کنیم.

برای افزودن یک فایل ضمیمه ، تمام کاری که باید انجام دهیم ، فراخوانی متد “addAttachmentData” از پروتکل MFMailComposeViewController می باشد.

[mc addAttachmentData:fileData mimeType:mimeType fileName:filename];

این متد سه پارامتر را می گیرد:

  • اطلاعاتی که باید ضمیمه شوند – این اطلاعات محتواهایی از یک فایل می باشند که می خواهیم ارسال کنیم.
  • نوع MIME – MIME اختصار Multipurpose Internet Mail Extensions می باشد. به طور خلاصه ، MIME یک استاندارد اینترنتی می باشد و روشی را برای ارسال انواع اطلاعات در ایمیل (مانند اطلاعات گرافیکی) تعریف می کند. اینجا ، MIME type  ، نوع داده برای attach شدن را مشخص می کند. برای نمونه ، MIME type  یک تصویر PNG به صورت image/png است. می توانید برای دسترسی به لیست کاملی از انواع MIME به آدرس  http://www.iana.org/assignments/media-types/ مراجعه نمایید.
  • نام فایل – این نام مربوط به فایل آماده شده برای ضمیمه می باشد.

خطوط 13-36 از کد فوق ، برای تعیین محتوای این پارامترها مورد استفاده قرار می گیرند. ابتدا مسیر فایل را تعیین کرده و یک شیء NSData برای آن فایل ایجاد می کنیم ، سپس ، نوع MIME را مشخص می کنیم. در نهایت ، متد addAttachmentData را برای ضمیمه کردن فایل ، فراخوانی می کنیم.

تقریباً تمام کارها را انجام داده ایم . آخرین کار ، تغییر متد “didSelectRowAtIndexPath” با کد زیر می باشد:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *selectedFile = [_files objectAtIndex:indexPath.row];
    [self showEmail:selectedFile];
}

کامپایل و اجرا نمودن اپ

بسیار خوب پیش آمده ایم. اکنون زمان کامپایل و اجرا نمودن اپ می باشد. یکی از فایل ها را انتخاب می کنیم. اپ ، یک ایمیل را که حاوی فایل انتخاب شده در بخش attachment می باشد ، خواهد ساخت.

فصلِ: 3 , تعداد قسمت ها: 179 , سطح: صفر تا صد

این فصل در یک نگاه:

در این دوره آموزشی ، برنامه نویسی اندروید و ios را با استفاده از زامارین خواهیم آموخت. همچنین به صورت کاملا پروژه محور ، اپلیکیشن فروشگاهی مشابه دیجی کالا را پیاده سازی خواهیم کرد. در انته…
فصلِ: 5 , تعداد قسمت ها: 221 , سطح: صفر تا صد
موضوعات: آموزش IOS

این فصل در یک نگاه:

در این فصل:-نمایش notification به کاربر زمانی که اتفاقاتی از قبیل لایک کردن پست و ... میافتد(این مبحث مبحثی مهم بوده و ج…

  توضیحات کلی دوره: با سلام خوش اومدین به حرفه ای ترین دوره ی Swift ابتدای کار ممکن است سوالی برای شما پیش آید: -من نیازی به ساخت اپلیکیشن اجتماعی ندارم چرا باید این دوره را ببینم؟ ج…
فصلِ: 7 , تعداد قسمت ها: 159 , سطح: صفر تا صد
موضوعات: آموزش IOS

این فصل در یک نگاه:

اپل نویس حرفه ای شوید... با این پکیج کسب درآمد میلیونی کنید....   در این پکیج به نکات ریز و درشت زیادی پرداختیم که خیلی خیلی میتونه به شما کمک کنه که تبدیل به برنامه نویس حرفه ای شوید... …
فصلِ: 12 , تعداد قسمت ها: 126 , سطح: صفر تا صد
موضوعات: آموزش IOS

این فصل در یک نگاه:

فصل 16 فصل آخرمون هست و میایم توی این فصل یه سری مباحث کوچیکی که جامونده و کارهای نهایی برای انتشار برنامه توی مایکت های…

با سلام نکته:هیچ نیازی به mac و یا iphone نیست... نکته:هیچ نیازی به بلد بودن برنامه نویسی از قبل نیست... مباحثی که توی این دوره مرور میکنیم میتونه ما رو از سطح صفر برنامه نویسی ios به صد …
فصلِ: 6 , تعداد قسمت ها: 194 , سطح: صفر تا صد

این فصل در یک نگاه:

در این فصل آپدیت های مربوط به دوره را قرار میدهیم…

با سلام و خسته نباشد خدمت کلیک سایتی های عزیز در ادامه با توضیحات مختصری درمورد دوره ی react native با ما همراه باشید: React Native چیست؟ قطعا یکی از آرزوهای برنامه نویسان این میباشد که ب…
فصلِ: 5 , تعداد قسمت ها: 51 , سطح: صفر تا صد

این فصل در یک نگاه:

اموزش پرداخت درون برنامه ای بازار در یونیتی-اموزش خرید سکه در بازی-اموزش خرید مصرفی و غیر مصرفی…

توضیحات کلی مجموعه: آموزش مقدماتی تا پیشرفته یونیتی(ساخت بازی توپ چرخنده-اموزش بازی دوبعدی-اموزش بازی سه بعدی اول شخص شوتر-اموزش بازی سه بعدی رالی (ماشین سواری))   سرفصلهای دوره: نصب ی…
فصلِ: 2 , تعداد قسمت ها: 68 , سطح: صفر تا صد

این فصل در یک نگاه:

آموزش ساخت یک فروشگاه کوچک-آموزش کار با bottom navigation -آموزش کار با تب بار-آموزش کار با scrollview - آموزش کار با ان…

توضیحات کلی مجموعه: آموزش دوره فلاتر از پایه تا پیشرفته(این دوره به دوره متخصص فلاتر تغییر پیدا کرد) درسال های گذشته تعدا زیادی فریمورک معرفی شد که هرکدام تجربه خاص خودش رو داشت،اما فلاتر …
فصلِ: 5 , تعداد قسمت ها: 25 , سطح: صفر تا صد

این فصل در یک نگاه:

فصل پنجم…

توضیحات کلی مجموعه: درباره گیت: لذت پیش بردن پروژه های برنامه نویسی خود را با بهترین ورژن کنترل سیستم جهان تجربه کنید کامل ترین دوره ی آموزشی گیت و گیت هاب به همراه مثال های کاربردی گی…

تولید شده توسط کلیک سایت

پشتیبانی آنلاین
آماده پاسخگویی هستیم
انتخاب تصویر جهت ارسال:
در حال ضبط صدا

(جهت توقف و یا لغو ضبط از دکمه های زیر استفاده کنید)

توقف و ارسال :
لغو ضبط
در حال حاضر تمامی کارشناسان آفلاین هستند. همواره می توانید با شماره تلگرام / واتساپ 09010005000 به صورت آنلاین با ما در ارتباط باشید. جهت ورود به واتساپ کلیک کنید
0 پیام جدید
پشتیبان در حال تایپ ...
ارسال تصویر ضبط صدا
0 کارشناسان آنلاین می باشند
این گفت و گو توسط پشتیبان به اتمام رسید