symmetry-imap ~wip2
IMAP client library
To use this package, run the following command in your project's root directory:
Manual usage
Put the following dependency into your project's dependences section:
IMAP for D / SIL
Status - usable alpha
Most functions are implemented but parsing responses needs to be done. Uses arsd.email to parse emails including MIME - works currently only if you ask for the whole message - fetchRFC822
Heavily inspired by imapfilter.
Features to add:
- pipeFrom
- pipeTo
- more IMAP extensions
Present, but needs refining:
- currently IMAP literals are only parsed for returns of type responseBody
- only fetchRFC822 works for parsing results (works if you want whole email including attachments)
- mailbox UTF7 conversion code is horrible and needs improving
- more abstraction and better design needed for parsing
Probably many bugs - please file issues. PRs welcomed.
import imap;
int main(string[] args)
{
import std.conv : to;
import std.stdio : writeln;
import std.range : back;
if (args.length < 6)
{
import std.stdio: stderr;
stderr.writeln("imap-example <user> <pass> <server> <port> <mailbox>");
return -1;
}
auto user = args[1];
auto pass = args[2];
auto server = args[3];
auto port = args[4];
auto mailbox = args[5];
// PASSWORD is set in IMAP_PASS environmental variable if none set here
auto login = ImapLogin(user,pass);
auto imapServer = ImapServer(server,port);
auto session = Session(imapServer,login);
session = session.openConnection;
writeln(session.socket);
session = session.login;
writeln(session);
//writeln(socketSecureWrite(session,"HELLO"));
//writeln(socketSecureRead(session));
// Select Inbox
auto INBOX =Mailbox(mailbox,"/",'/');
auto result = session.select(INBOX);
writeln(result);
// search all messages since 29 Jan 2019 and get UIDs
auto searchResult = session.search("SINCE 29-Jan-2019");
writeln(searchResult.value);
writeln(searchResult.ids);
// search all messages from GitHub since 29 Jan 2019 and get UIDs
searchResult = session.search(`SINCE 29-Jan-2019 FROM "GitHub"`);
writeln(searchResult.value);
// fetch one of the messages from above
auto messageResult = session.fetchText(searchResult.ids.back.to!string);
writeln(messageResult.value);
// just fetch the fields we care about
auto fieldsResult = session.fetchFields(searchResult.ids.back.to!string,"FROM TO");
writeln(fieldsResult.value);
// see example in SIL directory for how to fetch a whole message including attachments
return 0;
}
- Registered by Laeeth Isharc
- ~wip2 released 5 years ago
- symmetryinvestments/imap-d
- MIT
- Dependencies:
- arsd-official:email, openssl
- Versions:
-
0.3.0 2023-Nov-30 0.2.0 2022-Oct-19 0.1.20 2022-Sep-08 0.1.19 2022-Jun-07 0.1.18 2022-Jan-11 - Download Stats:
-
-
0 downloads today
-
0 downloads this week
-
3 downloads this month
-
87349 downloads total
-
- Score:
- 0.6
- Short URL:
- symmetry-imap.dub.pm