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

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

13 人参与  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://zhangshiyu.com/post/36615.html

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

  • 评论(0)
  • 赞助本站

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

最新文章

  • 我让位给女友的透视眼竹马,他却说如果能重生再也不来了。虐心反转_玉石林若女友推荐_小说后续在线阅读_无删减免费完结_
  • 相国独子的丫鬟砸坏我的玉佩后,我当场拒婚阅读_玉佩陈郡谢氏全新_小说后续在线阅读_无删减免费完结_
  • 手术时,我看着病人惨死最新试读_淼淼陆知衍姜颜全本完结_小说后续在线阅读_无删减免费完结_
  • 男友霸道给我开黑卡,转头却骂我是捞女最新章节_肖年顾客黑卡热文_小说后续在线阅读_无删减免费完结_
  • 他在回忆尽头全集_贺南舟许清梨叶絮完结txt_小说后续在线阅读_无删减免费完结_
  • 旅游结婚那天未婚夫另娶女秘书,我让他们一无所有连载_老公迎宾超长版_小说后续在线阅读_无删减免费完结_
  • 完结文异界修仙我的直播间能打赏核弹列表_完结文异界修仙我的直播间能打赏核弹(江流年沈红菱)
  • 全书浏览陪弟弟混骑行圈,离婚你哭什么?(韩星河柳千雪)_陪弟弟混骑行圈,离婚你哭什么?(韩星河柳千雪)全书结局
  • 老公出轨我助攻虐心反转_秦绍卿卿阿溪后续加长_小说后续在线阅读_无删减免费完结_
  • 替老婆坐牢出狱那天,我被送去斗兽场精校文本_许言沈宇郑子番茄热门_小说后续在线阅读_无删减免费完结_
  • 沐巍澜温溪:结局+番外(爱如一刹花火)电子书畅享阅读无广告
  • 傅凌川林柚续集(傅凌川林柚)章节前文+全书阅读(替嫁燃婚:小祖宗嘴硬腰软)最新连载

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

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