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<string> { "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.plist或
AndroidManifest.xml配置),轻量又安全。
