Outlook で配信不能になる
2018/04/06 新しく書き直し.
配信不能 : Subject
システム管理者
送信日時 2010/02/19(金) 21:20
宛先 **********
このメールは、受信者全員または一部に届きませんでした。
件名: Subject
送信日時: 2010/02/19 21:20
以下の受信者にメールを配信できません:
‘user@*******.com’ 2010/02/19 21:20
この受信者へ配信できる電子メール アカウントはありません。
受信者のメールアドレスを設定する時,_T("smtp:") を付加する.
// DOCMAPI.CPP CDocument::OnFileSendMail
//*******************************************************************************
// 関数名 :ファイルの送信
// 作成日 :’06/06/23
//*******************************************************************************
BOOL SendMail::Send (void) const
{
if (!IsSupport()) { return FALSE ; }
CheckSizeAlert() ;
// MultiByte の必要があるようなので,UNICODE の時のバッファをここに登録する
LateDelete ld ;
// 添付ファイルの準備
int fileCount = 0 ;
CArray<MapiFileDesc,MapiFileDesc> fileDescA ;
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++ ;
}
// 受信者の準備
int recipCount = 0 ;
CArray<MapiRecipDesc,MapiRecipDesc> recipDescA ;
CStringArray recipName ;
CStringArray recipAddr ;
for (index=0 ; index<Recipient.GetSize() ; index++) {
recipName.SetAtGrow(index,Recipient[index]) ;
recipAddr.SetAtGrow(index,Recipient[index]) ;
if (IsAddressAddSMTP()) {
recipAddr.SetAtGrow(index,_T("smtp:")+Recipient[index]) ;
}
}
for (index=0 ; index<Recipient.GetSize() ; index++) {
MapiRecipDesc recipDesc ;
memset(&recipDesc,0,sizeof(MapiRecipDesc)) ;
recipDesc.ulRecipClass = MAPI_TO ;
#ifdef _UNICODE
recipDesc.lpszName = SendMail__ChangeMultiByte(recipName[index],&ld) ;
recipDesc.lpszAddress = SendMail__ChangeMultiByte(recipAddr[index],&ld) ;
#else
recipDesc.lpszName = (LPSTR)((LPCTSTR)(recipName[index])) ;
recipDesc.lpszAddress = (LPSTR)((LPCTSTR)(recipAddr[index])) ;
#endif
recipDescA.Add(recipDesc) ;
recipCount++ ;
}
MapiMessage message ;
memset(&message,0,sizeof(message)) ;
message.nFileCount = fileCount ;
message.lpFiles = fileDescA.GetData() ;
message.nRecipCount = recipCount ;
message.lpRecips = recipDescA.GetData() ;
#ifdef _UNICODE
message.lpszSubject = SendMail__ChangeMultiByte(GetSubject(), &ld) ;
message.lpszNoteText = SendMail__ChangeMultiByte(GetNoteText(), &ld) ;
#else
message.lpszSubject = LPSTR(LPCTSTR(Subject)) ;
message.lpszNoteText = LPSTR(LPCTSTR(NoteText)) ;
#endif
CWnd* mainWnd = AfxGetMainWnd() ;
#if(_MFC_VER >= 0x0700)
ULONG_PTR hWnd = (ULONG_PTR)mainWnd->GetSafeHwnd() ;
#else
ULONG hWnd = (ULONG) mainWnd->GetSafeHwnd() ;
#endif
int nError = pSendMail(0, hWnd,&message, MAPI_LOGON_UI|MAPI_DIALOG, 0);
if (nError != SUCCESS_SUCCESS &&
nError != MAPI_USER_ABORT &&
nError != MAPI_E_LOGIN_FAILURE) {
AfxMessageBox(AFX_IDP_FAILED_MAPI_SEND) ;
Copy() ;
}
return TRUE ;
}