0.1.0-9 • Published 5 years ago

@matthiasn/react-native-mailcore v0.1.0-9

Weekly downloads
5
License
ISC
Repository
github
Last release
5 years ago

react-native-mailcore

react native bindings for https://github.com/MailCore/mailcore2

npm version npm downloads

Stability status: alpha

Setup

  • yarn add react-native-mailcore
  • react-native link react-native-mailcore
  • For ios, setup pods for your project. Go to ios directory in your project. See https://github.com/MailCore/mailcore2/blob/master/build-mac/README.md#cocoapods

    • If you havent setup pods for your project run pod init in your ios directory.
    • Add pod 'mailcore2-ios' to your Podfile. Example

        # Uncomment the next line to define a global platform for your project
        # platform :ios, '9.0'
      
        target 'BasicExample' do
          # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
          # use_frameworks!
      
          # Pods for BasicExample
      
          pod 'mailcore2-ios'
      
          target 'BasicExampleTests' do
            inherit! :search_paths
            # Pods for testing
          end
      
        end
      
        target 'BasicExample-tvOS' do
          # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
          # use_frameworks!
      
          # Pods for BasicExample-tvOS
      
          target 'BasicExample-tvOSTests' do
            inherit! :search_paths
            # Pods for testing
          end
      
        end
    • pod install

  • For android,

    • copy paste the following lines in to settings.gradle
    include ':mailcore2-android-4'
    project(':mailcore2-android-4').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-mailcore/mailcore2-android-4')
    • Add the following code to app/build.gradle of your app.

      • For android tools version com.android.tools.build:gradle:2.2.3

          import com.android.build.gradle.internal.pipeline.TransformTask
        
          def deleteDuplicateJniFiles() {
              def files = fileTree("${buildDir}/intermediates/exploded-aar/com.facebook.react/react-native/0.43.3/jni/") {
                  include "**/libgnustl_shared.so"
              }
              files.each { it.delete() }
          }
        
          tasks.withType(TransformTask) { pkgTask ->
              pkgTask.doFirst { deleteDuplicateJniFiles() }
          }
        • Make sure to change the react-native version properly
      • For android tools version com.android.tools.build:gradle:2.3.3

        android {
          ...
          ...
          ...
          ...
          ...
            packagingOptions{
                pickFirst '**/libgnustl_shared.so'
            }
        }

Usage

  • Note: For any of the following methods you must first use loginImap
  • Note: For SendMail method you must first use loginSmtp
  • Note: For the use of attachments download remember to give permission to the application
