#react-native #email #smtp #expo
#react-native #Адрес электронной почты #smtp #выставка
Вопрос:
Я хочу нажать кнопку и отправить себе электронное письмо с учетной записью Gmail, используя протокол SMTP в приложении Expo в React Native. Я не хочу использовать 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')]
Если вы знаете какое-либо другое решение или знаете, как заставить этот модуль работать, дайте мне знать, пожалуйста.
Спасибо за ответы.
Комментарии:
1. Отказ от ответственности: не решение вышеуказанной проблемы. У меня было аналогичное требование 2 месяца назад, и я попробовал то же самое, но не смог добиться какого-либо решения и окончательно оставил подход, основанный на электронной почте на основе API. И это также более предпочтительно, потому что для подключения SMTP вам нужно либо поделиться паролем через API, либо жестко закодировать его в мобильном приложении, в любом случае, это небезопасно, чем вызов API. еще одним решением является использование стороннего решения AWS SNS или SendGrid или Sentry.
Ответ №1:
Библиотека, которую вы пытаетесь использовать 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 ios
или yarn android
для запуска сервера JavaScript bundler и создайте двоичный файл проекта. Для этого требуется Xcode или Android Studio, в зависимости от платформы.
Однако это не лучший способ отправки электронной почты, в конечном итоге вам потребуется реализовать серверный API, через который вы отправляете свое сообщение, что более безопасно, или использовать веб-сервис, такой как служба электронной почты AWS.
Комментарии:
1. Если кто-нибудь сможет заставить эту библиотеку работать с последними версиями React Native (я на 0.64.2), дайте мне знать. Я не могу создать свое приложение после связывания этой библиотеки (тестирование с iOS).
Ответ №2:
Если вы из будущего и у вас та же проблема, что и у меня, вы можете попробовать:
- Решение, данное Каримом Аделем
- Это решение, которое я нашел:
Я не хотел извлекать, поэтому я искал другие альтернативы. И я нашел облачные функции Firebase, они похожи на серверную часть, которая работает 24/7, бесплатно, с проектом Google Firebase. Хорошая вещь в этом заключается в том, что вы можете использовать NodeJS и nodemailer
библиотеку для отправки электронных писем (и делать все, что вы можете придумать).
Вот это руководство, которое я нашел очень полезным в Medium.
Комментарии:
1. предупреждение: стоит денег …
Error: Your project MyProject must be on the Blaze (pay-as-you-go) plan to complete this command.
(после запускаfirebase deploy
)