Как отправить прямую электронную почту по Flutter Web - PullRequest
0 голосов
/ 07 марта 2020

Я создаю флаттер-сеть. Мне нужно отправить данные по электронной почте на мой адрес электронной почты Gmail. Как я могу. Пожалуйста, помогите мне. У меня был пользователь "mailer 3.0.4" и flutter_email_sender: ^ 2.2.2 Но они оба не работают ... Вот мой код:

  // Perform login or signup
  Future<void> _validateAndSubmitForInformationForm() async {
    print('1');
    final MailOptions mailOptions = MailOptions(
      body: 'a long body for the email <br> with a subset of HTML',
      subject: 'the Email Subject',
      recipients: ['bc160201844@vu.edu.pk'],
      isHTML: true,
      bccRecipients: ['bc160201844@vu.edu.pk'],
      ccRecipients: ['bc160201844@vu.edu.pk'],
//      attachments: [
//        'path/to/image.png',
//      ],
    );
    print('3');

    await FlutterMailer.send(mailOptions);
    print('2');
  }

Ответы [ 3 ]

1 голос
/ 29 апреля 2020

РЕДАКТИРОВАТЬ: Это не будет работать, потому что SendGrid (и MailJet) был разработан для работы только на серверах, а не на клиентах.

Как сказал @ dazza500, вам необходимо:

1 ) Зарегистрируйтесь в https://app.sendgrid.com/
2) Создайте ключ API
3) Дополнительно: проверьте документацию (https://sendgrid.com/docs/API_Reference/Web_API_v3/index.html)
4) И используйте этот код (заменив SENDGRIDAPIKEY на ваш ключ API):

import 'package:http/http.dart' as http;

class SendGridUtil {
  static sendRegistrationNotification(String email) async {
    Map<String, String> headers = new Map();
    headers["Authorization"] =
        "Bearer SENDGRIDAPIKEY";
    headers["Content-Type"] = "application/json";

    var url = 'https://api.sendgrid.com/v3/mail/send';
    var response = await http.post(url,
        headers: headers,
        body:
            "{\n          \"personalizations\": [\n            {\n              \"to\": [\n                {\n                  \"email\": \"jerrod@liftaixxx.com\"\n                },\n                {\n                  \"email\": \"darran@gmailxxx.com\"\n                }\n              ]\n            }\n          ],\n          \"from\": {\n            \"email\": \"app@liftaixxx.com\"\n          },\n          \"subject\": \"New user registration\",\n          \"content\": [\n            {\n              \"type\": \"text\/plain\",\n              \"value\": \"New user register: $email\"\n            }\n          ]\n        }");
    print('Response status: ${response.statusCode}');
    print('Response body: ${response.body}');
  }
}
0 голосов
/ 08 марта 2020

Вы можете использовать что-то вроде SendGrid для отправки электронного письма с мобильного телефона с помощью чего-то вроде этого: извините за плохое форматирование.

import 'package:http/http.dart' as http;

class SendGridUtil {
  static sendRegistrationNotification(String email) async {
    Map<String, String> headers = new Map();
    headers["Authorization"] =
        "Bearer $$$SENDGRIDAPIKEY$$$";
    headers["Content-Type"] = "application/json";

    var url = 'https://api.sendgrid.com/v3/mail/send';
    var response = await http.post(url,
        headers: headers,
        body:
            "{\n          \"personalizations\": [\n            {\n              \"to\": [\n                {\n                  \"email\": \"jerrod@liftaixxx.com\"\n                },\n                {\n                  \"email\": \"darran@gmailxxx.com\"\n                }\n              ]\n            }\n          ],\n          \"from\": {\n            \"email\": \"app@liftaixxx.com\"\n          },\n          \"subject\": \"New user registration\",\n          \"content\": [\n            {\n              \"type\": \"text\/plain\",\n              \"value\": \"New user register: $email\"\n            }\n          ]\n        }");
    print('Response status: ${response.statusCode}');
    print('Response body: ${response.body}');
  }
}

Чтобы отправить электронное письмо из веб-сайта флаттера, вы можете использовать что-то вроде облачной функции Firebase - эта функция выполняется при создании нового пользователя в аутентификации Firebase:

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
const sgMail = require('@sendgrid/mail')

admin.initializeApp(functions.config().firebase);

exports.sendWelcomeEmail = functions.auth.user().onCreate(user => {

console.log("User with email created: " + user.email);

sgMail.setApiKey("$$$SENDGRIDKEY$$$");
const liftAiMsg = {
  to: 'jerrod@liftaixxx.com',
  from: 'app@liftaixxx.com',
  subject: 'New user created',
  text: 'New user created with email: ' +user.email,
  html: "<strong>New user created with email:  "+user.email+"</strong>",
};

sgMail.send(liftAiMsg);

const customerMsg = {
  to: user.email,
  from: 'app@liftaixxx.com',
  subject: 'Welcome to LiftAI',
  text: 'Welcome to LiftAI',
  html: '<strong>Welcome to LiftAI!</strong>',
};

sgMail.send(customerMsg);


});
0 голосов
/ 07 марта 2020

вы можете использовать плагин flutter_email_sender для отправки электронных писем, он работает на всех ios android и веб-платформах

final Email email = Email(
body: 'Email body',
subject: 'Email subject',
recipients: ['example@example.com'],
cc: ['cc@example.com'],
bcc: ['bcc@example.com'],
attachmentPath: '/path/to/attachment.zip',
isHTML: false,
);

await FlutterEmailSender.send(email);

см. Эту ссылку, чтобы использовать этот плагин https://pub.dev/packages/flutter_email_sender

...