在鸿蒙应用开发中,需要一个跳转系统邮件,发送邮件的demo

在鸿蒙应用开发中,需要一个跳转系统邮件,发送邮件的demo


HarmonyOS Next
HarmonyOS
2025-03-25 13:39:53
浏览
2
收藏 2
回答 3
已解决
回答 3
按赞同
/
按时间
乂心IsOneHeart
1

参考代码:

// Copyright (c) 2024-2025 IsOneHeart SourHarbor - PixelArtisan
export function startEmailAbility(context: common.UIAbilityContext, uri?: string) {
  context.startAbility({
    action: 'ohos.want.action.sendToData',
    uri: uri ? uri : 'mailto:example@example.com?subject=【像素匠反馈建议】'
  })
}


分享
微博
QQ
微信
回复
2025-03-25 17:13:21
三掌柜

其实,电子邮件可通过ability拉起,通过拼接uri传递参数,具体示例代码如下所示:

mail({ subject= '', recipients=[], body='', ccRecipients=[], bccRecipients=[] }: mainOptions, callback: Function) { 
  let mailUri: string = ''; 
  mailUri += recipients?.join(',') || ''; 
  mailUri += '?cc=' + ccRecipients?.join(',') || ''; 
  mailUri += '&bcc=' + bccRecipients?.join(',') || ''; 
  mailUri += '&subject=' + subject; 
  mailUri += '&body=' + body; 
  this.startEmailApp(mailUri, callback); 
}
startEmailApp = (mailUri, callback) => { 
  let want: Want = { 
    bundleName: 'com.huawei.hmos.email', 
    abilityName: 'EntryAbility', 
    moduleName: 'entry', 
    uri: 'mailto:' + mailUri, 
    action: 'ohos.want.action.viewData', 
  }; 
 
  try { 
    this.ctx.uiAbilityContext.startAbility(want) 
      .then(() => { 
        Logger.info(TAG, 'startAbility success'); 
      }) 
      .catch((err: BusinessError) => { 
        callback(err.message); 
      }) 
  } catch (e) { 
    callback(e); 
  } 
}
分享
微博
QQ
微信
回复
2025-03-26 13:17:47
哈韩浪子

小伙子 授人以渔。你首先要知道调用邮箱的原理是什么。在实际开发中 可以采用ability这的方式开启邮件的应用 ,这里面要注意三点第一个就是拼接URI参数:构造包含收件人、主题、正文等信息的URI字符串,注意格式为​​mailto:收件人地址?subject=邮件主题&body=邮件正文​​第二个是创建Want对象:指定邮件应用的包名和Ability名称,设置URI和动作(参考API​​ohos.want.action.viewData​​)。第三个就是要启动Ability:通过调用​​UIAbilityContext.startAbility​​方法启动邮件应用的指定Ability,传递拼接好的URI参数。


   这个原理懂了之后,再去看demo就很好理解了。

分享
微博
QQ
微信
回复
2025-03-26 13:27:34
相关问题
HarmonyOS 如何调用手机发送邮件服务?
2149浏览 • 1回复 待解决
HarmonyOS 跳转邮件App,怎么实现?
1188浏览 • 1回复 待解决
HarmonyOS 应用跳转系统相册
1019浏览 • 1回复 待解决
需要一个NFC读取demo
2006浏览 • 1回复 待解决
HarmonyOS 需要一个筛选页面的demo
1294浏览 • 1回复 待解决
HarmonyOS 跳转系统地图进行导航
1161浏览 • 1回复 待解决
如何跳转系统权限设置页面
2108浏览 • 1回复 待解决