首页 > 解决方案 > 使用 SMTP 协议从 React Native 发送电子邮件

问题描述

我想按下一个按钮,然后在 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: "get.food.cordoba@gmail.com",
    password: "password123",
    from: "get.food.cordoba@gmail.com",
    recipients: "octaviopercivaldi2@gmail.com",
    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')]

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

标签: react-nativeemailsmtpexpo

解决方案


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

expo-cli eject

然后react-native-smtp-mailer使用npm或安装yarn

然后运行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,通过它发送消息,这样更安全,或者使用 AWS 电子邮件服务等 Web 服务。


推荐阅读