2011-08-17 5 views
10

私は、単に私のアプリの中から電子メールを送信するためのフレームワークを探していました。私はMailCore、Pantomime、SKPSMTPを運がないとしようとしました。私はそれらをXcodeでコンパイルすることができないので、古いものと推測しました。私はこれを行うことができる方法はありますか?もしそうなら、どうですか?ありがとう。Xcode 4/iOS - 私のアプリケーションの中からSMTPを使って電子メールを送信する

+0

あなたのコンテンツにあなたのアプリで新しい電子メールボックスをポップアップする方法がありますが、ユーザはそれを送信するかどうかを制御します。私は、アプリ内で独自のSMTPを実装することがAppleによって承認されるのかどうかはわかりません。 – Dani

+0

おそらくそうではありませんが、これを実装する多くのアプリがありますか?これが入っている文脈はホテルの予約書式です。だから私は送信ボタンを追加し、リンゴは私が何か厄介なことをしていない参照してください、私はそれが拒否される理由を見ることができません。私がガイドラインで何かを忘れていない限り。あなたの入力をありがとう。 –

+0

SKPSMTPコードを正常にコンパイルしました。明示的に.mファイルをBuild Phases/Compile Sourcesに追加してみてください。 – Ellis

答えて

18

iOSデバイスからメールを簡単に送信できます。 SMTPとすべてを実装する必要はありません。 iOSのメール作成機能を内蔵していることをお勧めします。アドレス帳にアクセスできます!したがって、名前、電子メールアドレスを自動完成します。 Yaaiiii !!

フレームワークとコードのようなフレームワークとコードを含めると、AddressBookAddressBookUIおよびが含まれます。コンテンツをHTML形式で送信することもできます。私は希望

+0

あなたの詳細でややユーモラスな返答をありがとう! :)これは、メールの画面を下から上に持って来るのだろうか、またはそれを静かにバックグラウンドで送りますか?私は後者を目指しているから。 –

1

...

- (void)mailComposeController:(MFMailComposeViewController*)controller 
      didFinishWithResult:(MFMailComposeResult)result 
         error:(NSError*)error 
{ 
    if(error) NSLog(@"ERROR - mailComposeController: %@", [error localizedDescription]); 
    [self dismissModalViewControllerAnimated:YES]; 
    return; 
} 

ハッピーコーディング - 完全を期すために

#import <MessageUI/MessageUI.h> 
#import <AddressBook/AddressBook.h> 
#import <AddressBookUI/AddressBookUI.h> 

MFMailComposeViewController *mailComposer; 
mailComposer = [[MFMailComposeViewController alloc] init]; 
mailComposer.mailComposeDelegate = self; 
[mailComposer setModalPresentationStyle:UIModalPresentationFormSheet]; 
[mailComposer setSubject:@"your custom subject"]; 
[mailComposer setMessageBody:@"your custom body content" isHTML:NO]; 
[self presentModalViewController:mailComposer animated:YES]; 
[mailComposer release]; 

は、私は、ユーザーが cancelsendを押すと、メールのウィンドウを閉じ、このセレクタを記述する必要がありますこれを行うアップルの承認された方法は、HTTP Post経由でサーバーにデータを送信し、サーバーからメールを生成させることだと考えてください。私は他の人がこれに似た質問をしているのを見てきました。あなたがデバイスからそれを送信すると、本当にユーザーにプロンプ​​トを出す必要があります。

これはなぜですか?あなたの確認なしに自分のアドレス帳の全員に自分自身を送信し、アプリケーションXをインストールしたばかりであることを伝えるアプリケーションを想像してください。これが意図的であっても、すぐに巨大なSMTPストームが発生し、本質的には「あなたが愛している」ウイルスになります。

これは公衆インターネット上の問題ではありましたが、無線通信事業者はすぐにセルサービスをブロックするのに十分な過負荷を引き起こす可能性があります。

結論:@Srikarが示唆するようにComposeViewControllerを使用するか、サーバーにデータをPOSTしてそこから送信します。

+0

私は理解していますが、フレームワークで構築されたリンゴを使用しない場合は、アドレス帳にアクセスする必要はありません。メールから1つ、メールから1つ。しかし、これが不可能な場合は、ユーザーにフォームに記入させるだけで、送信用の電子メールが生成されます。 –

4

SKPSMTPMessageは、UIを必要とせずにメールを送信するのにうまくいきます。

プロジェクトにCFNetwork.frameworkへの参照を追加してください。そうしないと、ビルドエラーが発生します。

+3

私はこの 'SKPSMTPMessage'を使用しました。しかし、ユーザー名とパスワードをハードコードする必要があります。しかし、私はiPhoneで既に電子メールアカウントにサインインして電子メールを送信したいと思います。どうやってやるの – iDia

6

MFMailComposeViewControllerには、canSendMailというメソッドがあります。電子メールアカウントを持たないデバイスにMFMailComposeViewControllerを提示する前にこれをチェックしないと、SIGABRTが得られます。

あなたのMacとあなたのiPadにメールアカウントを持っている可能性があるので、デバイスやシミュレータでテストするときにこれを見逃しやすいです。

関連する問題