最近有一个需求,需要App自己后台发送邮件,于是在网上找了一圈,最后,最有参考价值的一篇文章iOS 发送邮件SKPSMTPMessage,在此感谢此文章的作者,毕竟站在巨人的肩膀做事情,会事半功倍
本篇会把本人已踩过的坑都填平,希望对小伙伴们有所帮助
最终效果
![](https://img.haomeiwen.com/i9472084/a300ad77251a0547.jpg)
坑一:思想上的坑
这个坑是思想上的错误,为什么这么说呢,请看下图
![](https://img.haomeiwen.com/i9472084/d3b902270aa15bb9.png)
哇,这个库竟然是8年前的耶,都老古董了,估计不能用了吧,还是去找找别的库,看看吧,本人就是犯了这个思想上的坑,打心底就不想使用它,但找了很久,也没有更合适的第三方库(如果有其他的库,可以在后台发送邮件,请在下方评论区留言,本人将不胜感激)
这里给小伙伴们打一强心针,*SKPSMTPMessage这个库,在2022年,即使是swift工程里面依然可以使用*
,OC工程里面肯定也是可以使用的
坑二:集成进去报错
前提:集成方式
本人这边是直接下载源码,把文件放到工程里面,没有使用pod的方式,如下
![](https://img.haomeiwen.com/i9472084/ffa25ecaa0a675d2.png)
如下图,有很多错误
1.Cast of Objective-C pointer type 'NSString *' to C pointer type 'CFStringRef' (aka 'const struct __CFString *') requires a bridged cast
2.'autorelease' is unavailable: not available in automatic reference counting mode
3.ARC forbids explicit message send of 'autorelease'
![](https://img.haomeiwen.com/i9472084/a1e22e4140ca7183.png)
大家不要慌,因为它是OC库,又是很久远的代码,应该还是手动管理内存MRC,所以我们沿着这个思路,我们只要让工程,兼容MRC模式,就可以了,
解决办法:只需要在NSStream+SKPSMTPExtensions.m
和SKPSMTPMessage.m
后面加上-fno-objc-arc
![](https://img.haomeiwen.com/i9472084/e72de8b7acb329e6.png)
坑三:按上面提到的文章iOS 发送邮件SKPSMTPMessage,里面的说法,会有问题
如下图
![](https://img.haomeiwen.com/i9472084/dba1608066cf589f.png)
应该是swift的版本更新导致的,正确的做法,在工程名-Bridgin-Header.h
文件里面导入如下代码:
#import "SKPSMTPMessage.h"
![](https://img.haomeiwen.com/i9472084/c259832dcb422ef5.png)
坑四,使用过程中的坑
如何使用,大体方法,请参考iOS 发送邮件SKPSMTPMessage这里面的做法,这里只强调一点;文章里面提到
emailServer.pass = "xxxxxxxxxxxxxxx" //密码或者授权码
最好是用授权码
,最好是用授权码
,最好是用授权码
; 密码有时候是会有问题的,不能正常的发送邮件出去
结尾
2022年还在更新iOS技术文章,实属不易,小伴们,觉得有点用的话,或者已经看到这里面来的请点赞加关注吧~~
后续分享更多iOS原生技术及物联网技术相关文章。如果有任何疑问的话,欢迎在下方留言~
网友评论