Wysyłanie danych na maila - proszę o sprawdzenie kodu

0

skleiłem kod z kilku tutoriali. chcę żeby program wysyłał mi na maila wpisane dane w polach. nie wiem gdzie jest błąd, w kodzie źródłowym czy m konfiguracji smtp, może jakiś firewall? czy problem gdzieś w csmtp? problem w tym, że maile nie dochodzą. program kompiluje się, uruchamia, niby wszystko ok ale mail nie z tekstem nie dochodzi...
może ktoś rzucić okiem? na pewno zajmie wam to krótką chwilę;)

 #define _WINSOCKAPI_
#include "main.h"
#include "CSmtp.h"
HINSTANCE hInstance;
/////////////HWND////////////////////
HWND hLogo;
HWND hwnd;
HWND imie_static;
HWND imie_textbox;
HWND wzrost_static;
HWND wzrost_textbox;
HWND A_static;
HWND A_textbox;
HWND button;
/////////////////////////////////////
void main::createWindow()
{
	classname = TEXT("123456765432ASASDFGHGFDSWQA");

	WNDCLASSEX wc;
    wc.cbSize = sizeof( WNDCLASSEX );
    wc.style = 0;
	wc.lpfnWndProc = WndProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hInstance;
    wc.hIcon = LoadIcon( NULL, IDI_APPLICATION );
    wc.hCursor = LoadCursor( NULL, IDC_ARROW );
    wc.hbrBackground =( HBRUSH )( COLOR_WINDOW + 0 );
    wc.lpszMenuName = NULL;
    wc.lpszClassName = classname;
    wc.hIconSm = LoadIcon( NULL, IDI_APPLICATION );
    
	RegisterClassEx(&wc);
	int x = GetSystemMetrics(SM_CXSCREEN);
	int y = GetSystemMetrics(SM_CYSCREEN);
	hwnd = CreateWindowEx(WS_EX_CLIENTEDGE,classname,TEXT("imie i wzrost"),WS_SYSMENU|
	WS_MINIMIZEBOX|WS_CAPTION|WS_POPUP,(x-300)/2,(y-360)/2,
		300,360,0,0,hInstance,0);

    ShowWindow(hwnd,SW_SHOW);
}

void main::createButton()
{
	HFONT hNormalFont =( HFONT ) GetStockObject( DEFAULT_GUI_FONT );
	//SendMessage(hLogo,WM_SETFONT,(WPARAM)hNormalFont,0);
	
	HFONT hFont;
	hFont = CreateFont(22,0,0,0,0,0,0,0,EASTEUROPE_CHARSET,0,0,0,0,TEXT("Calibri"));
	hLogo = CreateWindowEx(0,TEXT("STATIC"),TEXT("wpisz dane i wyślij "),WS_CHILD|WS_VISIBLE|
    SS_LEFT,60,20,200,200,hwnd, 0,hInstance,0);
	SendMessage(hLogo,WM_SETFONT,WPARAM(hFont),TRUE);
    
	imie_static = CreateWindowEx(0,TEXT("STATIC"),TEXT("Imie:"),WS_CHILD|WS_VISIBLE|
		SS_LEFT,5,100,40,20,hwnd,0,hInstance,0);
	SendMessage(imie_static,WM_SETFONT,(WPARAM)hNormalFont,0);
	imie_textbox = CreateWindowEx(WS_EX_CLIENTEDGE,TEXT("EDIT"),0,WS_CHILD|WS_VISIBLE
		|ES_AUTOHSCROLL,40,97,240,20,hwnd,0,hInstance,0);
    SendMessage(imie_textbox,WM_SETFONT,(WPARAM)hNormalFont,0);
   	wzrost_static = CreateWindowEx(0,TEXT("STATIC"),TEXT("Wzrost:"),WS_CHILD|WS_VISIBLE|SS_LEFT,
		5,160,40,20,hwnd,0,hInstance,0);
    SendMessage(wzrost_static,WM_SETFONT,(WPARAM)hNormalFont,0);
	wzrost_textbox = CreateWindowEx(WS_EX_CLIENTEDGE,TEXT("EDIT"),0,WS_CHILD|WS_VISIBLE|ES_AUTOHSCROLL,
		40,157,240,20,hwnd,0,hInstance,0);
	SendMessage(wzrost_textbox,WM_SETFONT,(WPARAM)hNormalFont,0);
	button = CreateWindowEx(0,TEXT("BUTTON"),TEXT("Wyślij"),WS_CHILD|
		WS_VISIBLE,100,250,100,50,hwnd,0,hInstance,0);
    SendMessage(button,WM_SETFONT,(WPARAM)hNormalFont,0);
}

