아이 폰 개발 중 이메일 을 보 내 는 3 가지 방법
NSString *url = [NSString stringWithString: @"mailto:[email protected][email protected]&subject=Greetings%20from%20Cupertino!&body=Wish%20you%20were%20here!"];
[[UIApplication sharedApplication] openURL: [NSURL URLWithString: url]];
단점 은 분명 하 다.이런 과정 은 프로그램 을 일시 적 으로 종료 시 킬 수 있다.iOS 4.x 가 다 중 태 스 크 를 지원 하 더 라 도 이런 과정 은 불편 하 다.
2.MFmail Compose View Controller 를 사용 하여 메 일 을 보 내 는 기능 을 수행 합 니 다.Message UI.framework 에서 프로젝트 에 이 프레임 워 크 를 추가 하고 사용 하 는 파일 에서 MFmail Compose View Controller.h 헤더 파일 을 가 져 와 야 합 니 다.
#import <MessageUI/MFMailComposeViewController.h>;
MFMailComposeViewController* controller = [[MFMailComposeViewController alloc] init];
controller.mailComposeDelegate = self;
[controller setSubject:@"My Subject"];
[controller setMessageBody:@"Hello there." isHTML:NO];
[self presentModalViewController:controller animated:YES];
[controller release];
이 방법 을 사용 하여 Email 을 보 내 는 것 이 가장 일반적인 방법 입 니 다.이 방법 은 해당 하 는 MFmail Compose View Controller Delegate 이벤트 가 있 습 니 다.
- (void)mailComposeController:(MFMailComposeViewController*)controller
didFinishWithResult:(MFMailComposeResult)result
error:(NSError*)error;
{
if (result == MFMailComposeResultSent) {
NSLog(@"It's away!");
}
[self dismissModalViewControllerAnimated:YES];
}
일부 관련 데이터 구조의 정 의 는 헤더 파일 에 구체 적 인 설명 이 있 습 니 다.
enum MFMailComposeResult {
MFMailComposeResultCancelled,//
MFMailComposeResultSaved,//
MFMailComposeResultSent,// ,
MFMailComposeResultFailed//
};
typedef enum MFMailComposeResult MFMailComposeResult; // iOS3.0
헤더 파일 에서 MFmail Compose View Controller 의 일부 방법 은 다음 과 같 습 니 다.
+ (BOOL)canSendMail __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);
// , NO, MFMailComposeViewController mailto:// , , skpsmtpmessage Email 。
- (void)addAttachmentData:(NSData *)attachment mimeType:(NSString *)mimeType fileName:(NSString *)filename;
//NSData attachment , mimeType , http://www.iana.org/assignments/media-types/ , 。 mimeType , =]
두 번 째 방법의 약점 도 뚜렷 하 다.iOS 시스템 이 우리 에 게 메 일 에 있 는 UI 를 제공 해 주 었 지만 우 리 는 주문 을 맞 출 수 없 었 다.이 는 맞 춤 형 앱 을 뒷걸음질 치 게 만 들 었 다.이렇게 사용 하면 너무 갑 작 스 러 울 수 밖 에 없 기 때문이다.
3.저 희 는 자신의 UI 디자인 수요 에 따라 해당 하 는 보 기 를 맞 춰 전체적인 디자인 에 적응 할 수 있 습 니 다.비교적 유명한 오픈 소스 SMTP 프로 토 콜 을 사용 하여 실현 할 수 있다.
SKPSMTPMessage 류 에 서 는 보기 에 대해 어떠한 요구 도 하지 않 았 습 니 다.이 는 데이터 등급 의 처 리 를 제공 합 니 다.해당 하 는 발송 요 구 를 정의 하면 메 일 발송 을 실현 할 수 있 습 니 다.이러한 정 보 를 어떤 방식 으로 얻 는 지 에 대해 서 는 소프트웨어 의 수요 에 따라 상호작용 방식 과 보기 스타일 을 확정 할 수 있다.
SKPSMTPMessage *testMsg = [[SKPSMTPMessage alloc] init];
testMsg.fromEmail = @"[email protected]";
testMsg.toEmail =@"[email protected]";
testMsg.relayHost = @"smtp.gmail.com";
testMsg.requiresAuth = YES;
testMsg.login = @"[email protected]";
testMsg.pass = @"test";
testMsg.subject = [NSString stringWithCString:" " encoding:NSUTF8StringEncoding];
testMsg.bccEmail = @"[email protected]";
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,
[NSString stringWithCString:" " encoding:NSUTF8StringEncoding],kSKPSMTPPartMessageKey,@"8bit",kSKPSMTPPartContentTransferEncodingKey,nil];
NSString *vcfPath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"vcf"];
NSData *vcfData = [NSData dataWithContentsOfFile:vcfPath];
NSDictionary *vcfPart = [NSDictionary dictionaryWithObjectsAndKeys:@"text/directory;\r
\tx-unix-mode=0644;\r
\tname=\"test.vcf\"",kSKPSMTPPartContentTypeKey,
@"attachment;\r
\tfilename=\"test.vcf\"",kSKPSMTPPartContentDispositionKey,[vcfData encodeBase64ForData],kSKPSMTPPartMessageKey,@"base64",kSKPSMTPPartContentTransferEncodingKey,nil];
testMsg.parts = [NSArray arrayWithObjects:plainPart,vcfPart,nil];
[testMsg send];
이 종 류 는 발송 상 태 를 더 잘 알 수 있 도록 해당 하 는 Delegate 방법 을 제공 합 니 다.
-(void)messageSent:(SKPSMTPMessage *)message;
-(void)messageFailed:(SKPSMTPMessage *)message error:(NSError *)error;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.