2015-05-22 5 views
1

Мне нужно отправить электронное письмо без предоставления MFMailComposeViewController В нескольких словах мне нужно отправить электронное письмо непосредственно без нажатия кнопки отправки и отображения представления.Отправка электронной почты без представления

Мой код:

MFMailComposeViewController *mail = [[MFMailComposeViewController >alloc] init]; 
mail.mailComposeDelegate = self; 
[mail setSubject:@"Recordatorio de clave"]; 
[mail setMessageBody:message isHTML:NO]; 
[mail setToRecipients:@[email]]; 
[self presentModalViewController:mail animated:YES]; 
+0

Нужно ли использовать правильный адрес электронной почты пользователя? – Droppy

ответ

1

Это не возможно с MFMailComposeViewController

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

+0

Я всегда задавался вопросом, есть ли где-то очень простое бесплатное обслуживание, которое просто ** отправляет электронное письмо **. Итак, если я перейду на сайт free.com/[email protected]+someMessage ... он будет очень просто отправить электронное письмо от [email protected], to, [email protected] с телом «someMessage» ». Конечно, что exiets ?? – Fattie

0

No, его невозможно отправить по почте. В iOS вы не можете так поступать, вам нужно написать веб-интерфейс для этого.

0

Невозможно, чтобы у пользователя было разрешение на отправку почты с устройства. Вы можете написать письмо только. Если вам нужно архивировать такую ​​функциональность, просто создайте ее на Backend и вызовите ее с устройства, вызвав webservice.

4

Мой ответ ДА ​​, Вы можете отправить по электронной почте от фона без представления MFMailComposeVC Есть два способа сделать это

1- Либо написать WebService, который будет отправлять по электронной почте от фона, когда она будет называться.
2- Вы можете отправить электронное письмо с помощью учетной записи SMTP gmail. Для этого вам нужно будет использовать библиотеку SKPSMTPMessage. Вот хороший tutorial для этого.

+0

Уверен, но вы ** не можете получить электронное письмо пользователя устройства **. – Fattie

1

Вы не можете напрямую использовать MFMailComposeViewController, для чего вам нужна внешняя библиотека или программа, необходимая нам для отправки почты с использованием SMTP здесь. Я упоминаю gmail через отправку почты без взаимодействия пользователей.

Код для .h файла

#import <UIKit/UIKit.h> 
#import "SKPSMTPMessage.h" 
@interface mailTransferViewController : UIViewController<SKPSMTPMessageDelegate>{ 
    IBOutlet UITextField *emailField; 
} 
- (IBAction)sendMessageInBack:(id)anObject; 
@end 

Код для .m файл

- (IBAction)sendMessageInBack:(id)anObject{ 

    NSLog(@"Start Sending"); 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"sample.pdf"]; 
    NSData *dataObj = [NSData dataWithContentsOfFile:writableDBPath]; 
    SKPSMTPMessage *testMsg = [[SKPSMTPMessage alloc] init]; 
    testMsg.fromEmail = @"Yours mail ids"; 
    testMsg.toEmail = emailField.text;//sender mail id 
    testMsg.relayHost = @"smtp.gmail.com"; 
    testMsg.requiresAuth = YES; 
    testMsg.login = @"Your mail ids"; 
    testMsg.pass = @"Mail id password"; 
    testMsg.subject = @"Test application "; 
    testMsg.wantsSecure = YES; // smtp.gmail.com doesn't work without TLS! 
    // Only do this for self-signed certs! 
    // testMsg.validateSSLChain = NO; 
    testMsg.delegate = self; 
    NSDictionary *plainPart = [NSDictionary dictionaryWithObjectsAndKeys:@"text/plain",kSKPSMTPPartContentTypeKey,@"Some text to include in body",kSKPSMTPPartMessageKey,@"8bit",kSKPSMTPPartContentTransferEncodingKey,nil]; 
    //Logic for attach file. 
// NSDictionary *vcfPart = [NSDictionary dictionaryWithObjectsAndKeys:@"text/directory;\r\n\tx-unix-mode=0644;\r\n\tname=\"sample.pdf\"",kSKPSMTPPartContentTypeKey,@"attachment;\r\n\tfilename=\"sample.pdf\"",kSKPSMTPPartContentDispositionKey,[dataObj encodeBase64ForData],kSKPSMTPPartMessageKey,@"base64",kSKPSMTPPartContentTransferEncodingKey,nil]; 
// NSLog(@"%@",vcfPart); 
// testMsg.parts = [NSArray arrayWithObjects:plainPart,vcfPart,nil]; 
// testMsg.parts = [NSArray arrayWithObjects:plainPart,vcfPart,nil]; 

    testMsg.parts = [NSArray arrayWithObjects:plainPart,nil]; 
    [testMsg send]; 
} 
+0

Также вы можете обратиться к учебнику и образцу кода здесь. Http: //goo.gl/akUXaY –

+1

Есть серьезные оговорки с этим методом, которые вам нужно объяснить. Вы должны использовать жесткий код с адресом, а не фактический адрес электронной почты пользователя. Кроме того, что от адреса требуется связать с SMTP-сервером, к которому вы подключаетесь, и некоторые SMTP-серверы не принимают подключения из какой-либо старой сети. – Droppy

0

Отправка сообщения электронной почты программными средствами, без вмешательства пользователя, из приложения iPhone, не может быть реализована с использованием любой из рамок Apple, , Это может быть возможно на джейлбрейк-телефоне, но тогда он никогда не увидит внутри App Store.

Если вы хотите контролировать отправку электронной почты, лучшим способом было бы создать веб-службу (на конце вашего сервера), которую вы можете отправить, используя HTTP-запрос. Если вы размещаете только один адрес, это может работать очень хорошо, хотя вы можете захотеть заставить пользователя ввести свой адрес электронной почты.

В противном случае доступен только стандартный диалог (это зависит от использования любой учетной записи, установленной на устройстве).

Смежные вопросы