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

آموزش ارسال ایمیل در iPhone - برنامه نویسی ios


در اینجا ، آموزش دیگری از سری آموزش های دوره تکمیلی برنامه نویسی iOS ، را به شما ارائه می کنیم. در جلسه قبل ، نحوه مخفی کردن tab bar ، در navigation interface ، را آموزش دادیم. در این جلسه ، قصد داریم ، به شما نشان دهیم که چگونه می توانیم به سادگی به کاربر ، اجازه دهیم که از طریق اپ ، ایمیل ، ارسال نماید.

iOS SDK ، به راستی ، ارسال ایمیل را با استفاده از API های داخلی ، ساده نموده است. با چند خط کد ، می توانیم رابط ایمیل را به عنوان stock Mail app ، راه اندازی کنیم. این رابط ، به ما اجازه می دهد که ایمیل را درست کنیم (compose). در این آموزش ، ما یک اپ ساده خواهیم ساخت ، که نحوه ارسال ایمیل از نوع متن ساده (plain text) و HTML ، را با استفاده از iOS SDK نشان می دهد.

ایجاد یک اپ ساده View ، با یک کلید

ابتدا ، یک اپ ساده با یک view controller و یک کلید می سازیم. اگر هیچ ایده ای برای انجام این کار ندارید ، بهتر است که آموزش Hello World را ، دوباره بررسی کنید. بیایید نام پروژه را SimpleEmail قرار دهیم. پس از این که پروژه را با موفقیت ایجاد کردیم ، یک کلید “Contact Us”  در view اضافه می کنیم.

آن چه که برنامه انجام می دهد این است که ، هنگامی که کاربر روی کلید “Contact Us”  ضربه می زند ، اپ ،  email interface را نشان خواهد داد.

ایجاد ارتباط کلید Contact Us با Action

در آموزش های قبلی ، ما متد action را به صورت دستی در فایل header از فایل view controller ، اضافه کرده ایم و سپس ، کلید و متد action در Interface Builder را بهم لینک داده ایم.

در این پروژه ، روش دیگری را برای افزودن متد action به شما نشان خواهیم داد (مطمئن شوید که Xcode شما ، نسخه 4.3 یا بالاتر باشد).

در Project Navigator ، فایل “SimpleEmailViewController.xib” را جهت رفتن به Interface Builder انتخاب می کنیم. به Assistant Editor سوئیچ کرده و ناحیه Utility را پنهان می کنیم:

هنگامی که تغییرات را اعمال کردیم ، محیط Xcode ، باید شبیه تصویر زیر باشد. رابط و کد مربوطه آن ، هم اکنون در کنار هم نشان داده شده است:

اکنون ، یک متد action ، برای کلید “Contact Us” ، اضافه خواهیم کرد. کلید کنترل را فشار داده و نگه می داریم ، بر روی کلید “Contact Us” ، کلیک کرده و آن را به داخل فایل “SimpleEmailViewController.h” ، درگ می کنیم.  به محض این که اشاره گر را بین کلمات کلیدی “@interface” و “@end”  قرار دهیم ، می توانیم یک نشانه (prompt)  ببینیم  که به ما اجازه می دهد outlet و action را الحاق کنیم.

کلید ماوس را رها می کنیم. در این حالت  Xcode ، از ما می خواهد که outlet/action را اضافه کنیم. از آن جا که ما قصد داریم ، متد action را اضافه کنیم ، “Action” را برای “Connection” ، انتخاب کرده و نام متد را “showEmail” ، قرار می دهیم. عنوان event را می توانیم “Touch Up Inside”  قرار دهیم. متد “showEmail” ، زمانی که کاربر انگشت خود را از روی کلید بردارد ، فراخوانی می شود.

هنگامی که تغییرات را با کلیک کردن بر روی کلید “Connect” ، اعمال می کنیم ، Xcode ، به طور خودکار ، اعلام متد را در فایل SimpleEmailViewController.h ، اضافه می کند.

پیاده سازی Email Interface

در ادامه ، فایل “MessageUI.h” ، را import کرده و نماینده “MFMailComposeViewControllerDelegate” ، را در فایل SimpleEmailViewController.h ، پیاده سازی می کنیم.

#import <UIKit/UIKit.h>
#import <MessageUI/MessageUI.h> 
 
@interface SimpleEmailViewController : UIViewController <MFMailComposeViewControllerDelegate> // Add the delegate
- (IBAction)showEmail:(id)sender;
 
@end

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

- (IBAction)showEmail:(id)sender {
    // Email Subject
    NSString *emailTitle = @"Test Email";
    // Email Content
    NSString *messageBody = @"iOS programming is so fun!";
    // To address
    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];
 
    // 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];
}

