私はFlutter Webを構築しています私は私のGmailのEメールアドレスにメールデータを送信しなければならないのですか。私を助けてください。私はユーザー "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: ['[email protected]'],
isHTML: true,
bccRecipients: ['[email protected]'],
ccRecipients: ['[email protected]'],
// attachments: [
// 'path/to/image.png',
// ],
);
print('3');
await FlutterMailer.send(mailOptions);
print('2');
}
_
編集:SendGrid(およびMailjet)がクライアント上ではなくサーバー上でのみ機能するように設計されているため、これは機能しません。
@ Dazza500が言ったように、あなたは次のことが必要です。
1)登録AT 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\": \"[email protected]\"\n },\n {\n \"email\": \"[email protected]\"\n }\n ]\n }\n ],\n \"from\": {\n \"email\": \"[email protected]\"\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}');
}
}
_
あなたのフレーバー言語で特定の(例えば、トークンに保護されている)WebAPIを作成してから、単純なPOST)を作成することができます。
フラッターで:
Future sendEmail(elementType elementoSent) async {
var body = "Blabla, " + elementoSent.prpoerties;
try {
await http.post(
"https://yourapiUrl.net/api/method",
headers: {
'Content-type': 'application/json',
'Accept': 'application/json'
},
body: jsonEncode({"emailbody": '$body'}));
} catch (e) {
print(e);
}
}
_
これは、例えばWeb APIコードブロックです。 (C#で):
// POST api/<EmailsController>
[HttpPost]
public void Post([FromBody] EmailsModel model)
{
if (model.Typemail == "1")
_emailSender.SendEmailtoUserAsync("[email protected]", "mail object", model.EmailBody);
}
_
NS _emailSender.SendEmailtoUserAsync
MailjetやSendGridなどの特定または外部メールサービスを使用します。
flutter_Email_Senderプラグインを使用して、それがすべてのios AndroidおよびWebプラットフォーム)で機能する電子メールを送信することができます。
final Email email = Email(
body: 'Email body',
subject: 'Email subject',
recipients: ['[email protected]'],
cc: ['[email protected]'],
bcc: ['[email protected]'],
attachmentPath: '/path/to/attachment.Zip',
isHTML: false,
);
await FlutterEmailSender.send(email);
_
このリンクを参照するこのプラグイン https://pub.dev/packages/flutter_email_sender
SendGridのようなものを使用して、このようなものでFlutter MobileからEメールを送信できます。フォーマットの悪いフォーマットで申し訳ありません。
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\": \"[email protected]\"\n },\n {\n \"email\": \"[email protected]\"\n }\n ]\n }\n ],\n \"from\": {\n \"email\": \"[email protected]\"\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}');
}
}
_
Flutter Webから電子メールを送信するには、FireBase Cloud関数のようなものを使用できます。これは、FireBase Authで新しいユーザーが作成されたときに実行される機能です。
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: '[email protected]',
from: '[email protected]',
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: '[email protected]',
subject: 'Welcome to LiftAI',
text: 'Welcome to LiftAI',
html: '<strong>Welcome to LiftAI!</strong>',
};
sgMail.send(customerMsg);
});
_