Вот макрос для Outlook:
Код: Выделить всё
Attribute VB_Name = "CountMailDays"
Const Multiplier = 1000
Sub CountEmailDays()
Dim objOutlook As Object, objnSpace As Object, objFolder As MAPIFolder
Dim EmailCount As Integer
Set objOutlook = CreateObject("Outlook.Application")
Set objnSpace = objOutlook.GetNamespace("MAPI")
On Error Resume Next
'Get active folder
Set objFolder = Application.ActiveExplorer.CurrentFolder
If Err.Number <> 0 Then
Err.Clear
MsgBox "No such folder."
Exit Sub
End If
EmailCount = objFolder.Items.Count
Dim emailDays, delta As Long
Dim myItems As Outlook.Items
Dim msg As String
Set myItems = objFolder.Items
myItems.SetColumns ("ReceivedTime")
' Determine date of each message:
emailDays = 0
For Each myItem In myItems
delta = Multiplier * (Now - myItem.ReceivedTime)
emailDays = emailDays + delta
Next myItem
' Output results:
MsgBox objFolder.FullFolderPath & ":" & vbCrLf & vbCrLf & emailDays / Multiplier & " письмодней инбокса, всего " & EmailCount & " писем."
Set objFolder = Nothing
Set objnSpace = Nothing
Set objOutlook = Nothing
End Sub
(оригинал здесь)
Код: Выделить всё
function unreadEmailReport() {
//Переменная для сбора входящих
var threads = GmailApp.getInboxThreads();
//Проверка наличия непрочитанных писем
if(GmailApp.getInboxUnreadCount()>0){
//Переменные для сбора информации о письмах
var messages = threads[0].getMessages();
var senderEmail = messages[0].getFrom();
//Задаем адрес назначения для отправки собранной статистики
var emailAddress = "хх@хх.хх" ;
//Переменные для получения текущего времени
var datenow = new Date;
var currentTime = datenow.toTimeString();
//Переменную, где будет храниться собираемая информация
var Content = ContentService.createTextOutput();
//переменные письмодней
var emailDays = 0;
var delta = 0;
var Multiplier = 86400000; //количество миллисекунд в сутках, т.к. скрипт обрабатывает даты в мс и результат, тоже в мс
var messageTime;
//Обработка папки "Входящие"
for (var i = 0; i < threads.length; i++) {
messages = threads[i].getMessages();
senderEmail = messages[0].getFrom();
messageTime = messages[0].getDate();
//Считаем письмодни
delta = (datenow - messageTime)/Multiplier;
emailDays = emailDays + delta;
Content.append(i + ". " + threads[i].getFirstMessageSubject() + " от:" + senderEmail + '\n');
}
Content.append("Итого письмодней: " + emailDays.toFixed(4) + '\n');
//Отправка самого письма
GmailApp.sendEmail(emailAddress,"Тема письма " + currentTime, Content.getContent());
}
}
Есть еще одна версия для GMail от Рашита Азизбаева
А еще @VPetukhov написал для этого дела аддон для Thunderbird:
https://github.com/VPetukhov/MailDayExtension
А вот отзывы и развитие идеи: