Flutter邮件发送插件flutter_emailer的使用

发布于 1周前 作者 yibo5220 来自 Flutter

Flutter邮件发送插件flutter_emailer的使用

功能特性

该插件支持以下功能:

  • 打开默认的邮件应用程序。
  • 发送邮件给单个或多个接收者。
  • 包含抄送(CC)和密送(BCC)接收者。
  • 添加邮件主题或正文。

可用方法

  1. 打开邮件应用程序

    openEmailApp()
    
  2. 单个接收者且无主题

    openEmailWithForSingleReceiverOnly(String receiverEmailId, List<String>? cc, List<String>? bcc)
    
  3. 多个接收者且无主题

    openEmailWithForMultipleReceiverOnly(List<String> receiverEmailIdList, List<String>? cc, List<String>? bcc)
    
  4. 单个接收者且有主题

    openEmailWithForSingleReceiverWithSubject(String receiverEmailId, String subject, List<String>? cc, List<String>? bcc)
    
  5. 多个接收者且有主题

    openEmailWithForMultipleReceiverWithSubject(List<String> receiverEmailIdList, String subject, List<String>? cc, List<String>? bcc)
    
  6. 只有正文

    openEmailWithBodyOnly(String body, List<String>? cc, List<String>? bcc)
    

权限

Android

AndroidManifest.xml 文件中添加以下权限:

<queries>
  <intent>
    <action android:name="android.intent.action.SENDTO" />
    <data android:scheme="mailto" />
  </intent>
</queries>

iOS

Info.plist 文件中添加以下权限:

<key>LSApplicationQueriesSchemes</key>
<array>
  <string>mailto</string>
</array>

实现步骤

  1. pubspec.yaml 文件中添加依赖:

    dependencies:
      flutter_emailer: ^0.0.1
    
  2. 导入插件包:

    import 'package:flutter_emailer/flutter_emailer.dart';
    
  3. 使用示例:

    void _openEmailApp() async {
      try {
        await FlutterEmailer.openEmailApp();
      } catch (e) {
        debugPrint('Error: $e');
      }
    }
    
    void _openEmailWithSubject() async {
      try {
        await FlutterEmailer.openEmailWithForSingleReceiverWithSubject('receiverEmail@gmail.com', "Test Subject");
      } catch (e) {
        debugPrint('Error: $e');
      }
    }
    
    void _openEmailWithForSingleReceiverOnly() async {
      try {
        await FlutterEmailer.openEmailWithForSingleReceiverOnly("receiverEmail@gmail.com");
      } catch (e) {
        debugPrint('Error: $e');
      }
    }
    
    void _openEmailWithForMultipleReceiverOnly() async {
      try {
        await FlutterEmailer.openEmailWithForMultipleReceiverOnly(["receiverEmail@gmail.com", "receiverEmail2@gmail.com"]);
      } catch (e) {
        debugPrint('Error: $e');
      }
    }
    
    void _openEmailWithForMultipleReceiverWithSubject() async {
      try {
        await FlutterEmailer.openEmailWithForMultipleReceiverWithSubject(["receiverEmail@gmail.com", "receiverEmail2@gmail.com"], "Multiple receiver subject");
      } catch (e) {
        debugPrint('Error: $e');
      }
    }
    
    void _shareEmailWithBodyOnly() async {
      try {
        await FlutterEmailer.openEmailWithBodyOnly('This is the body of the email.');
      } catch (e) {
        debugPrint('Error: $e');
      }
    }
    

完整示例代码

