You can use this plugin to compose an e-mail, have the user edit the draft manually, and send it.
Note that this plugin depends on the default mail app. If you want a fallback to a third party client app like Gmail or Outlook, then check for availability, and if not available use a solution like the Social Share plugin.
⚠️ Looking for NativeScript 7 compatibilty? Go to the NativeScript/plugins repo.
Run this command from the root of your project:
tns plugin add nativescript-email
To use this plugin you must first require/import it:
import * as email from "nativescript-email";
// or
import { compose } from "nativescript-email";
// or even
import { compose as composeEmail } from "nativescript-email";
var email = require("nativescript-email");
available
email.available().then((avail: boolean) => {
console.log("Email available? " + avail);
})
email.available().then(function(avail) {
console.log("Email available? " + avail);
})
compose
// let's first create a File object using the tns file module
var fs = require("file-system");
var appPath = fs.knownFolders.currentApp().path;
var logoPath = appPath + "/res/telerik-logo.png";
email.compose({
subject: "Yo",
body: "Hello <strong>dude</strong> :)",
to: ['eddyverbruggen@gmail.com', 'to@person2.com'],
cc: ['ccperson@somewhere.com'],
bcc: ['eddy@combidesk.com', 'eddy@x-services.nl'],
attachments: [
{
fileName: 'arrow1.png',
path: 'base64://iVBORw0KGgoAAAANSUhEUgAAABYAAAAoCAYAAAD6xArmAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAHGlET1QAAAACAAAAAAAAABQAAAAoAAAAFAAAABQAAAB5EsHiAAAAAEVJREFUSA1iYKAimDhxYjwIU9FIBgaQgZMmTfoPwlOmTJGniuHIhlLNxaOGwiNqNEypkwlGk9RokoIUfaM5ijo5Clh9AAAAAP//ksWFvgAAAEFJREFUY5g4cWL8pEmT/oMwiM1ATTBqONbQHA2W0WDBGgJYBUdTy2iwYA0BrILDI7VMmTJFHqv3yBUEBQsIg/QDAJNpcv6v+k1ZAAAAAElFTkSuQmCC',
mimeType: 'image/png'
},
{
fileName: 'telerik-logo.png',
path: logoPath,
mimeType: 'image/png'
}]
}).then(
function() {
console.log("Email composer closed");
}, function(err) {
console.log("Error: " + err);
});
Full attachment support has been added to 1.3.0 per the example above.
Since 1.4.0 the promise will be rejected in case a file can't be found.
Check out this tutorial (YouTube) to learn how to use this plugin in a NativeScript-Angular app.
On iOS you can't use the simulator to test the plugin because of an iOS limitation.
To prevent a crash this plugin returns false
when available
is invoked on the iOS sim.