2014-10-18 428 views
-1

我想使用NSSharingService來撰寫郵件。我可以添加收件人,正文,主題和附件,但似乎無法添加發件人並自動發送電子郵件。 有沒有辦法添加發件人並使用NSSharingService自動發送電子郵件? 如果有,你能告訴我如何? 如果沒有,你能否提出另一種方法。我試過ScriptingBridge。我得到它的工作,但當我使用調度程序自動運行我的應用程序時,它有-[SBProxyByClass setSender:]: object has not been added to a container yet; selector not recognized崩潰。這就是爲什麼我正在嘗試使用NSSharingService的新方法。 謝謝。自動發送NSSharingService:電子郵件

回答

0

蘋果非常嚴格地允許您在未經用戶許可的情況下執行操作。由於您希望能夠自動執行此操作,而不是使用NSSharingService或ScriptingBridge,所以我建議您在應用程序內部使用SMTP庫。

它看起來像一個流行的Objective-C庫是libmailcore,雖然我以前沒有用過它,所以我不能告訴你很多關於它。他們發送消息的例子看起來很簡單:

MCOSMTPSession *smtpSession = [[MCOSMTPSession alloc] init]; 
smtpSession.hostname = @"smtp.gmail.com"; 
smtpSession.port = 465; 
smtpSession.username = @"[email protected]"; 
smtpSession.password = @"password"; 
smtpSession.authType = MCOAuthTypeSASLPlain; 
smtpSession.connectionType = MCOConnectionTypeTLS; 

MCOMessageBuilder *builder = [[MCOMessageBuilder alloc] init]; 
MCOAddress *from = [MCOAddress addressWithDisplayName:@"Matt R" 
               mailbox:@"[email protected]"]; 
MCOAddress *to = [MCOAddress addressWithDisplayName:nil 
              mailbox:@"[email protected]"]; 
[[builder header] setFrom:from]; 
[[builder header] setTo:@[to]]; 
[[builder header] setSubject:@"My message"]; 
[builder setHTMLBody:@"This is a test message!"]; 
NSData * rfc822Data = [builder data]; 

MCOSMTPSendOperation *sendOperation = 
    [smtpSession sendOperationWithData:rfc822Data]; 
[sendOperation start:^(NSError *error) { 
    if(error) { 
     NSLog(@"Error sending email: %@", error); 
    } else { 
     NSLog(@"Successfully sent email!"); 
    } 
}]; 
+0

嗨,謝謝你。我嘗試過這個。我能夠導入庫,但每當我嘗試它,我總是得到:穩定的連接到服務器無法建立。「我似乎不明白爲什麼。: – cessmestreet 2014-10-18 09:06:32

+0

嗨。我能夠解決它改變認證類型,謝謝你。 – cessmestreet 2014-10-18 09:18:47