当前位置:首页 » 《随便一记》 » 正文

iOS 发送邮件SKPSMTPMessage_张璟冰的博客

19 人参与  2022年03月24日 12:17  分类 : 《随便一记》  评论

点击全文阅读


【前提分析】
小编在做毕业设计 ,因为没有服务端,所有的功能由客户端实现。这时候小编接到了一个需求 就是需要邮件发送验证码。
【需求分析】
1、如何使用客户端发送邮件。
2、如何发送验证码?

这时候小编拿到需求的时候,🫀一个挖槽,服务端需求客户端实现。怎么搞???好在作为一个面向搜索引擎开发的工程师来说百度了一波。找到了iOS开发可以使用SKPSMTPMessage进行邮件发送。

使用SKPSMTPMessage 步骤(由于网上很多ObjectiveC的使用,这边小编采用Swift完成)
【使用步骤】

一、cocoapod 中添加三方库

  pod 'skpsmtpmessage'

如果使用的是swift 的话需要由桥接文件。并且在桥接文件中使用SKPSMTPMessage
桥接文件我们以工程名-Bridgin-Header.h
并且在桥接文件中import 我们的三方库

#import <skpsmtpmessage/SKPSMTPMessage.h>

如图:
在这里插入图片描述
检查一下桥接文件是否被添加到项目中了。
Build Setting中搜索Objective-C Bridging Header 看看后面的路径是否为该桥接文件的路径。
在这里插入图片描述

二、编写代码

新建一个MailboxViewController的VC

把下面代码复制到自己的VC里面去就可以使用

import Foundation
import MessageUI

class MailboxViewController: UIViewController, SKPSMTPMessageDelegate{

    override func viewDidLoad() {
        super.viewDidLoad()
        initUI()
    }

    //初始化UI
    func initUI()  {
        self.view.backgroundColor = .white
       let btn = UIButton.init(frame: CGRect(x: 10, y: 10, width: 100, height: 100))
        btn.backgroundColor = .yellow
        btn.addTarget(self, action: #selector(aa), for: .touchUpInside)
        self.view.addSubview(btn)
        
    }
    
   @objc func aa()  {
        let emailServer = SKPSMTPMessage()
        emailServer.delegate = self
         
        emailServer.fromEmail = "610904360@qq.com" //发件人邮箱
        emailServer.toEmail = "610904360@qq.com" //收件人邮箱"
        emailServer.login = "610904360@qq.com" //发件人邮箱账号
        emailServer.pass = "xxxxxxxxxxxxxxx" //密码或者授权码
    
    /* Notice: 填好SMTP的服务器,第二步已经记录好了 */
        emailServer.relayHost = "smtp.qq.com"
        emailServer.requiresAuth = true
         
        emailServer.wantsSecure = true//是否用ssl
            
        emailServer.subject = "校园易宝验证码"
        let messageContent = "邮件内容"
        let messagePart = [kSKPSMTPPartContentTypeKey: "text/plain",
                           kSKPSMTPPartMessageKey: messageContent]

        emailServer.parts = [messagePart]
        emailServer.send()
    }

//MARK:SKPSMTPMessageDelegate
    func messageSent(_ message: SKPSMTPMessage!) {
        print("发送成功,请查收!")
    }
    
    //MARK:SKPSMTPMessageDelegate
    func messageFailed(_ message: SKPSMTPMessage!, error: Error!) {
        print("\(error.localizedDescription)")
    }
    
    
    
}

⚠️必须修改

fromEmail = "610904360@qq.com" //发件人邮箱
toEmail = "610904360@qq.com" //收件人邮箱"
login = "610904360@qq.com" //发件人邮箱账号
pass = "xxxxxxxxxxxxxxx" //密码或者授权码

授权码如何拿到?(以QQ邮箱为例)QQ->什么是授权码,它又是如何设置?
请添加图片描述
开启SMTP服务,并且生成授权码。这时候的授权吗就是给pass的值了
在这里插入图片描述

三、问题

【坑点】
在测试的时候 我的标题为中文,但是中文发送的时候,接收方会产生乱码。乱码内容为:???????

emailServer.subject = "校园易宝验证码"

【解决方法】
找到SKPSMTPMessage.m这个类,在SKPSMTPMessage.m的sendParts里:

NSData *messageData = [message dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]

我们将上边这一句改为

NSData *messageData = [message dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES]

显示的标题就正常了。
在这里插入图片描述


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/36615.html

邮箱  发件人  桥接  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 全文爱似流萤遇繁星结局+番外宝藏文(沐星澜陆司沉)列表_全文爱似流萤遇繁星结局+番外宝藏文
  • 空山灵雨的穿书年代,炮灰原配携崽随军去啦安婳肖政+全书在线
  • 半堂花夜渡空城结局+番外(裴砚泽沈诺柠靳骁)_(半堂花夜渡空城结局+番外)半堂花夜渡空城结局+番外列表_笔趣阁(裴砚泽沈诺柠靳骁)
  • 偏心妈妈失算了节选试读_明白老公弘江小说节选试读
  • (番外)+(全书)半堂花夜渡空城全书+后续***_(沈诺柠裴砚泽)半堂花夜渡空城全书+后续列表_笔趣阁(沈诺柠裴砚泽)
  • 林溪傅迟宴(捧一片星空全书+后续+结局)结局_(林溪傅迟宴捧一片星空全书+后续+结局全书结局)结局列表_笔趣阁(林溪傅迟宴)
  • 捧一片星空+后续+结局(林溪傅迟宴)列表_捧一片星空+后续+结局(林溪傅迟宴)捧一片星空+后续+结局在线
  • [被CBA开除后,我成了NBA新贵]小说无删减版在线免费阅读_[顾白梅根·福克斯]全文免费无弹窗阅读_笔趣阁
  • 陆司沉沐星澜结局+番外榜单_陆司沉沐星澜结局+番外榜单
  • 完结文爱似流萤遇繁星结局+番外高口碑列表_完结文爱似流萤遇繁星结局+番外高口碑(沐星澜陆司沉)
  • [重生70后兼祧两房的父亲悔疯了]小说精彩节选推荐_妹妹熊孩子姜霞小说节选免费试读
  • 你是我未拆的遗书(桑年裴谨言)_你是我未拆的遗书桑年裴谨言

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1