类似于:Getting only email address to display when using message.getFrom() in JavaMail,但无法应用解决方案。
尝试在Google AppScript和Gmail上使用mailMessage.getFrom()。
默认脚本:
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();
这将返回发件人的姓名,而不是实际的电子邮件地址。尝试getFrom().getAddress()
在上面提到的帖子中尝试我的运气,但显然没有用,getFrom()
返回了一个字符串。
任何想法如何使用发件人的元数据访问数据或字典的数组,以便我自己提取电子邮件,姓名等?
答案 0 :(得分:1)
似乎在卡中使用getFrom()
方法时,会显示名称,但没有显示您所描述的电子邮件地址,这与GmailMessage.getFrom()
documentation中包含的内容相反。 / em>
我已自由通过Google的问题跟踪器为您报告此行为:
您可以点击此页面左上角发行号旁边的☆,让Google知道更多人正在遇到此问题,因此更有可能看到更快的速度。
与此同时,由于getFrom()
方法仍可在Apps脚本界面中使用,因此您可以从getFrom()
的返回字符串中获取电子邮件地址。
如果使用Logger.log(mailMessage.getFrom())
,则会在日志中以以下形式返回:
Firstname Lastname <emailaddress@domain.com>
因此,您所需要做的就是替换:
var from = mailMessage.getFrom();
具有:
var from = mailMessage.getFrom().split("<")[1].split(">")[0];
希望对您有帮助!