我需要发送电子邮件而不显示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 :(得分:4)
我的回答是是,您可以在不显示MFMailComposeVC的情况下从后台发送电子邮件
有两种方法可以做到这一点
1-编写一个Web服务,将在调用时从后台发送电子邮件
2-您可以使用SMTP gmail帐户发送电子邮件。为此,您必须使用SKPSMTPMessage
库。这是一个很好的tutorial。
答案 1 :(得分:2)
如果您不想使用MFMailComposeViewController,可以使用SMTP进行此操作。请查看此链接Sending e-mail in background from iOS apps using SMTP gmail account
答案 2 :(得分:1)
MFMailComposeViewController
您可以创建Web服务并将数据传递给它,您的服务器也可以发送邮件。
答案 3 :(得分: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];
}
答案 4 :(得分:0)
否,无法发送邮件。在iOS中,您不能执行此类操作,您必须编写基于Web的API来执行此操作。
答案 5 :(得分:0)
用户只能拥有从设备发送邮件的许可证。您只能撰写电子邮件。如果您必须存档此类功能,只需在后端上创建它,并通过调用webservice从设备触发它。
答案 6 :(得分:0)
无需用户干预,从iphone应用程序以编程方式发送电子邮件,无法使用任何Apple框架实现。有可能在越狱手机中,但它永远不会看到App Store的内部。
如果您想控制电子邮件发送,那么更好的方法是设置一个Web服务(在您的服务器端),您可以使用HTTP请求发布。如果您只发布到一个地址,这可以很好地工作,尽管您可能希望让用户输入他们的回邮地址。
否则只有标准对话框可用(这依赖于使用他们在设备上设置的任何帐户)。