苹果原生方式调用发送邮件会调用系统邮箱,经用户同意后才允许发送,也是本着用户至上的原则,但弹框体验较差,用户多数懒得操作,才决定绕过用户直接发送给信息反馈给自己公司
使用的是第三方SKPSMTPMessage,简单好用。。
里面有mrc时代的开发产物,需要手动设置,如图允许mrc
导入代码
桥接引入头文件
#import "SKPSMTPMessage.h"
#import “NSData+Base64Additions.h”
遵守协议
SKPSMTPMessageDelegate
代码实现内容:
特别注意:以qq邮箱为例,在填写邮箱密码的位置填写的不再是原有密码,而是在你开启邮箱的smtp时给你提供的授权码,也算是在对密码的一种保护 ,如下图
let emailMessage = SKPSMTPMessage()
emailMessage.delegate = self
emailMessage.fromEmail = "发送邮箱"
emailMessage.toEmail = "接受邮箱"
emailMessage.login = "邮箱帐号"
emailMessage.pass = "邮箱密码" //以qq为例,填写授权码
emailMessage.relayHost = "smtp.qq.com" //网易:smtp.163.com
emailMessage.requiresAuth = true
emailMessage.wantsSecure = true
emailMessage.subject = "这是邮件主题"
let messageContent = "哈哈 我是ddd,这是邮件内容"
let messagePart = [kSKPSMTPPartContentTypeKey: "text/plain", kSKPSMTPPartMessageKey: messageContent, kSKPSMTPPartContentTransferEncodingKey: "8bit"]
emailMessage.parts = [messagePart]
emailMessage.send()
//遵循协议
extension ViewController:SKPSMTPMessageDelegate{
func messageSent(_ message: SKPSMTPMessage!) {
print("____发送成功____\(message)_____")
}
func messageFailed(_ message: SKPSMTPMessage!, error: Error!) {
print("____发送失败____\(message)___报错的信息____\(error)____")
}
}
command b编译,可能会出现如下报错
添加#import <Foundation/Foundation.h>即可解决
到此发送邮件成功