2013年10月5日土曜日

iPhoneプログラミング(E-Mail自動送信にチャレンジ)

iPhoneのアプリでE-Mailを自動送信(バックグラウンドで処理)しようとして調べた際のメモです。

当初、MFMailComposeViewControllerクラスを利用してバックグラウンドで送信しようと試みましたが、本クラスはユーザ介入が必須となるため別な方法を探していました。

ここでは、Gmailのサーバ経由でE-Mailを(バックグラウンドで)送信するための手順を記載しています。

■手順
1.「CFNetwork.framework」をプロジェクトに追加する。

2.「SKPSMTPMessage library」を下記のサイトからダウンロードする
https://github.com/jetseven/skpsmtpmessage

3. ダウンロードしたライブラリ(「SMTPLibrary」フォルダ以下のファイル)をプロジェクトにD&Dする。

4.下記インクルードファイルをヘッダファイル(.hファイル)に追記する。
#import "SKPSMTPMessage.h"
#import "NSData+Base64Additions.h"

5.下記のコードをヘッダファイル(.hファイル)のViewControllerに追記する。
<SKPSMTPMessageDelegate>

 <例>

 


6.以下のサンプルコードを修正してソースファイルに追記する。
 



7.Build時にエラーが発生する場合、(当方の環境xcode5では)下記の設定を加える事で回避できました。

 「project target」→「Build Phases」→「Compile Sources」を開きます。
 ライブラリ ソース ファイル (.m ファイル) を選択してEnter キーを押し、編集フィールドを開きます。
 そこに、コンパイラ フラグとして 「-fno-objc-arc」を入力します。
設定例
また、SKPSMTPMessage.mで「enumeration values not handled in switch」というワーニングが出て気になるようであれば、定義されている列挙子を全て追記してあげれば消す事ができます。
 
 <例>

■関連記事
 http://iosameer.blogspot.jp/2013/01/sending-e-mail-in-background-from-ios_25.html
 http://itsmarkblog.blogspot.jp/2013/06/send-e-mail-in-background-from-ios.html

■開発環境
 Macbook Pro 13 (OS X 10.8.5/Mountain Lion)
 Xcode 5.0(iOSシュミレータ 7.0)

1 件のコメント:

  1. 大変参考になりました。ありがとうございます。
    ところで、日本語を入力すると文字化けするのですが、SKPSMTPMessage.mあたりをいじっておられるのですか?

    返信削除