一、郵件分享
1、iOS系統自帶郵件設置郵箱(此處以QQ郵箱為例)
a.打開電腦,登錄郵箱(以QQ郵箱為例),進入設置-賬戶-找到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務”將“IMAP/SMTP服務”打開后并生成授權碼。
b、生成授權碼由16位隨機字母組成
c、設置手機端。打開設置-郵件-添加賬戶
d、此處以QQ郵箱為例,其他郵箱也可。
e、按要求填寫后點擊下一步。
f、按圖中所示進行設置后,最后點擊“發件服務器”SMTP設置
g、繼續點擊。“主要服務器”設置
h、按圖中設置,最后完成。
i、選擇“郵件”app,即可使用。
注意:由于QQ郵箱激活時間不滿14天,暫時無法設置POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務
會造成只能發送郵件,但是郵件接收不到的情況。
2、實現功能
- (void)displayMailComposerSheet
{
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
// 設置picker的委托方法,完成之后會自動調用成功或失敗的方法
picker.mailComposeDelegate = self;
// 添加主題
[picker setSubject:@"文件分享"];
// 添加收件人
//NSArray *toRecipients = [NSArray arrayWithObject:@"收件人@qq.com"];
// 說明:也可以添加多個收件人,代碼如下所示:
//NSArray *toRecipients = [NSArray arrayWithObjects:@"one@qq.com",@"two@qq.com",nil];
// 添加抄送
//NSArray *ccRecipients = [NSArray arrayWithObjects:@"second@qq.com",@"third@qq.com", nil];
// 添加密送
//NSArray *bccRecipients = [NSArray arrayWithObject:@"fourth@qq.com"];
[picker setToRecipients:toRecipients];
//[picker setCcRecipients:ccRecipients];
//[picker setBccRecipients:bccRecipients];
// 直接在HTML代碼中寫入圖片的地址
NSString *emailBody = [NSString stringWithFormat:@"
我分享了圖片
"];
[picker setMessageBody:emailBody isHTML:YES];
[self presentModalViewController:picker animated:YES];
[picker release];
}
這樣實現的效果是,在郵件中會顯示一個圖片和一段文本,關鍵是第25行代碼,一定要設置isHTML為YES。但實際應用中,圖片一般我們沒有上傳到服務器上,而是在客戶端,這時候我們可以用下面的方式來發送圖片(將第23行代碼替換成下面的代碼):
// 發送圖片附件(其他格式的附件,可以都先轉化稱NSData類型,然后設置相應的mimeType即可,如txt類型為@"text/txt",doc類型為@"text/doc",pdf類型為@"file/pdf"等等)
NSData *myData = [NSData dataWithContentsOfFile:[[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:@"new.png"]];
[picker addAttachmentData:myData mimeType:@"image/jpeg" fileName:@"new.png"];
NSString *emailBody = [NSString stringWithFormat:@"
我分享了圖片
"];
使用上面這種方式,將isHTML設置為YES的話,圖片會顯示在正文中;isHTML設置為NO的話,圖片會顯示在附件中。
》添加郵箱附件方法:
//發送圖片附件
NSString *path = [[NSBundle mainBundle] pathForResource:@"rainy" ofType:@"jpg"];
NSData *myData = [NSData dataWithContentsOfFile:path];
[picker addAttachmentData:myData mimeType:@"image/jpeg" fileName:@"rainy.jpg"];
//發送txt文本附件
NSString *path = [[NSBundle mainBundle] pathForResource:@"MyText" ofType:@"txt"];
NSData *myData = [NSData dataWithContentsOfFile:path];
[picker addAttachmentData:myData mimeType:@"text/txt" fileName:@"MyText.txt"];
//發送doc文本附件
NSString *path = [[NSBundle mainBundle] pathForResource:@"MyText" ofType:@"doc"];
NSData *myData = [NSData dataWithContentsOfFile:path];
[picker addAttachmentData:myData mimeType:@"text/doc" fileName:@"MyText.doc"];
//發送pdf文檔附件
NSString *path = [[NSBundlemainBundle]pathForResource:@"CodeSigningGuide"ofType:@"pdf"];
NSData *myData = [NSDatadataWithContentsOfFile:path];
[pickeraddAttachmentData:myDatamimeType:@"file/pdf"fileName:@"rainy.pdf"];
郵件發送完成之后,可以在如下的委托方法中進行相應的處理,委托方法如下所示:
- (void)mailComposeController:(MFMailComposeViewController*)controller
didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{
switch (result)
{
case MFMailComposeResultCancelled:
NSLog(@"Result: Mail sending canceled");// 郵件發送取消
break;
case MFMailComposeResultSaved:
NSLog(@"Result: Mail saved");// 郵件保存成功
break;
case MFMailComposeResultSent:
NSLog(@"Result: Mail sent");// 郵件發送成功
break;
case MFMailComposeResultFailed:
NSLog(@"Result: Mail sending failed");// 郵件發送失敗
break;
default:
NSLog(@"Result: Mail not sent");
break;
}
[self dismissModalViewControllerAnimated:YES];
}
導入MessageUI.framework
.h文件中#import
#import
實現 MFMailComposeViewControllerDelegate, MFMessageComposeViewControllerDelegate
二、發送短信
//短信
-(void)showSMSPicker{
Class messageClass = (NSClassFromString(@"MFMessageComposeViewController"));
if (messageClass != nil) {
// Check whether the current device is configured for sending SMS messages
if ([messageClass canSendText]) {
[selfdisplaySMSComposerSheet];
}
else {
UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@""message:@"設備不支持短信功能" delegate:selfcancelButtonTitle:@"確定" otherButtonTitles:nil];
[alert show];
[alert release];
}
}
else {
}
}
-(void)displaySMSComposerSheet
{
MFMessageComposeViewController *picker = [[MFMessageComposeViewControlleralloc]init];
picker.messageComposeDelegate =self;
NSString *smsBody =[NSStringstringWithFormat:@"我分享了文件給您,地址是%@",address] ;
picker.body=smsBody;
[selfpresentModalViewController:pickeranimated:YES];
[pickerrelease];
}