美文网首页
利用SMTPLibrary后台发送邮件

利用SMTPLibrary后台发送邮件

作者: im小码哥 | 来源:发表于2018-08-06 11:45 被阅读29次

话不多少,直接代码,先添加头文件和代理 SKPSMTPMessageDelegate

#import "SKPSMTPMessage.h"
#import "NSData+Base64Additions.h"
/**
  email  接收方邮箱
  shareImage 附件图片
  title 标题
  content 内容
*/
-(void)sendEmailMsg:(NSString *)email shareImage:(UIImage *)shareImage title:(NSString *)title content:(NSString *)content{

NSMutableDictionary *defaultsDictionary = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"fromEmail@fromEmail.com.cn", @"fromEmail",
                                           email, @"toEmail",
                                           @"smtp.exmail.qq.com", @"relayHost",
                                           @"fromEmail@fromEmail.com.cn", @"login",
                                           @"fromEmailPwd", @"pass",
                                           [NSNumber numberWithBool:YES], @"requiresAuth",
                                           [NSNumber numberWithBool:YES], @"wantsSecure", nil];

SKPSMTPMessage *testMsg = [[SKPSMTPMessage alloc] init];
testMsg.fromEmail = [defaultsDictionary objectForKey:@"fromEmail"];
testMsg.toEmail = [defaultsDictionary objectForKey:@"toEmail"];;
testMsg.relayHost = [defaultsDictionary objectForKey:@"relayHost"];
testMsg.requiresAuth = [[defaultsDictionary objectForKey:@"requiresAuth"] boolValue];
if (testMsg.requiresAuth) {
    testMsg.login = [defaultsDictionary objectForKey:@"login"];
    testMsg.pass = [defaultsDictionary objectForKey:@"pass"];  
}
testMsg.wantsSecure = [[defaultsDictionary objectForKey:@"wantsSecure"] boolValue]; // smtp.gmail.com doesn't work without TLS!
NSString *txt = content;
testMsg.subject = title;
testMsg.delegate = self;
NSDictionary *plainPart = [NSDictionary dictionaryWithObjectsAndKeys:@"text/plain; charset=UTF-8",kSKPSMTPPartContentTypeKey,txt,kSKPSMTPPartMessageKey,@"8bit",kSKPSMTPPartContentTransferEncodingKey,nil];
if (!shareImage) {
    testMsg.parts = [NSArray arrayWithObjects:plainPart,nil];
}else{
    NSData *vcfData = UIImageJPEGRepresentation(shareImage, 0.5);
    NSString *str1 = [NSString stringWithFormat:@"text/directory;\r\n\tx-unix-mode=0644;\r\n\tname=\"report.png\""];
    NSString *str2 = [NSString stringWithFormat:@"attachment;\r\n\tfilename=\"report.png\""];
    NSDictionary *vcfPart = [NSDictionary dictionaryWithObjectsAndKeys:str1,kSKPSMTPPartContentTypeKey,
                             str2,kSKPSMTPPartContentDispositionKey,[vcfData encodeBase64ForData],kSKPSMTPPartMessageKey,@"base64",kSKPSMTPPartContentTransferEncodingKey,nil];
    testMsg.parts = [NSArray arrayWithObjects:plainPart,vcfPart,nil];}
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    [testMsg send];
});}

回调如下:

  - (void)messageSent:(SKPSMTPMessage *)message{
 NSLog(@"邮件已发送,请注意查收");
  }

- (void)messageFailed:(SKPSMTPMessage *)message error:(NSError *)error{
NSLog(@"发送失败,请重试");
}

注意事项
SMTPLibrary是运用的MRC,所以在ARC需要在targets下 选择BuildPhases下找到SKPSMTPMessage 和 NSStream+SKPSMTPExtensions 文件添加 -fno-objc-arc 即可。

相关文章

  • 利用SMTPLibrary后台发送邮件

    话不多少,直接代码,先添加头文件和代理 SKPSMTPMessageDelegate 回调如下: 注意事项SMTP...

  • 用SMTPLibrary后台发送邮件的封装及注意事项

    **最近公司做了一个项目,部分用户在国外,用手机注册接收验证码不是很方便,于是注册就分两种,国内用手机号,国外用邮...

  • 利用python发送邮件

    在搜索python教程的时候,碰巧遇到了“利用python发送电子邮件”的教程,觉得很实用也比较有意思,所以就花了...

  • 利用SMTP发送邮件

    javax.mail下载 使用SMTP发送时需要在得到你服务邮箱的授权码 我使用的是QQ邮箱,在设置中可以设置SM...

  • 利用Python 发送邮件

    概要 我们都知道SMTP(简单邮件传输协议),是一组用于从原地址到目的地址传输邮件的规范,通过它来控制邮件的中转方...

  • iOS开发-邮件三方SKPSMTPMessage使用简介

    SKPSMTPMessage 完全不依赖于iOS系统内置的发送邮件程序,可内置于你的应用实现后台发送邮件目的。 下...

  • springMVC+maven+mybatis+mysql入门

    (七)利用ajax发送Post请求到后台 上一节,我们大致讲了利用ajax发送Get请求到后台服务,这一节,我们来...

  • Excel学习笔记13(未完)

    邮件合并 1.简单的邮件合并 -批量生成多个文档 word-邮件合并-信函-使用现有列表 -利用word发送邮件 ...

  • 第二章(nk)

    【个人随手记】 2.1发送邮件 开发社区的登录模块 那么如何利用thymleaf模板引擎发送一个html邮件。 开...

  • iOS中使用skpsmtpmessage发送邮件标题乱码

    今天在利用skpsmtpmessage发送邮件的时候出现邮件标题乱码的情况 发出的邮件标题变成“???” 只要将 ...

网友评论

      本文标题:利用SMTPLibrary后台发送邮件

      本文链接:https://www.haomeiwen.com/subject/lmmwvftx.html