iOS 发送邮件SKPSMTPMessage
【前提分析】
小编在做毕业设计 ,因为没有服务端,所有的功能由客户端实现。这时候小编接到了一个需求 就是需要邮件发送验证码。
【需求分析】
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]
显示的标题就正常了。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhibchje
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22 -
excel打印预览压线压字怎么办
PHP中文网 06-22