Coder Social home page Coder Social logo

jsmailsender's Introduction

JSMailSender

Intro

JSMailSender is a simple SMTP client for iOS and Mac OS X. If you need to send a quick email or two without activating the iOS mail app, this project should help you out. If you want to create the next great Mail client in IOS, keep looking. Or better yet, fork and extend this project.

See the project page for more information and documentation.

Rationale

For a while I have been maintaining a fork of the apparently abandoned skpsmtpmessage. Based on the feedback on that project, it still fills a need. I wanted to make the library work better in the background, so I tried to integrate Quinn "The Eskimo!"'s class QRunLoopOperation, which elegantly combines NSRunLoop-based APIs with NSOperations. But I was finding it hard to make changes cleanly, mostly because of the complex conditional code used to manage the state of the SMTP connection. I decided to do away with all the manual condition checking and to use the State Machine Compiler to generate the complex conditions of an SMTP connection. I decided the result was different enough to merit a new project. I hope that by basing the code on a state machine, it will make it easier to accomodate new behaviors from mail server I haven't been able to test against.

Current Status

The project will build and send mail. I am able to send mail using iCloud (me.com), Gmail, and Yahoo! Other mail servers that support PLAIN or LOGIN auth methods should work as well..

Working features

  • Start TLS
  • PLAIN and LOGIN authentication
  • Tested on common mail servers.

Unimplemented or incomplete, but planned

  • No CRAM-MD5 authentication
  • Should be better integrated with the reachability APIs on iOS.
  • Gracefully handle network timeouts.
  • Documentation
  • Better testing

Non Features

  • MIME
  • POP, IMAP
  • SMTP Server

Acknowledgments

Apple DTS in general and Quinn in particular. The QRunLoopOperation class is copied without modifications.

ithron/Base64-Additions

Ian Baird, for sksmtpmessage. Even though I created a new project, I still looked at his code for a sanity check.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.