使用 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: "[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')]
如果您知道任何其他解决方案,或者您知道如何使此模块正常工作,请告诉我。 感谢您的回答。
您尝试使用的库
https://github.com/angelos3lex/react-native-smtp-mailer
需要一个裸的 react-native 项目,要使用此库,您需要从 expo 项目中弹出,为此,请在项目的根目录中运行此命令:
expo-cli eject
然后使用
npm
或
yarn
安装
react-native-smtp-mailer
>
然后运行 ​​
react-native link react-native-smtp-mailer
然后按照以下额外步骤操作: https://github.com/angelos3lex/react-native-smtp-mailer#extra-steps
运行
yarn ios
或
yarn android
以启动 JavaScript 捆绑器服务器并构建项目二进制文件。这需要 Xcode 或 Android Studio,具体取决于平台。
然而,这不是发送电子邮件的最佳方式,最终您需要实现一个服务器 API,通过该 API 发送消息,这种方式更安全,或者使用 AWS 电子邮件服务等 Web 服务。
如果你来自未来,并且遇到和我一样的问题,你可以尝试:
- kareem adel 给出的解决方案
- 我找到了这个解决方案:
我不想弹出,所以我搜索了其他替代方案。
我找到了
Firebase Cloud Functions
,它们就像一个全天候运行的后端,免费,带有 Google Firebase 项目。这样做的好处是,您可以使用 NodeJS 和
nodemailer
库来发送电子邮件(以及执行您能想到的所有操作)。
这是我在 Medium 中发现的非常有用的 教程 。