Пример #1
0
bool MailSender::sendHeader()
{
    std::string msg;

    msg  = "MAIL FROM: ";
    msg += getSenderAddress() + "\r\n";
    if(!sendRequest(send_mail_cmd, msg))
    	return false;
    if(!rcvResponse("250"))
    	return false;

    _mail->traverseReceiver();
    while ( _mail->hasMoreReceiver() )
    {
        msg  = "RCPT TO: ";
        msg += _mail->nextReceiverAddress() + "\r\n";
        if(!sendRequest(send_rcpt_cmd, msg))
        	return false;
        if(!rcvResponse("250"))
        	return false;
    }

    msg  = "DATA\r\n";
    if(!sendRequest(send_data_cmd, msg))
    	return false;
    if(!rcvResponse("354"))
    	return false;

    return sendRequest(send_header, _mail->getHeader());
}
Пример #2
0
void MailSender::quit()
{
    sendRequest(send_quit_cmd, "QUIT\r\n");
    rcvResponse("221");

    closesocket(_socket);
}
Пример #3
0
void MailSender::login()
{
    std::string msg;

    msg = "AUTH LOGIN\r\n";
    sendRequest(send_auth_cmd, msg);
    rcvResponse("334");

    msg = MUtils::Base64Helper::encode(_user_name) + "\r\n";
    sendRequest(send_username, msg);
    rcvResponse("334");

    msg = MUtils::Base64Helper::encode(_user_pwd) + "\r\n";
    sendRequest(send_password, msg);
    rcvResponse("235");
}
Пример #4
0
bool MailSender::quit()
{
    if(!sendRequest(send_quit_cmd, "QUIT\r\n"))
    	return false;
    if(!rcvResponse("221"))
    	return false;

    closesocket(_socket);
    return true;
}
Пример #5
0
bool MailSender::login()
{
    std::string msg;

    msg = "AUTH LOGIN\r\n";
    if(!sendRequest(send_auth_cmd, msg))
    	return false;
    if(!rcvResponse("334"))
    	return false;

    msg = MUtils::Base64Helper::encode(_user_name) + "\r\n";
    if(!sendRequest(send_username, msg))
    	return false;
    if(!rcvResponse("334"))
    	return false;

    msg = MUtils::Base64Helper::encode(_user_pwd) + "\r\n";
    if(!sendRequest(send_password, msg))
    	return false;
    return rcvResponse("235");
}
Пример #6
0
void MailSender::hello()
{
    char local_host[MAX_BUFFER_SIZE];
    if ( gethostname(local_host, MAX_BUFFER_SIZE) != 0 )
    {
        throw MailException("Get local host name error");
    }

    std::string msg;

    msg  = "HELO ";
    msg += std::string(local_host) + "\r\n";
    sendRequest(send_helo_cmd, msg);
    rcvResponse("250");
}
Пример #7
0
void MailSender::sendHeader()
{
    MailString msg;

    msg  = _T("MAIL FROM: ");
    msg += _mail->getSenderAddress() + _T("\r\n");
    sendRequest(send_mail_cmd, msg);
    rcvResponse(_T("250"));

    _mail->traverseReceiver();
    while ( _mail->hasMoreReceiver() )
    {
        msg  = _T("RCPT TO: ");
        msg += _mail->nextReceiverAddress() + _T("\r\n");
        sendRequest(send_rcpt_cmd, msg);
        rcvResponse(_T("250"));
    }

    msg  = _T("DATA\r\n");
    sendRequest(send_data_cmd, msg);
    rcvResponse(_T("354"));

    sendRequest(send_header, _mail->getHeader());
}
Пример #8
0
void MailSender::conn()
{
    struct hostent* host = gethostbyname(_server_name.c_str());
    if (host == 0)
    {
        throw MailException("Get server infomation error");
    }

    _socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

    struct sockaddr_in server_addr;
    server_addr.sin_family = AF_INET;
    server_addr.sin_addr.s_addr = *(ULONG *)host->h_addr_list[0];
    server_addr.sin_port = htons(SERVICE_PORT);

    connect(_socket, (struct sockaddr *)&server_addr, sizeof(server_addr));
    rcvResponse("220");
}
Пример #9
0
bool MailSender::hello()
{
    char local_host[MAX_BUFFER_SIZE];
    if ( gethostname(local_host, MAX_BUFFER_SIZE) != 0 )
    {
        // throw new MailException("Get local host name error");
        _err_message = "Get local host name error";
        return false;
    }

    std::string msg;

    msg  = "HELO ";
    msg += std::string(local_host) + "\r\n";
    if(!sendRequest(send_helo_cmd, msg))
    	return false;
    return rcvResponse("250");
}
Пример #10
0
void MailSender::hello()
{
    char local_host[MAX_BUFFER_SIZE];
    if ( gethostname(local_host, MAX_BUFFER_SIZE) != 0 )
    {
        throw MailException(_T("Get local host name error"));
    }

	int nDstLen = 0;
	TCHAR *plocal = M_A2T(local_host, MAX_BUFFER_SIZE, nDstLen);

    MailString msg;

    msg  = _T("HELO ");
    msg += MailString(plocal) + _T("\r\n");
    sendRequest(send_helo_cmd, msg);
    rcvResponse(_T("250"));
	delete[] plocal;
}
Пример #11
0
void MailSender::sendEnd()
{
    sendRequest(send_end, _mail->getEnd());
    rcvResponse("250");
}
Пример #12
0
bool MailSender::sendEnd()
{
    if(!sendRequest(send_end, _mail->getEnd()))
    	return false;
    return rcvResponse("250");
}