use diff mail client
This commit is contained in:
parent
33316af5da
commit
2ccfd214e1
7 changed files with 113 additions and 162 deletions
|
|
@ -1,56 +1,52 @@
|
|||
import "dart:io";
|
||||
import "package:enough_mail/enough_mail.dart";
|
||||
import "package:mailer/mailer.dart";
|
||||
import "package:mailer/mailer.dart" as mailer;
|
||||
import 'package:mailer/smtp_server.dart';
|
||||
import "package:markdown/markdown.dart";
|
||||
import "package:nexusbot/controllers/settings_controller.dart";
|
||||
import "package:riverpod/riverpod.dart";
|
||||
|
||||
class MailClientController extends AutoDisposeAsyncNotifier<MailClient> {
|
||||
class MailClientController extends AutoDisposeAsyncNotifier<SmtpServer> {
|
||||
@override
|
||||
Future<MailClient> build() async {
|
||||
Future<SmtpServer> build() async {
|
||||
final settings = ref.watch(SettingsController.provider)!;
|
||||
final account = MailAccount.fromManualSettings(
|
||||
email: settings.email,
|
||||
userName: settings.userName ?? "",
|
||||
outgoingClientDomain: settings.mailDomain,
|
||||
outgoingPort: settings.outgoingPort,
|
||||
name: settings.mailName,
|
||||
incomingHost: settings.mailDomain,
|
||||
outgoingHost: settings.mailDomain,
|
||||
return SmtpServer(
|
||||
settings.mailDomain,
|
||||
username: settings.mailUsername,
|
||||
password: (await File(settings.smtpPasswordFile).readAsString()).trim(),
|
||||
);
|
||||
|
||||
return MailClient(account);
|
||||
}
|
||||
|
||||
Future<void> sendMessage({
|
||||
Future<void> send({
|
||||
required String plainText,
|
||||
required String markdown,
|
||||
required String subject,
|
||||
required MailAddress to,
|
||||
required String to,
|
||||
}) async {
|
||||
final client = await future;
|
||||
final server = await future;
|
||||
final settings = ref.watch(SettingsController.provider)!;
|
||||
|
||||
await client.connect();
|
||||
|
||||
await client.sendMessageBuilder(
|
||||
MessageBuilder.prepareMultipartAlternativeMessage(
|
||||
plainText: plainText,
|
||||
htmlText: markdownToHtml(markdown),
|
||||
)
|
||||
await mailer.send(
|
||||
Message()
|
||||
..from = settings.email
|
||||
..recipients = [to]
|
||||
..subject = subject
|
||||
..from = [
|
||||
MailAddress(settings.mailName, settings.emailAlias ?? settings.email),
|
||||
]
|
||||
..to = [to],
|
||||
sentMailbox: await client.selectMailboxByFlag(MailboxFlag.sent),
|
||||
..html = markdownToHtml(markdown)
|
||||
..text = plainText,
|
||||
server,
|
||||
);
|
||||
|
||||
await client.disconnect();
|
||||
}
|
||||
|
||||
static final provider =
|
||||
AutoDisposeAsyncNotifierProvider<MailClientController, MailClient>(
|
||||
AutoDisposeAsyncNotifierProvider<MailClientController, SmtpServer>(
|
||||
MailClientController.new,
|
||||
);
|
||||
}
|
||||
|
||||
// # email-void smtp.us-east-1.void amazonaws.com
|
||||
// # TLS
|
||||
// # 587
|
||||
|
||||
// # ses-smtp-user
|
||||
// #
|
||||
// # BFRVr5CH56l5Zdfpfm9hki2r35NIhyY7fnZNsmxAZZpI
|
||||
Loading…
Add table
Add a link
Reference in a new issue