iOS開發(fā)-內(nèi)部郵件發(fā)送功能實(shí)現(xiàn)

近期迭代版本要增加app內(nèi)發(fā)送郵件的功能,由于以前沒(méi)做過(guò),所以直接去百度找了資源,果然好多文檔,大體分為兩種,第一種就是使用內(nèi)置的MFMailComposeViewController發(fā)送郵件,第二種就是通過(guò)第三方類庫(kù)SKPSMTPMessage發(fā)送郵件,類庫(kù)下載地址為:https://github.com/jetseven/skpsmtpmessage

下面我就只介紹第二種了,自我感覺(jué)第一種是沒(méi)多少需求的。
SKPSMTPMessage發(fā)送:

這個(gè)第三方類庫(kù)出現(xiàn)的比較早,引用的也比較多,把常用的郵件發(fā)送都封裝到了起來(lái),直接調(diào)用,是一個(gè)很簡(jiǎn)單的事情,下載之后會(huì)看到一個(gè)Demo和一個(gè)SMTPLibrary,直接將SMTPLibray拷貝到項(xiàng)目中,引用即可:


注意:

我是手動(dòng)高進(jìn)工程里,應(yīng)為這東西是mrc的開發(fā)的,于是乎就要設(shè)置了,在Build Phases下添加-fno-objc-arc

①需要發(fā)送的控制器上導(dǎo)入SKPSMTPMessageNSData+Base64Additions頭文件
#import "SKPSMTPMessage.h"
#import "NSData+Base64Additions.h"
②實(shí)現(xiàn)SKPSMTPMessageDelegate協(xié)議;
③具體發(fā)送方法:

SKPSMTPMessage *myMessage = [[SKPSMTPMessage alloc] init];
    myMessage.fromEmail=@"keso@163.com";
    
    myMessage.toEmail=@"FlyElephant@qq.com";
    myMessage.bccEmail=@"Goodman@qq.com";
    myMessage.relayHost=@"smtp.163.com";
    
    myMessage.requiresAuth=YES;
    if (myMessage.requiresAuth) {
        myMessage.login=@"keso@163.com";
        
        myMessage.pass=@"keso";
        
    }
    
    myMessage.wantsSecure =YES; //為gmail郵箱設(shè)置 smtp.gmail.com
    
    myMessage.subject = @"博客園-FlyElephant";

    myMessage.delegate = self;
    //設(shè)置郵件內(nèi)容
    NSDictionary *plainPart = [NSDictionary dictionaryWithObjectsAndKeys:@"text/plain; charset=UTF-8",kSKPSMTPPartContentTypeKey,
                               @"做一個(gè)簡(jiǎn)簡(jiǎn)單單,快快樂(lè)樂(lè)的程序員~keso",kSKPSMTPPartMessageKey,@"8bit",kSKPSMTPPartContentTransferEncodingKey,nil];
    
    
    myMessage.parts = [NSArray arrayWithObjects:plainPart,nil];
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        [myMessage send];
    });

④設(shè)置發(fā)送之后的處理:

- (void)messageSent:(SKPSMTPMessage *)message
{
  NSLog(@"恭喜,郵件發(fā)送成功");
}

- (void)messageFailed:(SKPSMTPMessage *)message error:(NSError *)error
{
    NSLog(@"不好意思,郵件發(fā)送失敗");
    
}

使用時(shí)候要注意兩點(diǎn):
使用前需要需要注意一下5點(diǎn):

1. 郵件主題為中文時(shí),KPSMTPMessage.m文件中的sendParts方法中,需要修改 NSDatamessageData = [message dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES] 為NSData messageData = [message dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES], 否則會(huì)出現(xiàn)中文亂碼問(wèn)題。
2. 發(fā)送方的郵箱需要開啟 SMTP 服務(wù),不然郵件無(wú)法從發(fā)送方郵箱發(fā)出。
3. 如果發(fā)送的時(shí)候報(bào)出503的code時(shí),要檢查您發(fā)送郵件的賬號(hào)密碼是否正確,這時(shí)的登陸密碼不是設(shè)置的密碼,要開啟SMTP服務(wù)器自己設(shè)置的一個(gè)授權(quán)碼的
4. 如果爆出連接三次的都連不上郵箱服務(wù)器的話那就是網(wǎng)絡(luò)有問(wèn)題的
5. gmail的郵箱是不用填授權(quán)碼的,直接填登陸密碼就好了

只要是郵箱賬號(hào)密碼正確,且開啟SMTP服務(wù),都是可以實(shí)現(xiàn)發(fā)送郵件功能的,有問(wèn)題的可以留言的,謝謝

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • *面試心聲:其實(shí)這些題本人都沒(méi)怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來(lái)就是把...
    Dove_iOS閱讀 27,581評(píng)論 30 472
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,050評(píng)論 4 61
  • 京城拾月閱讀 206評(píng)論 0 1
  • 昨晚托馬斯11點(diǎn)哭了一個(gè)小時(shí)凌晨三點(diǎn)又哭了一個(gè)小時(shí),現(xiàn)在眼睛都是腫的。我更難受,昨天凌晨他哭的時(shí)候,還不停讓我用紙...
    i家i生活閱讀 489評(píng)論 0 0
  • 重新溫顧了下李笑來(lái)的得到訂閱產(chǎn)品,再一次看了那一篇關(guān)于落后的文章,很遺憾,我還是沒(méi)有完全領(lǐng)會(huì)作者的意思,因此把他放...
    黃添隆閱讀 289評(píng)論 0 0

友情鏈接更多精彩內(nèi)容