开发者问题收集

使用 SMTP 协议从 React Native 发送电子邮件

2020-09-17
4167

我想按下一个按钮,然后使用 React Native 中 Expo 应用中的 SMTP 协议向自己发送一封包含 Gmail 帐户的电子邮件。 我不想使用 Linking ,因为它会打开 Gmail 屏幕,我想使用代码发送电子邮件,而不是让用户发送。

我找到了一个名为 react-native-smtp-mailer 的模块,但它抛出了我无法解决的错误。

这是我制作的函数:

import RNSmtpMailer from "react-native-smtp-mailer";

export async function sendEmail() {
  const res = await RNSmtpMailer.sendMail({
    mailhost: "smtp.gmail.com",
    port: "465",
    ssl: true,
    username: "[email protected]",
    password: "password123",
    from: "[email protected]",
    recipients: "[email protected]",
    subject: "subject 123",
    htmlBody: "<p>body 123</p>",
    attachmentPaths: [],
    attachmentNames: [],
    attachmentTypes: [],
  })
  console.log(res)
}

这是我运行 sendEmail 函数得到的结果:

[Unhandled promise rejection: TypeError: null is not an object (evaluating '_reactNativeSmtpMailer.default.sendMail')]

如果您知道任何其他解决方案,或者您知道如何使此模块正常工作,请告诉我。 感谢您的回答。

2个回答

您尝试使用的库 https://github.com/angelos3lex/react-native-smtp-mailer 需要一个裸的 react-native 项目,要使用此库,您需要从 expo 项目中弹出,为此,请在项目的根目录中运行此命令:

expo-cli eject

然后使用 npmyarn 安装 react-native-smtp-mailer >

然后运行 ​​ react-native link react-native-smtp-mailer

然后按照以下额外步骤操作: https://github.com/angelos3lex/react-native-smtp-mailer#extra-steps

运行 yarn iosyarn android 以启动 JavaScript 捆绑器服务器并构建项目二进制文件。这需要 Xcode 或 Android Studio,具体取决于平台。

然而,这不是发送电子邮件的最佳方式,最终您需要实现一个服务器 API,通过该 API 发送消息,这种方式更安全,或者使用 AWS 电子邮件服务等 Web 服务。

kareem adel
2020-09-17

如果你来自未来,并且遇到和我一样的问题,你可以尝试:

  1. kareem adel 给出的解决方案
  2. 我找到了这个解决方案:

我不想弹出,所以我搜索了其他替代方案。 我找到了 Firebase Cloud Functions ,它们就像一个全天候运行的后端,免费,带有 Google Firebase 项目。这样做的好处是,您可以使用 NodeJS 和 nodemailer 库来发送电子邮件(以及执行您能想到的所有操作)。

这是我在 Medium 中发现的非常有用的 教程

Octaviotastico
2020-09-17