npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

imapical

v1.2.0

Published

Find emails with ical attachments via imap

Downloads

10

Readme

imapical

This module provides functionality for connecting to an IMAP server, listing unread emails, fetching said emails and attachments, and decoding iCalendar attachments into Events.

Overview

fetch() is the primary method for the module, and calling this function triggers a set of operations that results in returning a list of Events currently awaiting processing from the mailbox.

When fetch() is called, the module connects a single IMAP client to the configured IMAP server, and lists all the available mailboxes. These mailboxes are folders that exist on the email account, such things as Inbox, Sent, Spam, etc. emailjs-imap-client provides the functionality for IMAP connectivity.

When the list of mailboxes has been obtained, new IMAP clients are spawned for each of the available mailboxes. These clients then list all available, unread, mail that can currently be found in the mailbox the client belongs to.

Available mail is then fetched by each client, requesting certain header elements, and a peek of the mail body. This prevents the mail from being marked as read, meaning it will show up in future searches for Unread mail.

Once the body of the mails have been returned, these bodies are then scanned for parts that match the text/calendar mimetype. If such a part is found, the full body of this mail is subsequently fetched. This marks the mail as Read and prevents it from being fetched in future searches for Unread mail.

Once a text/calendar bodypart is fetched, it is converted from base64 if appropriate, and then decoded as a iCalendar file. ical-expander provides this functionality.

An object consisting of the organiser (originator) of the event, attendees, start and end date, description and summary of the event is then returned.

Usage

Construct a new imapical instance by passing relevant configuration parameters to the factory function:

const imapical = require('imapical');

const client = imapical({
  "username": "",
  "password": "",
  "host": "",
  "port": 0
});

fetch() can then be called on the new instance:

client.fetch().then((events) => {
  // Parsed events
});