LRESULT CALLBACK main::WndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
	switch(msg)
	{
		case WM_COMMAND:
			if((HWND)lParam==button)
			{
				HANDLE hThread = CreateThread(0,0,&ThreadProc,0,0,0);
				MessageBox(hwnd,TEXT("Gotowe! Dziekuje"),TEXT(""),MB_OK|MB_ICONINFORMATION );
			}
			break;
		case WM_CLOSE:
		DestroyWindow(hwnd);
		break;

		case WM_DESTROY:
		PostQuitMessage(0);
		break;

		default:
		return DefWindowProc(hwnd,msg,wParam,lParam);
	}

	return 0;
}

DWORD WINAPI main::ThreadProc(LPVOID p)
{
	int imie_length = GetWindowTextLength(imie_textbox);
	CHAR * imie = new CHAR[imie_length+1];
	GetWindowTextA(imie_textbox,imie,imie_length+1);

	
	int wzrost_length = GetWindowTextLength(wzrost_textbox);
	CHAR * wzrost = new CHAR[wzrost_length+1];
	GetWindowTextA(wzrost_textbox,wzrost,wzrost_length+1);

	int A_length = GetWindowTextLength(A_textbox+1);
	CHAR * A = new CHAR[A_length+1];
	GetWindowTextA(A_textbox,A,A_length);
    try
	{
		CSmtp mail;
		mail.SetSMTPServer("smtp.O2.pl",587); 
		mail.SetSecurityType(USE_SSL); 
		mail.SetLogin("[email protected]");
		mail.SetPassword("mojehaslo");
		mail.SetSenderName("mojmail");
		mail.SetSenderMail("[email protected]");
		mail.SetReplyTo("[email protected]");
		mail.SetSubject("imie i wzrost");
		mail.AddRecipient("[email protected]"); 
		mail.SetXPriority(XPRIORITY_NORMAL);
		mail.SetXMailer("MAIL ");

		CHAR computername1[MAX_COMPUTERNAME_LENGTH + 1];
		DWORD Size = MAX_COMPUTERNAME_LENGTH + 1;
		GetComputerNameA(computername1,&Size);
		mail.AddMsgLine("Computer Name: ");
		mail.AddMsgLine(computername1);
		mail.AddMsgLine("Imie: ");
		mail.AddMsgLine(imie);
		mail.AddMsgLine("Wzrost: ");
		mail.AddMsgLine(wzrost);
		mail.Send();
	}
	 catch(ECSmtp e)
	{
		
	}

	ExitThread(0);
}

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
	main m;
	m.createWindow();
	m.createButton();
	while( GetMessage(&m.msg,0,0,0))
    {
        TranslateMessage(&m.msg);
        DispatchMessage(&m.msg);
    }
	return 0;
}

może problem jest tutaj?
1>main.cpp(138): warning C4101: 'e' : unreferenced local variable

czyli catch(ECSmtp e)??

2
#include "main.h"

Przydałoby się kod podać tak, by dał się skompilować…
i opisz co się dzieje, a co powinno. A nie tylko „nie działa”.

wc.hbrBackground =( HBRUSH )( COLOR_WINDOW + 0 );

Nie wiem skąd ci się wzięło to +0, ale powinno być +1.

    hFont = CreateFont(22,0,0,0,0,0,0,0,EASTEUROPE_CHARSET,0,0,0,0,TEXT("Calibri"));

Robisz to za każdym razem, powodując wyciek. Raz wywołaj CreateFont (a lepiej CreateFontIndirect, nie trzeba podawać tylu bzdurnych zer) i używaj już potem tego samego hFont.
Poza tym Calibri nie używa się do okienek; zgodnie z wytycznymi dla XP powinna być Tahoma, a dla Visty i nowszych Segoe UI.

void main::createButton()

Nazwa metody nieprawidłowa: metoda robi znacznie więcej niż tworzenie przycisku.

        case WM_CLOSE:
        DestroyWindow(hwnd);
        break;

To można wyrzucić, DefWindowProc zrobi to samo.

return 0;

Na końcu WinMain powinno być

return m.msg.wParam;

By zwrócić wartość podaną w PostQuitMessage. Akurat i tak będzie zero, ale chodzi o zachowanie konwencji.

1 użytkowników online, w tym zalogowanych: 0, gości: 1