MAUI怎么发送电子邮件 MAUI Email功能使用

MAUI通过IEmail接口调用系统默认邮件应用预填发送,不经过后端且无需SMTP配置;需先判断Email.Default.IsSupported,再调用ComposeAsync异步打开界面,附件仅支持本地文件。

MAUI 发送电子邮件,靠的是 IEmail 接口,它不直接发信,而是调用设备上已安装的默认邮件应用(比如 iOS 的“邮件”、Android 的 Gmail 或 Outlook),预填好收件人、主题和正文,由用户确认后发出。整个过程不经过你的 App 后端,也不需要你配置 SMTP。

确保设备支持并启用 Email 功能

不是所有环境都默认支持:
• iOS 和 Android 真机可正常调用系统邮件客户端;
• Windows 桌面版需已安装并设为默认邮件程序(如 Outlook);
• macOS 支持,但要求系统“邮件”App 已登录有效账户;
• 模拟器/调试器中可能无响应或报错——建议真机测试。

基础发送代码(C#)

只需几行就能打开预填邮件界面:

if (Email.Default.IsSupported)
{
    var message = new EmailMessage
    {
        Subject = "你好",
        Body = "这是一封来自 MAUI 的测试邮件。",
        To = new List { "test@example.com" },
        // Cc, Bcc, Attachments 也支持(Attachments 需传入 FileBase 实例)
    };
    await Email.Default.ComposeAsync(message);
}

注意:
Email.Default.IsSupported 必须先判断,避免在不支持平台崩溃;
ComposeAsync 是异步方法,务必用 await
• 附件目前仅支持本地文件路径(需先保存到应用沙盒或缓存目录)。

常见问题处理

点击没反应? 检查是否在主线程调用,或是否被 try-catch 吞掉异常;
中文乱码或换行失效? Body 中避免使用 \r\n,统一用 \n;HTML 邮件暂不支持,isHTML 参数在 MAUI 中不可控;
想指定邮箱账号? 不行。MAUI 的 IEmail 不控制账户选择,完全交由系统邮件 App 处理;
要后台静默发送? MAUI 原生不支持。如需此能力,得改用平台原生 API(如 iOS 的 MFMailComposeViewController)+ 自定义平台实现。

基本上就这些。不需要配服务器、不涉及权限声明(iOS/Android 均无需额外 info.plistAndroidManifest.xml 配置),轻量又安全。