import MailCore from 'react-native-mailcore';
  • Login smtp
  MailCore.loginSmtp({
    hostname: 'smtp.gmail.com',
    port: 465,
    username: 'email@gmail.com',
    password: 'password',
  }).then(result => {
    alert(result.status);
  })
  .catch(error => {
    alert(error);
  });
  • Login imap
    MailCore.loginImap({
        hostname: 'imap.gmail.com',
        port: 993,
        username: 'email@gmail.com',
        password: 'password',
      }).then(result => {
        alert(result.status);
      })
      .catch(error => {
        alert(error);
      });
  • Create Folder
  MailCore.createFolder({
    folder: 'newfoldername'
  }).then(result => {
    alert(result.status);
  })
  .catch(error => {
    alert(error);
  });
  • Rename folder

    MailCore.renameFolder({
      folderOldName: 'oldFolderName',
      folderNewName: 'newFolderName'
    }).then(result => {
      alert(result.status);
    })
    .catch(error => {
      alert(error);
    });
  • Delete folder

  MailCore.deleteFolder({
    folder: 'folderName'
  }).then(result => {
    alert(result.status);
  })
  .catch(error => {
    alert(error);
  });
  • List folders

    MailCore.getFolders()
    .then(result => {
      const a = [...result.folders];
      a.forEach(element => {
        alert(element.path);
      });
    })
    .catch(error => {
        alert(error);
    });
  • Move Email

      MailCore.moveEmail({
        folderFrom: 'oldfolder',
        messageId: 14,
        folderTo: 'newfolder'
      })
      .then(result => {
        alert(result.status);
      })
      .catch(error => {
          alert(error);
      });
  • Permant Email Delete

      MailCore.permantDeleteEmail({
        folderFrom: 'folder',
        messageId: messageId
      })
      .then(result => {
          alert(result.status);
      })
      .catch(error => {
          alert(error);
      });
  • Action Flag Message

      MailCore.actionFlagMessage({
        folder: 'folder',
        messageId: messageId,
        flagsRequestKind: <FlagsRequestKind val int>,
        messageFlag: <MessageFlag val int>
      })
      .then(result => {
          alert(result.status);
      })
      .catch(error => {
          alert(error);
      
      });
	
  * Action label Message
  ```javascript  
    MailCore.actionLabelMessage({
      folder: 'folder',
      messageId: messageId,
      flagsRequestKind: <FlagsRequestKind val int>,
      tags: ["tag1","tag2","tag3"]
    })
    .then(result => {
        alert(result.status);
    })
    .catch(error => {
        alert(error);
    });
  • Send Mail
      MailCore.sendMail({
        headers: {
          key: 'value'
        },
        from: {
          addressWithDisplayName: 'from label',
          mailbox: 'email@gmail.com'
        },
        to: {
          "email@gmail.com": 'to label',
          "email@email.com": 'to label'
        },
        cc: {
          "email@gmail.com": 'cc label',
          "email@email.com": 'cc label'
        },
        bcc: {
          "email@gmail.com": 'bcc label',
          "email@email.com": 'bcc label'
        },
        subject: 'subject',
        body: 'body',
        attachments: ["url/filename", "url/filename"]
      })
      .then(result => {
          alert(result.status);
      })
      .catch(error => {
          alert(error);
      });
  * Get mail
  ```javascript
    MailCore.getMail({
    folder: 'folder',
    messageId: messageId,
    requestKind: <IMAPMessagesRequestKind val int>
    })
    .then(result => {
      let mail = {
        id: result.id,
        date: result.date,
        from: result.from,
        to: result.to,
        cc: result.cc,
        bcc: result.bcc,
        subject: result.subject,
        body: result.body,
        attachments: result.attachments
      }
      alert(result.status);
      console.log(mail)
    })
    .catch(error => {
        alert(error);
    });
  • Get Attachment

      MailCore.getAttachment({
        filename: 'filename',
        folder: 'folder',
        messageId: messageId,
        partID: 'partID',
        encoding: encoding,
        folderOutput: 'urlOutput'
      })
      .then(result => {
        alert(result.status);
      })
      .catch(error => {
          alert(error);
      });
  • List mails

      MailCore.getMails({
        folder: 'folder',
        requestKind: <IMAPMessagesRequestKind int value>
      })
      .then(result => {
        let promises = [];
        for (let i=0; i<result.mails.length;i++) {
          let mail = result.mails[i];
          let promise = new Promise((resolve,reject) => {
            MailCore.getMail({
              folder: 'folder',
              messageId: mail.id,
              requestKind: <IMAPMessagesRequestKind int value>
              }).then(mailDetails => {
                mail.body = mailDetails.body
                resolve(mail);
              })
              .catch(error => reject(error))
          });
          promises.push(promise)
        }
        Promise.all(promises)
        .then(mails => 
          console.log(mails))
      })
      .catch(error => {
          alert(error);
      });
    }

TODO

  • createFolder API support
  • renameFolder API support
  • deleteFolder API support
  • listFolders API support
  • imapLogin API support
  • smtpLogin API support
  • GetEmail API support
  • MoveEmail API support
  • DeleteEmail API support
  • Download attachment
  • SendEmail with attachments
  • addFlags API support
  • deleteFlags API support
  • GetEmails API support
  • Basic Example
0.1.0-9

5 years ago

0.1.0-8

5 years ago

0.1.0-7

5 years ago

0.1.0-6

5 years ago

0.1.0-5

5 years ago

0.1.0-4

5 years ago

0.1.0-3

5 years ago

0.1.0-2

5 years ago

0.1.0-1

5 years ago

0.0.15

5 years ago

0.0.14

5 years ago

0.0.13

5 years ago

0.0.12

5 years ago

0.0.11

5 years ago

0.0.10

5 years ago

0.0.9

5 years ago

0.0.8

5 years ago

0.0.7

5 years ago

0.0.6

5 years ago

0.0.5

5 years ago

0.0.4

5 years ago