Postal is a swift framework providing simple access to common email providers.
let postal = Postal(configuration: .icloud(login: "myemail@icloud.com", password: "mypassword"))
postal.connect { result in
switch result {
case .success:
print("success")
case .failure(let error):
print("error: \(error)")
}
}
let filter = .subject(value: "Foobar") && .from(value: "foo@bar.com")
postal.search("INBOX", filter: filter) { result in
switch result {
case .success(let indexes):
print("success: \(indexes)")
case .failure(let error):
print("error: \(error)")
}
}
let indexset = NSIndexSet(index: 42)
postal.fetchMessages("INBOX", uids: indexset, flags: [ .headers ], onMessage: { email in
print("new email received: \(email)")
}, onComplete: error in
if error = error {
print("an error occured: \(error)")
}
}
postal.logger = { log in
print(log)
}
Postal does not address the same goal as MailCore. You can take a look at our thoughts in the TechnicalNotes document.
Email protocol is standardized. However providers implementations often provides extension or variations of these standards. We tried to build a document to synthesize working around these variations here: ProviderQuirks.
Postal has been a great effort and we could really use your help on many areas:
- Finding and reporting bugs.
- New feature suggestions.
- Answering questions on issues.
- Documentation improvements.
- Reviewing pull requests.
- Fixing bugs/new features.
- Improving tests.
- Contribute to elaborate the Roadmap.
If any of that sounds cool to you, please send a pull request!
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms that you can find here: CodeOfConduct.
- Xcode 9
- OS X 10.10 or later
- iOS 8.0 or later
Postal is Carthage compatible.
- Add
github "snipsco/Postal"
to your Cartfile. - Run
carthage update
.
Postal also can be used by CocoaPods.
-
Add the followings to your Podfile:
use_frameworks! pod 'Postal'
- For ReactiveSwift extensions, this project will include them as dependencies. You can do this via CocoaPods subspecs.
pod 'Postal/ReactiveSwift'
-
Run
pod install
.
-
Add the Postal repository as a submodule of your application’s repository.
git submodule add https://github.com/snipsco/Postal.git git submodule update --init --recursive
-
Drag and drop
Postal.xcodeproj
andCarthage/Checkouts/Result/Result.xcodeproj
into your application’s Xcode project or workspace. -
On the “General” tab of your application target’s settings, add
Postal.framework
andResult.framework
to the “Embedded Binaries” section. -
If your application target does not contain Swift code at all, you should also set the
EMBEDDED_CONTENT_CONTAINS_SWIFT
build setting to “Yes”.
Postal is released under the MIT License.