Gmail AppScript mailMessage.getFrom() 到 return 电子邮件不是名字

Gmail AppScript mailMessage.getFrom() to return email not name

类似于:Getting only email address to display when using message.getFrom() in JavaMail但无法应用该解决方案。

尝试在 Google AppScript 上使用 mailMessage.getFrom() 和 Gmail。

默认脚本:

function loadAddOn(event) {
  var accessToken = event.messageMetadata.accessToken;
  var messageId = event.messageMetadata.messageId;
  GmailApp.setCurrentMessageAccessToken(accessToken);
  var mailMessage = GmailApp.getMessageById(messageId);
  var from = mailMessage.getFrom();

  var openDocButton = CardService.newTextButton()
  .setText("open docs")
  .setOpenLink(
    CardService.newOpenLink().setUrl("https://developers.google.com/gmail/add-ons/"));

  var card = CardService.newCardBuilder()
  .setHeader(CardService.newCardHeader().setTitle("My First Gmail Addon"))
  .addSection(CardService.newCardSection()
              .addWidget(CardService.newTextParagraph().setText("The email is from: " + from))
              .addWidget(openDocButton))
  .build();

  return [card];
}

var from = mailMessage.getFrom();

此 returns 发件人的姓名,而不是实际的电子邮件地址。 getFrom().getAddress() 尝试用上面提到的 post 试试运气,但显然它没有用,getFrom() 返回一个字符串。

知道如何访问包含发件人元数据的数据数组或字典,以便我自己提取电子邮件、姓名等吗?

这似乎是一个错误!

在卡片中使用getFrom()方法时,出现的是名字,而不是你描述的电子邮件地址,这与[=19]中包含的内容相反=].

我冒昧地在 Google 的问题跟踪器上为您报告了此行为:

您可以点击本页左上角问题编号旁边的 ☆,让 Google 知道更多人遇到此问题,因此更有可能更快地看到它。

解决方法:

同时,由于 getFrom() 方法在 Apps 脚本接口中仍然有效,您可以从 getFrom() 的 return 字符串中获取电子邮件地址。

如果你使用 Logger.log(mailMessage.getFrom()),你会在日志中得到一个 return 的形式:

Firstname Lastname <emailaddress@domain.com>

因此,您需要做的就是替换:

var from = mailMessage.getFrom();

与:

var from = mailMessage.getFrom().split("<")[1].split(">")[0];

参考文献: