应用程序可以发送电子邮件而不让用户知道电子邮件地址吗?

时间:2015-04-23 11:37:33

标签: ios iphone email

我希望通过我的iOS应用程序的电子邮件收到用户的一些评论,但我不希望我的电子邮件地址向用户公开。是否有可能实施这种机制?

5 个答案:

答案 0 :(得分:3)

使用默认的apple框架

是不可能的

您可以执行以下操作之一

  1. 为您的iOS应用添加第三方框架(库),为您的应用添加电子邮件发送功能
    - 即便如此,您仍然无法访问系统电子邮件帐户(位于您的沙箱之外)
    ==>可能不是你想要的

  2. 或者您对服务器执行直接HTTP / FTP(无论协议)调用,并在其中运行一个脚本,为您的应用程序发送自身

答案 1 :(得分:2)

  

Q值。应用程序可以在不让用户知道电子邮件地址的情况下发送电子邮件吗?

     

一个。不,如果不知道发件人的电子邮件ID,就无法在iOS系统中发送电子邮件。

但是如果你想开发想要收到反馈的系统,我建议你使用Parse SDK,你只需通过休息服务将用户的回复发送到解析服务器,并希望制作简单的网络或Android应用程序直接在您的设备上检索这些反馈,而不会泄露您的电子邮件ID

答案 2 :(得分:0)

只有创建自己的服务器端邮件功能才有可能。你必须发送所有参数的请求,你可以设置,如电子邮件,邮件正文,主题等,服务器将发送邮件从你身边..

这样您就可以在没有MFMailComposeViewController的情况下发送邮件。

如果没有这个,无法使用任何Apple框架实现从iOS应用程序以编程方式发送电子邮件而无需用户干预。有可能在越狱手机中,但它永远不会看到App Store的内部。

答案 3 :(得分:0)

是的,您可以使用SMTP通过发送邮件。

对于这个库,我们可以通过知道用户发送电子邮件。为此,请参考此skpsmtpmessage库。

一旦将库代码插入到项目中,然后按照下面的setps进行更详细的代码。

在.h文件中使用以下代码

    #import <UIKit/UIKit.h>
    #import "SKPSMTPMessage.h"
    @interface mailTransferViewController : UIViewController &lt;SKPSMTPMessageDelegate&gt;{
        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 :(得分:-1)

1:添加MessageUI框架:

点击该项目 选择&#34;构建阶段&#34; 展开&#34;链接二进制文件库和#34; 点击&#34; +&#34;并输入&#34;消息&#34;找到&#34; MessageUI&#34;框架,然后添加。

2:在当前视图控制器中添加导入并实现协议:

         #import <MessageUI/MessageUI.h> 
    #import <MessageUI/MFMailComposeViewController.h> 
    @interface MyViewController : UIViewController<MFMailComposeViewControllerDelegate>








 -(void)sendEmail {
            // From within your active view controller
            if([MFMailComposeViewController canSendMail]) {
                MFMailComposeViewController *mailCont = [[MFMailComposeViewController alloc] init];
                mailCont.mailComposeDelegate = self;        // Required to invoke mailComposeController when send

                [mailCont setSubject:@"Email subject"];
                [mailCont setToRecipients:[NSArray arrayWithObject:@"myFriends@email.com"]];
                [mailCont setMessageBody:@"Email message" isHTML:NO];

                [self presentViewController:mailCont animated:YES completion:nil];
            }
        }

        - (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error {
            [controller dismissViewControllerAnimated:YES completion:nil];
    }