Advertisement
Guest User

Untitled

a guest
Oct 14th, 2012
341
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 2.52 KB | None | 0 0
  1. #include <a_samp>
  2. #include <a_http>
  3.  
  4. #if ( !defined MAILER_MAX_MAIL_SIZE )
  5.     #define MAILER_MAX_MAIL_SIZE  (1024)
  6. #endif
  7.  
  8. #if ( !defined MAILER_URL )
  9.     #error Please define MAILER_URL before including the mailer include.
  10. #endif
  11.  
  12. stock SendMail( const szReceiver[ ], const szSenderMail[ ], const szSenderName[ ], const szSubject[ ], const szMessage[ ] )
  13. {
  14.     new
  15.         szBuffer[ MAILER_MAX_MAIL_SIZE ] = "t=",
  16.         iPos    = strlen( szBuffer ),
  17.         iLength = strlen( szReceiver )
  18.     ;
  19.    
  20.     memcpy( szBuffer, szReceiver, iPos * 4, ( iLength + 1 ) * 4 );
  21.    
  22.     StringURLEncode( szBuffer[ iPos ], 1024 - iPos );
  23.    
  24.     strcat( szBuffer, "&f=" );
  25.    
  26.     iPos    = strlen( szBuffer );
  27.     iLength = strlen( szSenderName );
  28.    
  29.     memcpy( szBuffer, szSenderName, iPos * 4, ( iLength + 1 ) * 4 );
  30.    
  31.     StringURLEncode( szBuffer[ iPos ], 1024 - iPos );
  32.    
  33.     strcat( szBuffer, "&n=" );
  34.    
  35.     iPos    = strlen( szBuffer );
  36.     iLength = strlen( szSenderMail );
  37.    
  38.     memcpy( szBuffer, szSenderMail, iPos * 4, ( iLength + 1 ) * 4 );
  39.    
  40.     StringURLEncode( szBuffer[ iPos ], 1024 - iPos );
  41.    
  42.     strcat( szBuffer, "&s=" );
  43.    
  44.     iPos    = strlen( szBuffer );
  45.     iLength = strlen( szSubject );
  46.    
  47.     memcpy( szBuffer, szSubject, iPos * 4, ( iLength + 1 ) * 4 );
  48.    
  49.     StringURLEncode( szBuffer[ iPos ], 1024 - iPos );
  50.    
  51.     strcat( szBuffer, "&m=" );
  52.    
  53.     iPos    = strlen( szBuffer );
  54.     iLength = strlen( szMessage );
  55.    
  56.     memcpy( szBuffer, szMessage, iPos * 4, ( iLength + 1 ) * 4 );
  57.    
  58.     StringURLEncode( szBuffer[ iPos ], 1024 - iPos );
  59.    
  60.     HTTP( 0xD00D, HTTP_POST, MAILER_URL, szBuffer, "OnMailScriptResponse" );
  61. }
  62.  
  63. forward OnMailScriptResponse( iIndex, iResponseCode, const szData[ ] );
  64. public  OnMailScriptResponse( iIndex, iResponseCode, const szData[ ] )
  65. {
  66.     if ( szData[ 0 ] )
  67.         printf( "Mailer script says: %s", szData );
  68. }
  69.  
  70. stock StringURLEncode( szString[ ], iSize = sizeof( szString ) )
  71. {
  72.     for ( new i = 0, l = strlen( szString ); i < l; i++ )
  73.     {
  74.         switch ( szString[ i ] )
  75.         {
  76.             case '!', '(', ')', '\'', '*',
  77.                  '0' .. '9',
  78.                  'A' .. 'Z',
  79.                  'a' .. 'z':
  80.             {
  81.                 continue;
  82.             }
  83.            
  84.             case ' ':
  85.             {
  86.                 szString[ i ] = '+';
  87.                
  88.                 continue;
  89.             }
  90.         }
  91.        
  92.         new
  93.             s_szHex[ 8 ]
  94.         ;
  95.        
  96.         if ( i + 3 >= iSize )
  97.         {
  98.             szString[ i ] = EOS;
  99.            
  100.             break;
  101.         }
  102.        
  103.         if ( l + 3 >= iSize )
  104.             szString[ iSize - 3 ] = EOS;
  105.        
  106.         format( s_szHex, sizeof( s_szHex ), "%02h", szString[ i ] );
  107.        
  108.         szString[ i ] = '%';
  109.        
  110.         strins( szString, s_szHex, i + 1, iSize );
  111.        
  112.         l += 2;
  113.         i += 2;
  114.        
  115.         if ( l > iSize - 1 )
  116.             l = iSize - 1;
  117.     }
  118. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement