問題
iOSのアプリケーションから、アプリケーションを終了せずに(mailto URLを使用しないで)、追加画面を開かずに(MFMailComposeViewControllerを使用しないで)レターを送信したい。
解決策
高価:サーバー上でWebサービスを起動し、アプリケーションからアクセスして、文字の配信を行います。
安い:アプリケーション内でSMTPクライアントを使用します。
問題
SMTPクライアントを作成する必要があります
解決策
iOS用の使いやすいSMTPクライアント-SKPSMTPmessage
その助けを借りてメッセージを送信する方法を見てみましょう-手紙のテキストと「送信」ボタンを入力するフィールドを持つ簡単なアプリケーションを作成します。
Xcodeに移動して、iPhone用の新しいプロジェクトビューベースアプリケーションを作成します。 EmailSenderと呼んでください( ソースコード )


SKPSMTPメッセージソースのチェックアウトを行います
svn checkout skpsmtpmessage.googlecode.com/svn/trunk skpsmtpmessage-read-only
そして、そこから次のファイルをプロジェクトにコピーします(ファイルをFinderからXcodeのプロジェクトツリーにドラッグアンドドロップするだけです)。
Base64Transcoder.h
Base64Transcoder.m
HSK_CFUtilities.h
HSK_CFUtilities.m
NSData + Base64Additions.h
NSData + Base64Additions.m
NSStream + SKPSMTPExtensions.h
NSStream + SKPSMTPExtensions.m
SKPSMTPMessage.h
SKPSMTPMessage.m


また、プロジェクトCFNetwork.frameworkに接続する必要があります


メッセージのテキスト用のフィールドと、レターを送信するボタンが必要です。
EmailSenderViewController.hファイルを編集しましょう
#import <UIKit / UIKit.h>
@interface EmailSenderViewController : UIViewController {
IBOutlet UITextView * txtMessage;
}
- ( IBAction ) sendEmail;
@end
EmailSenderViewController.xibに追加TextView(txtMessageに関連付け)およびButton(クリック時にsendEmailをハングアップ)

EmailSenderViewController.mにレターを送信する機能を実装します
- ( IBAction ) sendEmail
{
SKPSMTPMessage * testMsg = [ [ SKPSMTPMessage alloc ] init ] ;
testMsg.fromEmail = @ "your.sender@gmail.com" ; //手紙の送信元の住所
testMsg.toEmail = @ "your.receiver@gmail.com" ; //レターを送信するアドレス
testMsg.relayHost = @ "smtp.gmail.com" ; //使用しているSMTPサーバー
testMsg.requiresAuth = YES ; //認証が必要かどうか
testMsg.login = @ " your.login@gmail.com " ; // smtpサーバーにログインします
testMsg.pass = @ "yourpassword" ; // smtpサーバーのパスワード
testMsg.subject = @ "habrからのメール" ; //手紙の件名
testMsg.bccEmail = @ "" ;
testMsg.wantsSecure = YES ; // smtp.gmail.comはTLSなしでは機能しません!
NSDictionary * plainPart = [ NSDictionary dictionaryWithObjectsAndKeys : @ "text / plain" 、
kSKPSMTPPartContentTypeKey、
txtMessage.text、
kSKPSMTPPartMessageKey、
@ "8bit" 、
kSKPSMTPPartContentTransferEncodingKey、
nil ] ;
testMsg.parts = [ NSArray arrayWithObjects : plainPart、 nil ] ;
[ testMsg send ] ;
}
接続SKPSMTPMessage.hを追加することを忘れないでください
#import "EmailSenderViewController.h"
#import "SKPSMTPMessage.h"
例に示すように、Gmailにアプリケーション用に別のメールボックスを作成し、それを使用してレター(およびyour.sender = your.loging)を送信することをお勧めします。 しかし、もちろん、他のsmtpサーバーも使用できます。
そして最後に、TextViewを少しきれいにする(角を曲がった)方法を紹介します。
QuartzCore.hを接続します
#import "EmailSenderViewController.h"
#import "SKPSMTPMessage.h"
#import <QuartzCore / QuartzCore.h>
そしてViewDidLoadに追加します
- ( void ) viewDidLoad
{
txtMessage.clipsToBounds = YES ;
txtMessage.layer.cornerRadius = 10.0f;
[ super viewDidLoad ] ;
}
サンプルアプリケーションのソースコードは、 ここからダウンロードできます。
手紙を書いてください!:)