私は単純なSMTPクライアントコードを使用しています。最初にGoogleコードに投稿されました:
http://code.google.com/p/skpsmtpmessage/
プロジェクトの所有者は現在Appleに雇用されており、おそらくもっと良いことがあるので、そのリポジトリは維持されていないようです。コードのフォークがあります。これは最近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ですぐに利用できるため、これに関心のある人は誰でも簡単にすべてを見ることができます。
ありがとうライアン