react-native-smtp-mailer
Getting started
$ npm install react-native-smtp-mailer --save
Mostly automatic installation
$ react-native link react-native-smtp-mailer
Manual installation
iOS
- In XCode, in the project navigator, right click
Libraries
➜ Add Files to [your project's name]
- Go to
node_modules
➜ react-native-smtp-mailer
and add RNSmtpMailer.xcodeproj
- In XCode, in the project navigator, select your project. Add
libRNSmtpMailer.a
to your project's Build Phases
➜ Link Binary With Libraries
- Run your project (
Cmd+R
)<
Android
- Open up
android/app/src/main/java/[...]/MainActivity.java
- Add
import com.reactlibrary.RNSmtpMailerPackage;
to the imports at the top of the file - Add
new RNSmtpMailerPackage()
to the list returned by the getPackages()
method
- Append the following lines to
android/settings.gradle
:
include ':react-native-smtp-mailer'
project(':react-native-smtp-mailer').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-smtp-mailer/android')
- Insert the following lines inside the dependencies block in
android/app/build.gradle
:
implementation project(':react-native-smtp-mailer')
Maybe you need to add (if you encounter error with mimetypes during build), in android/app/build.gradle:
android {
...
packagingOptions {
exclude 'META-INF/mimetypes.default'
exclude 'META-INF/mailcap.default'
}
}
For iOS, inside ios folder, create a Podfile with pod init
and add (or just add it on your existing Podfile):
pod 'mailcore2-ios'
Then run:
pod install
Then, in RNSmtpMailer.xcodeproj, in build settings, in Header Search Paths, add:
$(SRCROOT)/../../../ios/Pods/mailcore2-ios
Usage
import RNSmtpMailer from "react-native-smtp-mailer";
RNSmtpMailer.sendMail({
mailhost: "smtp.gmail.com",
port: "465",
ssl: true,
username: "usernameEmail",
password: "password",
from: "fromEmail",
recipients: "toEmail1,toEmail2",
subject: "subject",
htmlBody: "<h1>header</h1><p>body</p>",
attachmentPaths: [
RNFS.ExternalDirectoryPath + "/image.jpg",
RNFS.DocumentDirectoryPath + "/test.txt",
RNFS.DocumentDirectoryPath + "/test2.csv",
RNFS.DocumentDirectoryPath + "/pdfFile.pdf",
RNFS.DocumentDirectoryPath + "/zipFile.zip",
RNFS.DocumentDirectoryPath + "/image.png"
],
attachmentNames: [
"image.jpg",
"firstFile.txt",
"secondFile.csv",
"pdfFile.pdf",
"zipExample.zip",
"pngImage.png"
],
attachmentTypes: ["img", "txt", "csv", "pdf", "zip", "img"]
})
.then(success => console.log(success))
.catch(err => console.log(err));
RNFS is from react-native-fs library, used just to demonstrate a way of accessing files in phone filesystem.