Отправить изображение и текст по электронной почте из приложения - PullRequest
2 голосов
/ 19 апреля 2011

Как я могу отправить изображение вместе с текстом в виде табличных данных по электронной почте из моего приложения?

Пожалуйста, помогите и внесите предложения.Спасибо.

Ответы [ 5 ]

8 голосов
/ 19 апреля 2011
- (void)sendMailWithImage:(UIImage *)image
{
if([MFMailComposeViewController canSendMail]) {
MFMailComposeViewController *mailController = [[MFMailComposeViewController alloc] init];
if(mailController!=nil) {
mailController.mailComposeDelegate = self;
NSData *imageData = UIImagePNGRepresentation(image);
[mailController addAttachmentData:imageData mimeType:@"image/png" fileName:@"MyImageName"];
[mailController setSubject:yourSubject];
[mailController setMessageBody:yourBody isHTML:NO];
[self presentModalViewController:mailController animated:YES];
[mailController release];
}
else
{
//Do something like show an alert
}
}

Надеюсь, это поможет

1 голос
/ 19 апреля 2011

Посмотрите на образец приложения MessageComposer.В основном вы используете addAttachmentData:mimeType:fileName:.

Это из приложения MessageComposer:

NSString *path = [[NSBundle mainBundle] pathForResource:@"rainy" ofType:@"jpg"];
NSData *myData = [NSData dataWithContentsOfFile:path];
[picker addAttachmentData:myData mimeType:@"image/jpeg" fileName:@"rainy"];
0 голосов
/ 19 апреля 2011

Вы используете класс MFMailComposerController , чтобы позволить пользователю создавать и отправлять почту.Вы можете прикреплять изображения и другие файлы, используя метод addAttachmentData:mimeType:fileName:, а текст сообщения (обычный текст или HTML) - setMessageBody:isHTML:.

Обратите внимание, что в настоящее время нет способа включить изображения вHTML, использующий multipart/related, вам придется либо использовать data: URI (не поддерживается всеми клиентами), либо изображения на внешнем сервере (также не поддерживаются всеми клиентами по соображениям конфиденциальности).Или, конечно, полностью обойти Apple и отправить почту через разговор с вашим собственным сервером.

0 голосов
/ 19 апреля 2011

Вы можете отправить изображение в виде вложения, используйте MFMailComposerController для отправки почты.

-(void)displayComposerSheet 
{
    MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
    picker.mailComposeDelegate = self;
    [picker setSubject:@"Test Subject"];
    // Attach an image to the email
    NSString *path = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@",imageName] ofType:@"png"];
    NSData *myData = [NSData dataWithContentsOfFile:path];
    [picker setMessageBody:body isHTML:NO];
    if (picker != nil)  {
        [self presentModalViewController:picker animated:YES];
        [picker release];
    }
}
0 голосов
/ 19 апреля 2011

Вы можете использовать MFMailComposeViewController от Apple для отправки почты из приложений iOS. Официальная документация: здесь . Его использование

  1. Добавьте MessageUI.framework в ваш проект
  2. Импорт необходимых заголовочных файлов

       #import <MessageUI/MessageUI.h> 
       #import <MessageUI/MFMailComposeViewController.h>
    
  3. Для отправки почты откройте MFMailComposerController

    if ([MFMailComposeViewController canSendMail]) { 
       MFMailComposeViewController *ctrller = [[MFMailComposeViewController alloc] init]; 
       ctrller.mailComposeDelegate = self; 
       [ctrller setSubject:@"Subject Goes Here."]; 
       [ctrller setMessageBody:@"Your message goes here." isHTML:NO]; 
       [self presentModalViewController:ctrller animated:YES]; 
       [ctrller release]; //if not using ARC
    } else { 
        NSLog(@Device is unable to send email in its current state.); 
    }
    
  4. Если вы хотите прикрепить данные, вы можете использовать addAttachmentData: метод

    [ctrller addAttachmentData:YOUR_DATA_IN_NSDATA_FORMAT 
               mimeType:YOUR_MIME_TYPE 
               fileName:YOUR_ATTACHEMENT_FILENAME];
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...