Esempio n. 1
0
status_t
AutoConfig::GetInfoFromMailAddress(const char* email, provider_info *info)
{
	BString provider = ExtractProvider(email);

	// first check the database
	if (LoadProviderInfo(provider, info) == B_OK)
		return B_OK;

	// fallback try to read MX record
	if (GetMXRecord(provider.String(), info) == B_OK) 
		return B_ENTRY_NOT_FOUND;

	// if no MX record received guess a name
	GuessServerName(provider.String(), info);
	return B_ENTRY_NOT_FOUND;
}
Esempio n. 2
0
/*
 *	MXレコードを取得して、そのメールサーバーに接続して
 *	メール送信をする
 */
BOOL GetMXAndSendMail(HWND hDlg,MAILDATA *mdat,BOOL attach_exist)
{
	MXRECORD mx[20];
	LPMXRECORD lpmx;
	char domain[256]="";
	char dns_addr[256]="";

	lpmx = mx;

	/*送信先アドレスからMXレコードを取得*/
	GetDlgItemText(hDlg,IDC_DNSSERVER,dns_addr,sizeof(dns_addr));
	SplitDomainName(mdat->to,domain);
	StringTableSendMessage(hDlg,WM_SENDMAIL,IDS_QUERY_DNS_SERVER);
	Sleep(300);		/*かっこよく見せるため、抜かしても構わない。*/
	
	if(GetMXRecord(domain,dns_addr,lpmx) != GETMX_ERROR_SUCCESS){
		StringTableSendMessageBeep(hDlg,WM_SENDMAIL,
			IDS_ERROR_DNS_SERVER,MB_ICONEXCLAMATION);
		return FALSE;
	}

	/*MXレコードを頼りに1つずつ順番にメール送信、成功したらループを抜ける*/
	while(lpmx->flag != FALSE){
		StringTableSendMessage(hDlg,WM_SENDMAIL,IDS_SENDING_MAIL);

		if(SendMail(lpmx->domain,mdat,attach_exist,"===SMILE===")
							== SENDMAIL_ERROR_SUCCESS){
			StringTableSendMessageBeep(hDlg,WM_SENDMAIL,
				IDS_SUCCESS_SENDMAIL,MB_OK);
			return TRUE;
		}
		lpmx++;
	}
	/*ここに処理がくるということは、失敗した時*/
	StringTableSendMessageBeep(hDlg,WM_SENDMAIL,
		IDS_ERROR_SENDMAIL,MB_ICONEXCLAMATION);

	return FALSE;
}