ios系統框架提供的兩種傳送email的方法:openurl 和 mfmailcomposeviewcontroller。借助這兩個方法,我們可以輕鬆的在應用裡加入如使用者反饋這類需要傳送郵件的功能。
使用openurl呼叫系統郵箱客戶端是我們在ios3.0以下實現發郵件功能的主要手段。我們可以通過設定url裡的相關引數來指定郵件的內容,不過其缺點很明顯,這樣的過程會導致程式暫時退出。下面是使用openurl來發郵件的乙個小例子:
#pragma mark - 使用系統郵件客戶端傳送郵件缺點很明顯,這樣的過程會導致程式暫時退出,即使在ios 4.x支援多工的情況下,這樣的過程還是會讓人覺得不是很方便。
mfmailcomposeviewcontroller是在ios3.0新增的乙個介面,它在messageui.framework中。通過呼叫mfmailcomposeviewcontroller,可以把郵件傳送視窗整合到我們的應用裡,傳送郵件就不需要退出程式了。mfmailcomposeviewcontroller的使用方法:
//// viewcontroller.h
// maildemo
//
// created by luoyl on 12-4-4.
//
#import #import @inte***ce viewcontroller : uiviewcontroller@end
#pragma mark - 在應用內傳送郵件
//啟用郵件功能
if (![mailclass cansendmail])
[self displaymailpicker];
}
//調出郵件傳送視窗
- (void)displaymailpicker
#pragma mark - 實現 mfmailcomposeviewcontrollerdelegate
- (void)mailcomposecontroller:(mfmailcomposeviewcontroller *)controller didfinishwithresult:(mfmailcomposeresult)result error:(nserror *)error
[self alertwithmessage:msg];
}
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\n\tx-unix-mode=0644;\r\n\tname=\"test.vcf\"",kskpsmtppartcontenttypekey,
@"attachment;\r\n\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;
iOS傳送Email的兩種方法
ios系統框架提供的兩種傳送email的方法 openurl 和 mfmailcomposeviewcontroller。借助這兩個方法,我們可以輕鬆的在應用裡加入如使用者反饋這類需要傳送郵件的功能。使用openurl呼叫系統郵箱客戶端是我們在ios3.0以下實現發郵件功能的主要手段。我們可以通過設...
C 傳送Email方法總結
c 傳送email方法總結 通過.net framework 2.0下提供的 system.net.mail 可以輕鬆的實現,本文列舉了3種途徑來傳送 1.通過localhost 2.通過普通smtp 3.通過ssl的smtp 下面乙個乙個來說 1.通過localhost public void s...
c 傳送Email方法整理
emailinfotb private int ms paranums email的主題的引數個數 private string ms subject email的主題 private string ms from email的傳送者,這裡填寫公司管理者郵箱 private string ms to...