Как отправить электронное письмо от пользователя администратору на flutter?

# #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
      },
)