You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中无需服务器发送SMS/Email的实现方案求助

无需服务器在Flutter中发送SMS/Email的免费方案

一、发送Email的无服务器方案

不用自己搭建服务器,直接借助第三方免费邮箱的SMTP服务就能实现,推荐用mailer这个Flutter库,步骤如下:

  1. 添加依赖到pubspec.yaml:
dependencies:
  mailer: ^6.1.0
  crypto: ^3.0.3 # 用于SMTP加密
  1. 编写发送代码(以Gmail为例,注意Gmail需要开启两步验证并生成应用密码,不能使用原账号密码):
import 'package:mailer/mailer.dart';
import 'package:mailer/smtp_server/gmail.dart';

void sendEmail() async {
  final smtpServer = gmail('你的Gmail邮箱地址', '你的Gmail应用密码');
  
  final message = Message()
    ..from = Address('你的Gmail邮箱地址', '你的应用名称')
    ..recipients.add('收件人邮箱地址')
    ..subject = '测试邮件'
    ..text = '这是一封无需服务器发送的测试邮件';

  try {
    final sendReport = await send(message, smtpServer);
    print('邮件发送成功: ${sendReport.toString()}');
  } on MailerException catch (e) {
    print('邮件发送失败: ${e.toString()}');
    for (var p in e.problems) {
      print('问题详情: ${p.code}: ${p.msg}');
    }
  }
}
  • 其他可选邮箱:Outlook(SMTP地址smtp.office365.com,端口587)、Yahoo(smtp.mail.yahoo.com),配置对应SMTP参数即可。
  • 注意:免费邮箱有发送限额,比如Gmail每天最多发500封,适合个人或小流量场景。

二、发送SMS的无服务器方案

免费无服务器的SMS服务大多是新用户赠送额度,用完需付费,推荐两个靠谱的选项:

1. Twilio

新用户注册会赠送一定额度的免费短信,无需自己搭服务器,直接通过API调用发送:

  • 添加twilio_flutter依赖:
dependencies:
  twilio_flutter: ^0.0.1
  • 编写发送代码:
import 'package:twilio_flutter/twilio_flutter.dart';

void sendSMS() {
  TwilioFlutter twilioFlutter = TwilioFlutter(
      accountSid: '你的Twilio Account SID', // 从Twilio控制台获取
      authToken: '你的Twilio Auth Token', // 从Twilio控制台获取
      twilioNumber: '你的Twilio电话号码' // 从Twilio控制台申请的号码
  );

  twilioFlutter.sendSMS(
      toNumber: '收件人电话号码', // 格式如+8613xxxxxxxxx
      messageBody: '测试短信'
  );
}

2. Plivo

同样新用户有免费额度,可直接用HTTP请求调用API,无需额外库:

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

void sendPlivoSMS() async {
  final url = Uri.parse('https://api.plivo.com/v1/Account/你的Plivo Auth ID/Message/');
  final response = await http.post(
    url,
    headers: {
      'Authorization': 'Basic ' + base64Encode(utf8.encode('你的Plivo Auth ID:你的Plivo Auth Token')),
      'Content-Type': 'application/json',
    },
    body: jsonEncode({
      'src': '你的Plivo号码',
      'dst': '收件人号码',
      'text': '测试短信'
    }),
  );

  if (response.statusCode == 202) {
    print('短信发送成功');
  } else {
    print('短信发送失败: ${response.body}');
  }
}
  • 注意:不要把Auth Token、SID这些敏感信息硬编码在代码里,可通过Flutter的环境变量管理(比如用flutter_dotenv库),避免打包后泄露。

关于email_auth库的问题

这个库主要用于邮箱验证流程,依赖Firebase或自建服务器发送验证邮件,并非用于直接发送任意邮件,所以不适合你的无服务器发送需求,换用SMTP类的库更直接。

内容的提问来源于stack exchange,提问作者life hack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 00:22:55