iOSアプリケーションからの手紙を書く

問題


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 ] ;

}




サンプルアプリケーションのソースコードは、 ここからダウンロードできます。

手紙を書いてください!:)




All Articles