MFC を使用している方法では,
LateDelete ld ; // MultiByte の必要があるようなので,UNICODE の時のバッファをここに登録
// 添付ファイルの準備
CArray<MapiFileDesc,MapiFileDesc> fileDescA ;
int fileCount = 0 ;
int index = 0 ;
for (index=0 ; index<PathNames.GetSize() ; index++) {
CString pathName = PathNames[index] ;
if (::FileIsNothing (pathName)) { continue ; }
if (::FileIsDirectory(pathName)) { continue ; }
MapiFileDesc fileDesc ;
memset(&fileDesc,0,sizeof(MapiFileDesc)) ;
fileDesc.nPosition = (ULONG)-1 ;
#ifdef _UNICODE
fileDesc.lpszPathName = SendMail__ChangeMultiByte(PathNames[index],&ld) ;
fileDesc.lpszFileName = SendMail__ChangeMultiByte(FileNames[index],&ld) ;
#else
fileDesc.lpszPathName = LPSTR(LPCTSTR(PathNames[index])) ;
fileDesc.lpszFileName = LPSTR(LPCTSTR(FileNames[index])) ;
#endif
fileDescA.Add(fileDesc) ;
fileCount++ ;
}
MFC を使用しないコードは,
std::vector<MapiFileDesc> fileDescA ;
std::vector<std::string> pathNameA ;
std::vector<std::string> fileNameA ;
int index = 0 ;
{
for (index=0 ; index<PathNames.GetSize() ; index++) {
{
tstring pathName = PathNames[index] ;
if (::File_IsNothing (pathName)) { continue ; }
if (::File_IsDirectory(pathName)) { continue ; }
}
std::string pathName= ::To__string(PathNames[index]) ;
std::string fileName= ::To__string(FileNames[index]) ;
pathNameA.push_back(pathName) ;
fileNameA.push_back(fileName) ;
}
{
for (size_t index=0 ; index<pathNameA.size()&&index<fileNameA.size() ; index++) {
MapiFileDesc fileDesc ;
memset(&fileDesc,0,sizeof(MapiFileDesc)) ;
fileDesc.nPosition = (ULONG)-1 ;
fileDesc.lpszPathName = &(pathNameA[index])[0] ;
fileDesc.lpszFileName = &(fileNameA[index])[0] ;
fileDescA.push_back(fileDesc) ;
}
}
}
詳しくは見てないが,幾つかの方法が書かれていたので
Sending Email with MAPI
MapiRecipDesc.lpszAddress の “smtp:”
以前コードを直したのが 2002/4 であまり情報がなかった様に思う.
個人的に書いた内容が「Outlook で配信不能になる」
参考になりそうな所
Email mit Dateien perWinAPI versenden??
MAPISendMail
MSDN MapiRecipDesc structure
Sending email using MAPI causes error on ‘ResolveName’ function in Window7
MAPI を使用した複数ファイルの送信
S_Mail.hxx
[…] 4 年位前に書き直した MAPI を使用したコードではチェックしない様にしたが,古いコードもまだ存在する. それらのコードは MFC のコード docmapi.cpp を参考にしたもの. VC 2022 のコードを見ると,Win.ini の [MAIL] の MAPI をチェックしている. 最初のコードを書いた 20 年以上前(VC 98)とそれほど変わっていない. […]
[…] 2018/04/06 新しく書き直し. […]
[…] Outlook では MAPI サポートがなくなった? 新しい Outlook で使用できない機能: 拡張性 新しい Outlook […]
[…] 4 年位前に書き直した MAPI を使用したコードではチェックしない様にしたが,古いコードもまだ存在する. それらのコードは MFC のコード docmapi.cpp を参考にしたもの. VC 2022 のコードを見ると,Win.ini の [MAIL] の MAPI をチェックしている. 最初のコードを書いた 20 年以上前(VC 98)とそれほど変わっていない. […]