# #android #firebase #flutter #dart #google-cloud-firestore
Вопрос:
Я работаю над приложением flutter, и мне нужно реализовать функцию. Я хочу создать кнопку, и каждый раз, когда пользователь нажимает ее, если соблюдаются некоторые условия, я автоматически получаю электронное письмо с информацией о пользователе, такой как его адрес электронной почты. Например, пользователь нажимает «Введите свой адрес электронной почты», нажимает кнопку, а затем я, как администратор, получаю электронное письмо с только что написанным пользователем. Как реализовать эту функциональность в моем приложении flutter?
Комментарии:
1. Проверьте этот пакет pub.dev/пакеты/url_launcher делает то, что вы хотите.
Ответ №1:
Вы можете использовать доступные плагины для использования почтовых сервисов, в flutter их много , таких как url_launcher
, http
, и mailer
. Я предпочитаю использовать почтовую программу для почтовых служб, она проста в использовании, просто выполните следующие действия :
Добавьте следующую строку в файл pubspec.yaml в приложении flutter:
dependencies:
mailer:
затем выполните команду ниже в своей консоли или cmd:
flutter pub upgrade --major-versions
теперь вам нужно импортировать плагин в любое место, где вы хотите использовать этот плагин для рассылки в качестве:
import 'package:mailer/mailer.dart';
import 'package:mailer/smtp_server.dart';
Здесь я создаю сервер Gmail для отправки электронной почты. Он прост в использовании и быстр в реализации.
main() async {
String username = //Your Email;
String password = //Your Email's password;
final smtpServer = gmail(username, password);
// Creating the Gmail server
// Create our email message.
final message = Message()
..from = Address(username)
..recipients.add('receiver@example.com') //recipent email
..ccRecipients.addAll(['yourCCmails@example.com', 'yourCCmails@example.com']) //cc Recipents emails
..bccRecipients.add(Address('test@test.com')) //bcc Recipents emails
..subject = 'Testing Dart Mailer plugin :: connectionEstablished :: ${DateTime.now()}' //subject of the email
..text = 'This is the plain text.nThis is line 2 of the text part.' //body of the email
try {
final sendReport = await send(message, smtpServer);
print('Message sent: ' sendReport.toString()); //print if the email is sent
} on MailerException catch (e) {
print('Message not sent. n' e.toString()); //print if the email is not sent
// e.toString() will show why the email is not sending
}
}
Теперь вы можете использовать этот код внутри InkWell()
операционной GestureDetector()
системы как:
body: yourWidget(
child: GestureDetector(
onTap: () {
// fire the mailer code here and you are good to go
},
)