Как я программно посылаю электронное письмо таким же образом, что я могу “Отправить Адресату” в Windows Explorer?

#!/bin/bash

# 90 days = 7776000 seconds
INTERVAL=7776000

git for-each-ref refs/remotes | while read commit type ref;do
    current=$(date +%s)
    headcd=$(git log -1 --pretty=%cd --date=format:%s ${commit})
    if [[ $((current-headcd)) -ge ${INTERVAL} ]];then
        echo $ref
    fi
done

Получить текущую дату и дату фиксации головы каждого реффи в формате эпохи. Рассчитайте интервал и напечатайте ссылки, чей интервал больше или равен 7776000 секунд.

9
задан Nakilon 10 February 2014 в 17:27
поделиться

4 ответа

Это - мое решение MAPI:

#include <tchar.h>
#include <windows.h>
#include <mapi.h>
#include <mapix.h>

int _tmain( int argc, wchar_t *argv[] )
{
    HMODULE hMapiModule = LoadLibrary( _T( "mapi32.dll" ) );

    if ( hMapiModule != NULL )
    {
        LPMAPIINITIALIZE lpfnMAPIInitialize = NULL;
        LPMAPIUNINITIALIZE lpfnMAPIUninitialize = NULL;
        LPMAPILOGONEX lpfnMAPILogonEx = NULL;
        LPMAPISENDDOCUMENTS lpfnMAPISendDocuments = NULL;
        LPMAPISESSION lplhSession = NULL;

        lpfnMAPIInitialize = (LPMAPIINITIALIZE)GetProcAddress( hMapiModule, "MAPIInitialize" );
        lpfnMAPIUninitialize = (LPMAPIUNINITIALIZE)GetProcAddress( hMapiModule, "MAPIUninitialize" );
        lpfnMAPILogonEx = (LPMAPILOGONEX)GetProcAddress( hMapiModule, "MAPILogonEx" );
        lpfnMAPISendDocuments = (LPMAPISENDDOCUMENTS)GetProcAddress( hMapiModule, "MAPISendDocuments" );

        if ( lpfnMAPIInitialize && lpfnMAPIUninitialize && lpfnMAPILogonEx && lpfnMAPISendDocuments )
        {
            HRESULT hr = (*lpfnMAPIInitialize)( NULL );

            if ( SUCCEEDED( hr ) )
            {
                hr = (*lpfnMAPILogonEx)( 0, NULL, NULL, MAPI_EXTENDED | MAPI_USE_DEFAULT, &lplhSession );

                if ( SUCCEEDED( hr ) )
                {
                    // this opens the email client with "C:\attachment.txt" as an attachment
                    hr = (*lpfnMAPISendDocuments)( 0, ";", "C:\\attachment.txt", NULL, NULL );

                    if ( SUCCEEDED( hr ) )
                    {
                        hr = lplhSession->Logoff( 0, 0, 0 );
                        hr = lplhSession->Release();
                        lplhSession = NULL;
                    }
                }
            }

            (*lpfnMAPIUninitialize)();
        }

        FreeLibrary( hMapiModule );
    }

    return 0;
}
8
ответ дан 4 December 2019 в 20:25
поделиться

Можно использовать стандарт "mailto": команда в оболочке окон. Это выполнит почтовый клиент по умолчанию.

2
ответ дан 4 December 2019 в 20:25
поделиться

Следующий пример C++ показывает, как вызвать почтовый ярлык SendTo, используемый Windows Explorer:

http://www.codeproject.com/KB/shell/sendtomail.aspx

1
ответ дан 4 December 2019 в 20:25
поделиться

Необходимо будет реализовать клиент MAPI. Это позволит Вам предварительно заполнить документ, прикрепить вложения, и т.д. прежде, чем представить сообщение пользователю для отсылки. Можно использовать банк сообщений по умолчанию для использования их почтового клиента по умолчанию.

0
ответ дан 4 December 2019 в 20:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: