ios 后台发送邮件之SKPSMTPMessage的使用

skpsmtpmessage 是ios第三方后台发送邮件库 https://github.com/jetseven/skpsmtpmessage.git

1、由于skpsmtpmessage是非ARC文件,所以要在 SKPSMTPMessage和 NSData+Base64Additions中添加

Your Target -> Get Info -> Build -> All Configurations -> Other Link Flags: -fno-objc-arc 标识

2、导入cfnetwork.frame框架

  导入头文件#import "SKPSMTPMessage.h"  #import "NSData+Base64Additions.h"

  SKPSMTPMessageDelegate协议,并实现两个协议方法

3、开始发送邮件

 

// 发送邮件
- (IBAction)sendEmail {
    
    SKPSMTPMessage *testSend = [[SKPSMTPMessage alloc]init];
    testSend.fromEmail = @"发送邮箱账号";
    testSend.toEmail = @"接收邮箱账号";
    testSend.relayHost = @"smtp.ym.163.com";
    testSend.requiresAuth = YES;
    testSend.login = @"发送邮箱账号";
    testSend.pass = @"发送邮箱密码";
    testSend.subject = [NSString stringWithCString:"测试" encoding:NSUTF8StringEncoding];
    // testSend.ccEmail = @"抄送人邮箱"; // 可不填
    testSend.wantsSecure = YES;
    testSend.delegate = self;
    
    NSDictionary *plainPart = [NSDictionary dictionaryWithObjectsAndKeys:@"text/plain; charset=UTF-8;\nThis is a test Email",kSKPSMTPPartContentTypeKey,
                               @"This is a test message.",kSKPSMTPPartMessageKey,@"8bit",kSKPSMTPPartContentTransferEncodingKey,nil];
   
    testSend.parts = [NSArray arrayWithObjects:plainPart, nil];
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        [testSend send];
    });
    
}

 // 回调方法

- (void)messageSent:(SKPSMTPMessage *)message
{
    NSLog(@"messageSuccessed-----%@", message);
}

- (void)messageFailed:(SKPSMTPMessage *)message error:(NSError *)error
{
    NSLog(@"messageFailed-----message - %@\nerror - %@", message, error);
}

 

 4、Tip:关于relayHost参数:smtp.ym.163.com(网易企业邮箱)smtp.163.com(网易邮箱)。具体其他邮箱服务器地址查看帮助中心。

 

转载于:https://www.cnblogs.com/shen5214444887/p/6477940.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iOS Objective-C 中,使用 MulticastSocket 可以实现组播接收和发送数据。 1. 创建 MulticastSocket 对象并加入组播地址: ```objective-c #import <netinet/in.h> #import <arpa/inet.h> NSString *multicastAddress = @"224.0.0.1"; int multicastPort = 8888; struct sockaddr_in addr; memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_addr.s_addr = inet_addr([multicastAddress UTF8String]); addr.sin_port = htons(multicastPort); int fd = socket(AF_INET, SOCK_DGRAM, 0); if (fd > 0) { bind(fd, (struct sockaddr *)&addr, sizeof(addr)); struct ip_mreq mreq; mreq.imr_multiaddr.s_addr = inet_addr([multicastAddress UTF8String]); mreq.imr_interface.s_addr = htonl(INADDR_ANY); setsockopt(fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq)); } ``` 2. 接收数据: ```objective-c char buf[1024]; socklen_t addrlen = sizeof(addr); int len = recvfrom(fd, buf, sizeof(buf), 0, (struct sockaddr *)&addr, &addrlen); if (len > 0) { NSString *msg = [[NSString alloc] initWithBytes:buf length:len encoding:NSUTF8StringEncoding]; NSLog(@"Received Data: %@", msg); } ``` 3. 发送数据: ```objective-c NSString *msg = @"Hello, World!"; const char *data = [msg UTF8String]; sendto(fd, data, strlen(data), 0, (struct sockaddr *)&addr, sizeof(addr)); ``` 需要注意的是,在接收数据时需要先调用 `bind` 绑定端口,然后再加入组播地址。另外,在发送数据时也需要指定组播地址和端口。 同时,也需要在项目的 Info.plist 文件中添加一个权限请求: ```xml <key>NSMulticastNetworkingUsageDescription</key> <string>使用组播接收和发送数据</string> ``` 这样就可以在 iOS Objective-C 中使用 MulticastSocket 实现组播接收和发送数据了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值