メールを作成したくありません。反応ネイティブアプリからユーザーのデバイス(iOSおよびAndroid)でメインのメールアプリを起動できるようにしたいだけです。
シナリオ:サインアップ時に確認メールをユーザーに送信します。
<Button onPress={() => Linking.openURL('mailto:[email protected]') }
title="[email protected]" />
<Button onPress={() => Linking.openURL('mailto:[email protected]?subject=SendMail&body=Description') }
title="[email protected]" />
<Button onPress={() => Linking.openURL('https://www.google.co.in/') }
title="www.google.co.in" />
import { Linking } from 'react-native'
残念ながら、上記の回答のどれも正しいものではありません。
メールを作成したくありません。メインのメールアプリを起動できるようにしたいだけです
同じ動作をしたい:
Open Email App
マジックリンクを使用したSlack Onboardingとほぼ同じです。
ライブラリ react-native-email-link で解決策を見つけました。 React Nativeからメールクライアントを開くことができます(「マジックリンク」タイプの機能用)。
mail.app
がないため、実際のデバイスが必要です。この目的のために、React Natives Linkingモジュールを使用できます。ここにモジュールへのリンクがあります https://facebook.github.io/react-native/docs/linking.html 。
例:Linking.openURL('mailto:[email protected]?subject=example&body=example')
iOSでメールアプリを開くには:
Linking.canOpenURL('message:')
.then(supported => {
if (!supported) {
console.log('Cant handle url')
} else {
return Linking.openURL('message:')
}
})
.catch(err => {
console.error('An error occurred', err)
})
このメソッドを使用して、任意の電子メールクライアントを開いて送信し、いくつかのデータを含む電子メールを送信できます。
export const sendEmailViaEmailApp = (toMailId, subject, body) => {
if (!isUndefined(toMailId)) {
let link = `mailto:${toMailId}`;
if (!isUndefined(subject)) {
link = `${link}?subject=${subject}`;
}
if (isUndefined(subject)) {
link = `${link}?body=${body}`;
} else {
link = `${link}&body=${body}`;
}
Linking.canOpenURL(link)
.then(supported => {
if (supported) {
// 'mailto:[email protected]?subject=Billing Query&body=Description'
Linking.openURL(link);
}
})
.catch(err => console.error('An error occurred', err));
} else {
console.log('sendEmailViaEmailApp -----> ', 'mail link is undefined');
}
};
このメソッドをutilsクラス内に配置し、このメソッドを必要な場所で使用します
次のnpmモジュールには、探しているものがあるはずです。残念ながら、ネイティブライブラリを使用しているため、反応ネイティブリンクを実行する必要があります。