web-dev-qa-db-ja.com

メールクライアントReact-nativeを起動して開く方法

メールを作成したくありません。反応ネイティブアプリからユーザーのデバイス(iOSおよびAndroid)でメインのメールアプリを起動できるようにしたいだけです。

シナリオ:サインアップ時に確認メールをユーザーに送信します。

36
jasan

React Native Open Mail Function

<Button onPress={() => Linking.openURL('mailto:[email protected]') }
      title="[email protected]" />

件名と本文でネイティブのオープンメール機能を反応させる

<Button onPress={() => Linking.openURL('mailto:[email protected]?subject=SendMail&body=Description') }
      title="[email protected]" />

React Native Open URL

<Button onPress={() => Linking.openURL('https://www.google.co.in/') }
      title="www.google.co.in" />

インポートすることを忘れないでください

import { Linking } from 'react-native'
43

残念ながら、上記の回答のどれも正しいものではありません

メールを作成したくありません。メインのメールアプリを起動できるようにしたいだけです

同じ動作をしたい:

  1. ボタン付きのサインイン画面Open Email App
  2. ユーザーはメールアプリを開きます
  3. 彼は魔法のリンクをクリックしてアプリに戻ることができます

マジックリンクを使用したSlack Onboardingとほぼ同じです。

enter image description here

ライブラリ react-native-email-link で解決策を見つけました。 React Nativeからメールクライアントを開くことができます(「マジックリンク」タイプの機能用)。

  • Androidで動作します。
  • IOSで試してみたい場合、iOSシミュレータにはmail.appがないため、実際のデバイスが必要です。
10
David Leuliette

この目的のために、React Natives Linkingモジュールを使用できます。ここにモジュールへのリンクがあります https://facebook.github.io/react-native/docs/linking.html

例:Linking.openURL('mailto:[email protected]?subject=example&body=example')

7
tnyN

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)
      })
3
Daniel

このメソッドを使用して、任意の電子メールクライアントを開いて送信し、いくつかのデータを含む電子メールを送信できます。

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クラス内に配置し、このメソッドを必要な場所で使用します

1
Aakash Daga

次のnpmモジュールには、探しているものがあるはずです。残念ながら、ネイティブライブラリを使用しているため、反応ネイティブリンクを実行する必要があります。

https://www.npmjs.com/package/react-native-mail

0
cbartondock