使用 IMAP 将所有电子邮件放入列表
Getting all the emails into a list using IMAP
我正在尝试在 Flutter 中创建一个邮件应用程序,现在我正在测试后端,然后我想将它集成到我的应用程序中。
我正在使用 IMAP 从我的大学获取我所有的电子邮件,并使用一个名为 Emails 的 class 将它们插入到一个列表中,其中包含主题、日期、发件人、收件人和正文(所有字符串类型)等参数。
List emails;
Future<EMails> getEmails() async {
ImapFolder inbox = await client.getFolder("inbox");
EMails list;
for (var i = inbox.mailCount; i > 0; i--) {
list.subject = await inbox.fetch(["BODY.PEEK[HEADER.FIELDS (SUBJECT)]"],
messageIds: [i]) as String; //gets the subject
list.date = await inbox.fetch(["BODY.PEEK[HEADER.FIELDS (Date)]"],
messageIds: [i]) as String; //gets the Date
list.from = await inbox.fetch(["BODY.PEEK[HEADER.FIELDS (From)]"],
messageIds: [i]) as String; //gets the From
list.to =
await inbox.fetch(["BODY.PEEK[HEADER.FIELDS (To)]"], messageIds: [i])
as String; //gets the To
list.body = await inbox.fetch(["RFC822.TEXT"], messageIds: [i]) as String;
emails.add(list);
}
return list;
}
问题是我无法将获取的数据转换为字符串。
https://i.imgur.com/vP91ZG1.png
.fetch returns 一个未来,但看起来你还没有等待它。在每个 inbox.fetch
.
前添加 await
这记录在 https://pub.dev/documentation/imap_client/latest/imap_client/ImapFolder-class.html
.fetch returns 地图>
Map<int, Map<String, dynamic>> subject = await inbox.fetch(["BODY.PEEK[HEADER.FIELDS (SUBJECT)]"],messageIds: [i]);
var mapSubjectEmail = subject[i];
var mapEmail = mapSubjectEmail.values;
var subjectEmail = mapEmail.first as String;
我正在尝试在 Flutter 中创建一个邮件应用程序,现在我正在测试后端,然后我想将它集成到我的应用程序中。
我正在使用 IMAP 从我的大学获取我所有的电子邮件,并使用一个名为 Emails 的 class 将它们插入到一个列表中,其中包含主题、日期、发件人、收件人和正文(所有字符串类型)等参数。
List emails;
Future<EMails> getEmails() async {
ImapFolder inbox = await client.getFolder("inbox");
EMails list;
for (var i = inbox.mailCount; i > 0; i--) {
list.subject = await inbox.fetch(["BODY.PEEK[HEADER.FIELDS (SUBJECT)]"],
messageIds: [i]) as String; //gets the subject
list.date = await inbox.fetch(["BODY.PEEK[HEADER.FIELDS (Date)]"],
messageIds: [i]) as String; //gets the Date
list.from = await inbox.fetch(["BODY.PEEK[HEADER.FIELDS (From)]"],
messageIds: [i]) as String; //gets the From
list.to =
await inbox.fetch(["BODY.PEEK[HEADER.FIELDS (To)]"], messageIds: [i])
as String; //gets the To
list.body = await inbox.fetch(["RFC822.TEXT"], messageIds: [i]) as String;
emails.add(list);
}
return list;
}
问题是我无法将获取的数据转换为字符串。 https://i.imgur.com/vP91ZG1.png
.fetch returns 一个未来,但看起来你还没有等待它。在每个 inbox.fetch
.
await
这记录在 https://pub.dev/documentation/imap_client/latest/imap_client/ImapFolder-class.html
.fetch returns 地图>
Map<int, Map<String, dynamic>> subject = await inbox.fetch(["BODY.PEEK[HEADER.FIELDS (SUBJECT)]"],messageIds: [i]);
var mapSubjectEmail = subject[i];
var mapEmail = mapSubjectEmail.values;
var subjectEmail = mapEmail.first as String;