shape1
shape2
shape3
shape4
shape7
shape8

Отправка сообщений на электронную почту

Статус
Закрыто для дальнейших ответов.

Wuzi

Новичок
Пользователь
28.01.2014
12
13
0
Доброго времени суток. В этом уроке я расскажу как отправлять сообщение прямо с сервера.

Установка функций:

В начало мода/скрипта после инклудов:

#include <a_http>

#define MAILER_URL "путь к .php файлу"
#define MAILER_MAX_MAIL_SIZE (1024) 
В любое место мода/скрипта:

forward OnMailScriptResponse(iIndex, iResponseCode, const szData[ ]);
public OnMailScriptResponse(iIndex, iResponseCode, const szData[ ])
{
if(szData[ 0 ]) printf( "Mailer script says: %s", szData );
}

stock SendMail(const szReceiver[ ], const szSenderMail[ ], const szSenderName[ ], const szSubject[ ], const szMessage[ ])
{
new szBuffer[ MAILER_MAX_MAIL_SIZE ] = "t=",
iPos = strlen( szBuffer ),
iLength = strlen( szReceiver );

memcpy( szBuffer, szReceiver, iPos * 4, ( iLength + 1 ) * 4 );

StringURLEncode( szBuffer[ iPos ], 1024 - iPos );

strcat( szBuffer, "&f=" );

iPos = strlen( szBuffer );
iLength = strlen( szSenderName );

memcpy( szBuffer, szSenderName, iPos * 4, ( iLength + 1 ) * 4 );

StringURLEncode( szBuffer[ iPos ], 1024 - iPos );

strcat( szBuffer, "&n=" );

iPos = strlen( szBuffer );
iLength = strlen( szSenderMail );

memcpy( szBuffer, szSenderMail, iPos * 4, ( iLength + 1 ) * 4 );

StringURLEncode( szBuffer[ iPos ], 1024 - iPos );

strcat( szBuffer, "&s=" );

iPos = strlen( szBuffer );
iLength = strlen( szSubject );

memcpy( szBuffer, szSubject, iPos * 4, ( iLength + 1 ) * 4 );

StringURLEncode( szBuffer[ iPos ], 1024 - iPos );

strcat( szBuffer, "&m=" );

iPos = strlen( szBuffer );
iLength = strlen( szMessage );

memcpy( szBuffer, szMessage, iPos * 4, ( iLength + 1 ) * 4 );

StringURLEncode( szBuffer[ iPos ], 1024 - iPos );

HTTP( 0xD00D, HTTP_POST, MAILER_URL, szBuffer, "OnMailScriptResponse" );
}

stock StringURLEncode(szString[ ], iSize = sizeof( szString ))
{
for ( new i = 0, l = strlen( szString ); i < l; i++ )
{
switch ( szString[ i ] )
{
case '!', '(', ')', '\'', '*',
'0' .. '9',
'A' .. 'Z',
'a' .. 'z':
{
continue;
}

case ' ':
{
szString[ i ] = '+';

continue;
}
}

new
s_szHex[ 8 ]
;

if ( i + 3 >= iSize )
{
szString[ i ] = EOS;

break;
}

if ( l + 3 >= iSize )
szString[ iSize - 3 ] = EOS;

format( s_szHex, sizeof( s_szHex ), "%02h", szString[ i ] );

szString[ i ] = '%';

strins( szString, s_szHex, i + 1, iSize );

l += 2;
i += 2;

if ( l > iSize - 1 )
l = iSize - 1;
}

Открываем текстовый документ и записываем в него:

<?php
ini_set( 'html_errors', false );

if ( empty( $_POST[ 't' ] ) || empty( $_POST[ 'f' ] ) || empty( $_POST[ 'n' ] ) || empty( $_POST[ 's' ] ) || empty( $_POST[ 'm' ] ) )
die( 'Error: Missing parameters.' );

mail(
$_POST[ 't' ],
utf8_encode( $_POST[ 's' ] ),
$_POST[ 'm' ],
implode(
"\r\n",
array
(
'From: "' . addslashes( $_POST[ 'f' ] ) . "\" <{$_POST[ 'n' ]}>",
"Reply-To: {$_POST['f']}",
"X-Mailer: PHP/" . phpversion( ),
)
)
);
?> 
Затем сохраняем файл в формате .php под название mail. После чего нам нужно загрузить его на хостинг.
Я рекомендую hostinger.ru для бесплатного хранения файлов.
 
Не забудьте в #define MAILER_URL заменить адрес загруженного файла 'mail.php' (http//: и www. писать не нужно)
Например: #define MAILER_URL "адрес-сайта.ru/mail.php"
 
Пример использования:
Код:
SendMail("mail получателя", "mail отправителя", "ник отправителя", "темя письма", "само сообщение");

Там где "mail отправителя"" можно написать любой mail или же просто поставить знак @
Автор: Essle

 
Последнее редактирование модератором:

LHTTD

Темная сторона Форума
Пользователь
08.10.2014
325
43
0
Какой хостинг использовать? :D83DDE09:

 

LHTTD

Темная сторона Форума
Пользователь
08.10.2014
325
43
0
A

Amfy

Гость
Гость
Какие вам ссылки? Любой хост с поддержкой php

 
Статус
Закрыто для дальнейших ответов.