准备

1:我使用的是QQ邮箱的SMTP服务来实现邮件的发送,理论上此插件支持全部的邮件服务功能

图功能在 邮箱-设置-账户

2: 相应插件:enough_mail ^1.3.6,url:https://pub.dev/packages/enough_mail/example

使用

1:首先确保开通POP3/SMTP或IMAP/SMTP服务,获取到邮件的授权码

PS:注意不要泄漏个人授权码哦!

2:参考如下代码:

Future<void> smtpemail() async {
  final client = SmtpClient('neverouo.bug', isLogEnabled: true);
  try {
    await client.connectToServer('smtp.qq.com', 465,isSecure: true);//这是QQ SMTP对应的地址,不需要更改
    await client.ehlo();
    if (client.serverInfo.supportsAuth(AuthMechanism.plain)) {
      await client.authenticate('*你的邮箱地址*', '*你邮箱地址对应的授权码*', AuthMechanism.plain);
    } else if (client.serverInfo.supportsAuth(AuthMechanism.login)) {
      await client.authenticate('*你的邮箱地址*', '*你邮箱地址对应的授权码*', AuthMechanism.login);
    } else {
      return;
    }

    final builder = MessageBuilder.prepareMultipartAlternativeMessage();
    builder.from = [MailAddress('*发送方用户名*', '*你的邮箱地址*')];
    builder.to = [MailAddress('*接收方用户名*', '*对方的邮箱地址*')];
    builder.subject = 'Bug收集 [' + DateTime.now().toString() + ']';
    builder.addTextPlain('Bug测试1');
    //builder.addTextHtml('<p>hello <b>world</b></p>');//支持HTML格式
    final mimeMessage = builder.buildMimeMessage();
    final sendResponse = await client.sendMessage(mimeMessage);
    print('message sent: ${sendResponse.isOkStatus}');
  } on SmtpException catch (e) {
    print('SMTP failed with $e');
  }
}

将上面代码中的 * * 包含的中文 替换为你自己的邮箱地址与授权码,即可实现在app内发送邮件,作为简易的BUG上报至邮箱,与用户反馈功能通道。

builder.subject 为邮件标题

builder.addTextPlain 为邮件内容