خط 3- 7 در کد بالا ، subject ایمیل ، محتوای پیام و گیرندگان را تعریف می کند. خط 9- 13 ، MFMailComposeViewController داخلی را می سازد. کلاس MFMailComposeViewController ، یک رابط استاندارد فراهم می کند ، که عملیات های edit (ویرایش) و send (ارسال) ایمیل را مدیریت می نماید. از این کنترلر ، می توانیم برای نمایش دادن email view استاندارد در داخل اپ ، استفاده کنیم. فیلدهای view را با مقادیر اولیه ، شامل ایمیل گیرنده ، subject و بدنه متن ، پر می کنیم.

خط 13 از کد ، کنترلر presentViewController  را برای نشان دادن رابط در صفحه ، فراخوانی می کند.

“didFinishWithResult:” متدی از پروتکل MFMailComposeViewControllerDelegate  می باشد. این متد ، به طور خودکار ، در زمانی که mail interface بسته می شود (مثلاً وقتی که کاربر ، عملیات را متوقف می کند) فراخوانی می شود. پارامتر result ، وقتی که رابط composition از بین می رود ، کد result را به ما می گوید. برای حفظ سادگی مطالب آموزشی ، ما به سادگی ، status را ثبت وقایع (log) می کنیم. در اپلکیشن واقعی ، باید handling خاصی را برای کد result فراهم کنیم (برای مثال ، نشان دادن یک پیام هشدار ، وقتی که اپ  نتواند ایمیل را ارسال کند).

در نهایت ، خط 41 ، رابط composition ایمیل را از بین می برد.

 

افزودن MessageUI Framework

اگر سعی کنیم که اپ را کامپایل کرده و اجرا نماییم ، خواهیم دید ، که هنوز کار نمی کند و با خطای کامپایل زیر مواجه می شویم:

مشکل این است که Xcode ، هیچ درکی در مورد  چیزی که “MFMailComposeViewController”  ، است ، ندارد. اگر چه “MFMailComposeViewController” ، یک کنترلر داخلی در iOS SDK است ، این وظیفه توسعه دهنده است که چارچوب لازم را در پروژه ، جاسازی نماید. هنگامی که پروژه Xcode ، در ابتدا ساخته می شود ، با سه چارچوب هسته ای ، همراه است که شامل UIKit ، Foundation و CoreGraphics. کلاس “MFMailComposeViewController”  ، در چارچوب MessageUI ، قرار دارد که باید به صورت دستی اضافه کنیم.

برای رفع خطا ، باید چارچوب را در پروژه جاسازی کنیم. در Project Navigator ، پروژه “SimpleEmail” را انتخاب کرده و سپس در بخش “Targets” ، مقدار “SimpleEmail” را انتخاب کنیم. در بالای editor پروژه ، “BuildPhases” را کلیک می کنیم. سپس ، بخش Link Binary With Libraries ، را باز می کنیم.

در ادامه ، کلید “+” را کلیک کرده و “MessageUI.framework” را انتخاب می کنیم. پس از این که کلید “Add” را کلیک کردیم ، Xcode ، در پروژه ، شامل چارچوب MessageUI ، خواهد شد.

اکنون ، خطا باید رفع شده باشد. اپ را اجرا کرده و نحوه عملکرد آن را مشاهده می کنیم. ضربه زدن روی کلید “Contact Us” ، رابط “Compose Email” را با محتوای از پیش پر شده ، به ما نشان خواهد داد.

 

درست کردن ایمیل HTML

اپ SimpleEmail ، در حال حاضر ، فقط ایمیل ساده متنی را پشتیبانی می کند. به سادگی  می توانیم ، امکان پشتیبانی از ایمیل HTML  را نیز به آن اضافه نماییم. برای این کار ، می توانیم پارامتر  “isHTML” را در متد “setMessageBody” ، از مقدار “N” به مقدار “Y”  تغییر دهیم. سعی می کنیم کد را در متد “showEmail” ، مطابق کد زیر تغییر دهیم:

- (IBAction)showEmail:(id)sender {
    // Email Subject
    NSString *emailTitle = @"Test Email";
    // Email Content
    NSString *messageBody = @"<h1>Learning iOS Programming!</h1>"; // Change the message body to HTML
    // To address
    NSArray *toRecipents = [NSArray arrayWithObject:@"support@appcoda.com"];
    
    MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init];
    mc.mailComposeDelegate = self;
    [mc setSubject:emailTitle];
    [mc setMessageBody:messageBody isHTML:YES];
    [mc setToRecipients:toRecipents];
 
    // Present mail view controller on screen
    [self presentViewController:mc animated:YES completion:NULL];
 
}

اپ را دوباره کامپایل کرده و اجرا می کنیم. فقط با اعمال تغییرات ساده ، اکنون اپ SimpleEmail ، از ایمیل HTML نیز پشتیبانی می کند.

فصلِ: 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 کارشناسان آنلاین می باشند
این گفت و گو توسط پشتیبان به اتمام رسید