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


サンプルアプリケーションのソースコードは、 ここからダウンロードできます。
手紙を書いてください!:)

Source: https://habr.com/ru/post/J127229/


All Articles