import 'package:flutter/material.dart';
import 'package:flutter_emailer/flutter_emailer.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {

  [@override](/user/override)
  void initState() {
    super.initState();
  }

  void _openEmailApp() async {
    try {
      await FlutterEmailer.openEmailApp();
    } catch (e) {
      debugPrint('Error: $e');
    }
  }

  void _openEmailWithSubject() async {
    try {
      await FlutterEmailer.openEmailWithForSingleReceiverWithSubject('receiverEmail@gmail.com', "Test Subject");
    } catch (e) {
      debugPrint('Error: $e');
    }
  }

  void _openEmailWithForSingleReceiverOnly() async {
    try {
      await FlutterEmailer.openEmailWithForSingleReceiverOnly("receiverEmail@gmail.com");
    } catch (e) {
      debugPrint('Error: $e');
    }
  }

  void _openEmailWithForMultipleReceiverOnly() async {
    try {
      await FlutterEmailer.openEmailWithForMultipleReceiverOnly(["receiverEmail@gmail.com", "receiverEmail2@gmail.com"]);
    } catch (e) {
      debugPrint('Error: $e');
    }
  }

  void _openEmailWithForMultipleReceiverWithSubject() async {
    try {
      await FlutterEmailer.openEmailWithForMultipleReceiverWithSubject(["receiverEmail@gmail.com", "receiverEmail2@gmail.com"], "Multiple receiver subject");
    } catch (e) {
      debugPrint('Error: $e');
    }
  }

  void _shareEmailWithBodyOnly() async {
    try {
      await FlutterEmailer.openEmailWithBodyOnly('This is the body of the email.');
    } catch (e) {
      debugPrint('Error: $e');
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Emailer Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Flutter Emailer Example'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.stretch,
            children: [
              ElevatedButton(
                onPressed: _openEmailApp,
                child: const Text('Open Email App'),
              ),
              ElevatedButton(
                onPressed: _openEmailWithSubject,
                child: const Text('Open Email with Specific Subject'),
              ),
              ElevatedButton(
                onPressed: _openEmailWithForSingleReceiverOnly,
                child: const Text('Open Email with single receiver'),
              ),
              ElevatedButton(
                onPressed: _openEmailWithForMultipleReceiverOnly,
                child: const Text('Open Email with multiple receiver'),
              ),
              ElevatedButton(
                onPressed: _openEmailWithForMultipleReceiverWithSubject,
                child: const Text('Open Email with multiple receiver with subject'),
              ),
              ElevatedButton(
                onPressed: _shareEmailWithBodyOnly,
                child: const Text('Share Email with Body Only'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

更多关于Flutter邮件发送插件flutter_emailer的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter邮件发送插件flutter_emailer的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用flutter_emailer插件发送邮件的示例代码。flutter_emailer插件允许你在Flutter应用中发送电子邮件,但它依赖于设备的原生邮件客户端。

步骤 1: 添加依赖

首先,你需要在你的pubspec.yaml文件中添加flutter_emailer依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_emailer: ^5.0.2  # 请检查最新版本号

然后运行flutter pub get来获取依赖。

步骤 2: 导入插件

在你的Dart文件中导入flutter_emailer插件:

import 'package:flutter_emailer/flutter_emailer.dart';

步骤 3: 使用插件发送邮件

下面是一个简单的示例,展示如何使用flutter_emailer发送电子邮件:

import 'package:flutter/material.dart';
import 'package:flutter_emailer/flutter_emailer.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Emailer Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: EmailSenderScreen(),
    );
  }
}

class EmailSenderScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Send Email'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _sendEmail,
          child: Text('Send Email'),
        ),
      ),
    );
  }

  void _sendEmail() async {
    final Email email = Email(
      body: "This is the body of the email.",
      subject: "Test Email",
      recipients: ["recipient@example.com"],
      isHTML: false,
      attachmentPaths: [], // 如果需要附件,可以在这里添加文件路径
    );

    try {
      await FlutterEmailer.send(email);
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(
          content: Text('Email sent successfully!'),
        ),
      );
    } catch (e) {
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(
          content: Text('Failed to send email: ${e.message}'),
          backgroundColor: Colors.red,
        ),
      );
    }
  }
}

解释

  1. 添加依赖:在pubspec.yaml文件中添加flutter_emailer依赖。
  2. 导入插件:在Dart文件中导入flutter_emailer
  3. 创建UI:创建一个简单的Flutter应用,其中包含一个按钮,点击按钮时调用_sendEmail函数。
  4. 发送邮件:在_sendEmail函数中,创建一个Email对象,设置邮件的内容、主题、收件人等,然后调用FlutterEmailer.send(email)方法发送邮件。
  5. 错误处理:捕获并处理可能发生的异常,通过SnackBar显示成功或失败的消息。

请注意,由于flutter_emailer依赖于设备的原生邮件客户端,因此如果设备上没有配置邮件账户或邮件客户端不支持发送邮件,这个插件可能无法正常工作。

回到顶部