我正在使用简单的 SMTP 客户端代码,首先发布在谷歌代码上:
http://code.google.com/p/skpsmtpmessage/
那个 repo 似乎没有维护,因为项目所有者现在在苹果公司工作,也许还有更好的事情要做。有一个代码的分支,最近在 github 上维护,您可以在以下位置找到:
http://github.com/kailoa/iphone-smtp/tree/master
我无法让附件在 iPhone 设备上工作,奇怪的是它们在模拟器中工作。我的 github 评论可以在这里找到:
http://github.com/kailoa/iphone-smtp/commit/50cbd49f351c2f0bb3a5ad6aea7736ac82d40af2#comment_27560
有了所有这些作为上下文......我的问题是:有没有人能够成功地将文件(最好是音频文件,但现在任何文件都可以)附加到电子邮件中,通过 iPhone 上的 SMTP 客户端发送?我真的希望能够将文件附加到我使用直接 SMTP 客户端发送的电子邮件中,但到目前为止,我还没有找到任何可以正确运行和工作的代码,而且我还无法成功编写自己的代码来完成说壮举。
iPhone上的文件编码与模拟器中的编码不同有什么原因吗?因为当我查看在两种上下文中创建的原始 base64 字符串时,它们是不同的。我只是不知道为什么会这样。
我的代码的相关部分是这样的:
NSString* emailBody = @"This is a test email body";
NSDictionary *plainPart = [NSDictionary dictionaryWithObjectsAndKeys:@"text/plain",kSKPSMTPPartContentTypeKey, emailBody,kSKPSMTPPartMessageKey,@"8bit",kSKPSMTPPartContentTransferEncodingKey,nil];
NSString *imgPath = [[NSBundle mainBundle] pathForResource:@"screenshot" ofType:@"png"];
NSData *imgData = [NSData dataWithContentsOfFile:imgPath];
NSDictionary *imgPart = [NSDictionary dictionaryWithObjectsAndKeys:@"image/png;\r\n\tx-unix-mode=0644;\r\n\tname=\"screenshot.png\"", kSKPSMTPPartContentTypeKey, @"attachment;\r\n\tfilename=\"screenshot.png\"", kSKPSMTPPartContentDispositionKey, [imgData encodeBase64ForData],kSKPSMTPPartMessageKey, @"base64",kSKPSMTPPartContentTransferEncodingKey,nil];
testMsg.parts = [NSArray arrayWithObjects:plainPart,imgPart,nil];
如果需要更多代码或参考来解决这个问题,我很乐意继续添加。但是所有的代码都在 github 上很容易获得,所以任何对此感兴趣的人都可以很容易地看到一切。
谢谢瑞恩