Flutter邮件营销与自动化插件flutter_sendinblue的使用

Flutter邮件营销与自动化插件flutter_sendinblue的使用

本包为Sendinblue API提供了简单的封装。

注意事项

⚠️ 该包并非官方Sendinblue插件。

限制

该包最初是为一个特定的小项目而构建的,并非设计为开源项目。然而,经过反思,我认为将其发布到pub.dev可能会帮助其他人。因此,目前该包的功能相对较少(相较于官方API提供的功能)。

请随时贡献或提及你需要的其他封装。

功能

联系人管理
  • 创建联系人
  • 获取所有联系人
  • 分页获取联系人
  • 获取特定联系人详情
  • 删除联系人
  • 将联系人添加到邮件黑名单
  • 从邮件黑名单中移除联系人
  • 更新联系人属性

入门指南

要开始使用API,首先需要初始化插件并提供你的API密钥,如下所示:

Sendinblue.initialize(  
  configuration: SendinblueConfiguration(apiKey: 'your-api-key'),
);  

此初始化可以在任何时间进行,但必须在调用其他方法之前完成。

使用示例

创建联系人
final int contactId = await Sendinblue.instance.createContact(email: 'hello@gmail.com');  
获取所有联系人
final List<Contact> contacts = await Sendinblue.instance.getAllContacts();
分页获取联系人
final List<Contact> contacts = await Sendinblue.instance.getContacts(offset: 0, limit: 50);
获取特定联系人
final Contact contact = await Sendinblue.instance.getContact(email: 'found@gmail.com');
删除联系人
await Sendinblue.instance.deleteContact(email: 'delete@gmail.com');
将联系人添加到邮件黑名单
await Sendinblue.instance.addContactInEmailsBlackList(email: 'blacklisted@gmail.com');
从邮件黑名单中移除联系人
await Sendinblue.instance.removeContactFromEmailsBlackList(email: 'blacklisted@gmail.com');
更新联系人属性
await Sendinblue.instance.updateContactProperties(  
  email: 'updated@gmail.com',  
  properties: {  
    'name': 'John',  
    'premium': true,  
  },  
);

请注意,Sendinblue API只会更新已在平台上创建的属性(我们也可以使用API来创建属性,但这尚未在此包中实现)。

提示:你可以在Sendinblue上设置一些“日期”属性。请注意,Sendinblue API期望的日期格式为’YYYY-MM-DD’。为了方便使用,包中包含了一个扩展方法:

DateTime(2021, 1, 1).toSendinBlueFormat(); // '2021-01-01'

额外信息

有关可以使用该包进行的操作的更多信息,请参阅官方Sendinblue文档:https://developers.sendinblue.com/reference


完整示例Demo

以下是一个完整的示例代码,展示了如何使用flutter_sendinblue插件来管理和展示联系人信息。

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

import 'contact_detail_page.dart';

void main() {
  Sendinblue.initialize(
    configuration: SendinblueConfiguration(
      apiKey:
          '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',
    ),
  );
  runApp(const MyApp());
}

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Sendinblue Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  const MyHomePage({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Sendinblue Demo'),
      ),
      body: FutureBuilder<List<Contact>>(
        future: Sendinblue.instance.getAllContacts(),
        builder: (context, snapshot) {
          if (snapshot.hasData) {
            final contacts = snapshot.data;
            if (contacts == null) {
              return const Center(
                child: Text('No contacts found'),
              );
            }
            return ListView.builder(
              itemCount: contacts.length,
              itemBuilder: (context, index) {
                final contact = snapshot.data![index];
                return ListTile(
                  title: Text(
                    contact.email,
                    style: Theme.of(context).textTheme.bodyText1,
                  ),
                  subtitle: Text('id: ${contact.id}'),
                  onTap: () => ContactDetailPage.navigateTo(context, contact.email),
                );
              },
            );
          } else if (snapshot.hasError) {
            return Center(
              child: Text(snapshot.error.toString()),
            );
          } else {
            return const Center(
              child: CircularProgressIndicator(),
            );
          }
        },
      ),
    );
  }
}

更多关于Flutter邮件营销与自动化插件flutter_sendinblue的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter邮件营销与自动化插件flutter_sendinblue的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


flutter_sendinblue 是一个用于在 Flutter 应用中集成 Sendinblue 邮件营销和自动化功能的插件。Sendinblue 是一个强大的营销平台,允许你发送电子邮件、短信、管理联系人、自动化营销流程等。通过 flutter_sendinblue 插件,你可以轻松地将这些功能集成到你的 Flutter 应用中。

安装 flutter_sendinblue 插件

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

dependencies:
  flutter:
    sdk: flutter
  flutter_sendinblue: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来安装依赖。

配置 Sendinblue API 密钥

在使用 flutter_sendinblue 之前,你需要获取你的 Sendinblue API 密钥。你可以在 Sendinblue 的仪表板中找到它。

使用 flutter_sendinblue 插件

以下是如何在 Flutter 应用中使用 flutter_sendinblue 的基本步骤:

  1. 初始化插件

    在你的 Dart 代码中,首先初始化 flutter_sendinblue 插件,并设置你的 API 密钥。

    import 'package:flutter_sendinblue/flutter_sendinblue.dart';
    
    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
      await FlutterSendinblue.init(apiKey: 'YOUR_SENDINBLUE_API_KEY');
      runApp(MyApp());
    }
    
  2. 发送电子邮件

    你可以使用 sendEmail 方法来发送电子邮件。

    void sendEmail() async {
      final email = SendinblueEmail(
        to: [SendinblueEmailAddress(email: 'recipient@example.com', name: 'Recipient Name')],
        subject: 'Test Email',
        htmlContent: '<p>This is a test email sent from Flutter using Sendinblue.</p>',
      );
    
      try {
        await FlutterSendinblue.sendEmail(email);
        print('Email sent successfully');
      } catch (e) {
        print('Failed to send email: $e');
      }
    }
    
  3. 管理联系人

    你可以使用 createContact 方法来添加联系人到 Sendinblue。

    void createContact() async {
      final contact = SendinblueContact(
        email: 'new_contact@example.com',
        attributes: {'FIRSTNAME': 'John', 'LASTNAME': 'Doe'},
        listIds: [1],  // 添加联系人到特定的列表
      );
    
      try {
        await FlutterSendinblue.createContact(contact);
        print('Contact created successfully');
      } catch (e) {
        print('Failed to create contact: $e');
      }
    }
    
  4. 触发自动化工作流

    你可以使用 triggerWorkflow 方法来触发 Sendinblue 中的自动化工作流。

    void triggerWorkflow() async {
      final workflow = SendinblueWorkflow(
        workflowId: 123,  // 你的工作流ID
        email: 'user@example.com',
      );
    
      try {
        await FlutterSendinblue.triggerWorkflow(workflow);
        print('Workflow triggered successfully');
      } catch (e) {
        print('Failed to trigger workflow: $e');
      }
    }
回到顶部