Дата: Понедельник, 01.07.2013, 12:14 | Сообщение # 1
Новичок
Зарегистрирован: 16.06.2013
Группа: Пользователи
Сообщений: 45
Статус: Offline
Делать было не чего, решил написать спаммер на smtp, но после не скольких сотен писем, мой аккаунт отправили в отпуск(в спам).Может кто знает как избежать этого?Или может есть другие почтовики, которые не отправляют в спам?Я пробывал рамблер и яндекс, все блочат. Жизнь сложна когда учишься на своих ошибках, а зачем учиться на своих, не проще ли на чужих?
Подскажите.пожалуйста,по отправке файла через SMTP, погуглив нашёл примерно такое,кидание компонентов на форму, как мне сделать, чтобы письмо отправлялось не на кнопку на форме, а при запуске приложения и отправлялось например через каждые пять минут или мне нужно делать его как консольное приложение, подскажите в какую сторону копать, всю голову уже сломал, в дельфи я не сильный спец.
type TForm1 = class(TForm) Button1: TButton; IdMessage1: TIdMessage; IdSMTP1: TIdSMTP; IdEncoderMIME1: TIdEncoderMIME; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
//Функция конвертирования в кодировку windows-1251 function ConvertToWIN1251(instr:string):string; begin result:='=?'+'Windows-1251'+'?B?'+form1.IdEncoderMIME1.Encode(instr)+'?='; end;
procedure TForm1.Button1Click(Sender: TObject); var attach: TidAttachment; begin
IdSMTP1.AuthenticationType:= atLogin; IdSMTP1.Username:='user@mail.ru'; //Логин IdSMTP1.Password:='password'; //Пароль IdSMTP1.Host:='smtp.mail.ru'; //Хост //Хосты: smtp.inbox.ru; smtp.list.ru; smtp.bk.ru; smtp.yandex.ru и т.д. IdSMTP1.Port:=25; //Порт (25 - по умолчанию) //Порты mail.ru: 587 и 2525 (без шифрования) или 465 (с шифрованием)
IdMessage1.CharSet:='windows-1251'; //Кодировка в теле сообщения IdMessage1.ContentType:='text/plain'; IdMessage1.Body.Add('Текст'); //Текст сообщения IdMessage1.Subject:=ConvertToWIN1251('Тема'); //Тема сообщения IdMessage1.From.Address:='user@mail.ru'; //Адрес отправителя //IdMessage1.From.Name:=ConvertToWIN1251('User'); //Имя отправителя IdMessage1.Recipients.EMailAddresses:='send_user@mail.ru'; //Кому отправить письмо (можно через запятую если несколько e-mail'ов) IdMessage1.IsEncoded:=true; //attach:=TIdAttachment.Create(IdMessage1.MessageParts,'Путь до файла'); //Вложение
try //Соединение с почтовым сервером IdSMTP1.Connect(); IdSMTP1.Send(IdMessage1); showmessage('Сообщение отправлено'); except showmessage('Ошибка при отправке сообщения'); end; //Отсоединяемся от почтового сервера IdSMTP1.Disconnect; end;
end.]
Сообщение отредактировал phl - Суббота, 25.01.2014, 00:21
вполне обычный код, правда я не совсем понял для чего тут используется функция конвертирования в кодировку windows-1251
Код
function ConvertToWIN1251(instr:string):string;
код и без этого должен работать
а что бы запускалось сразу, а не по кнопке, скопируй весь этот код который в кнопке прописан, и вставь его в событие OnCreat формы к примеру, а кнопку удали, можно еще форму скрыть если необходимо.
Если у тебя с делфи совсем все плохо, то вот примерно как должно получиться:
type TForm1 = class(TForm) IdMessage1: TIdMessage; IdSMTP1: TIdSMTP; IdEncoderMIME1: TIdEncoderMIME; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
//Функция конвертирования в кодировку windows-1251 function ConvertToWIN1251(instr:string):string; begin result:='=?'+'Windows-1251'+'?B?'+form1.IdEncoderMIME1.Encode(instr)+'?='; end;
procedure TForm1.FormCreate(Sender: TObject); var attach: TidAttachment; begin
IdSMTP1.AuthenticationType:= atLogin; IdSMTP1.Username:='user@mail.ru'; //Логин IdSMTP1.Password:='password'; //Пароль IdSMTP1.Host:='smtp.mail.ru'; //Хост //Хосты: smtp.inbox.ru; smtp.list.ru; smtp.bk.ru; smtp.yandex.ru и т.д. IdSMTP1.Port:=25; //Порт (25 - по умолчанию) //Порты mail.ru: 587 и 2525 (без шифрования) или 465 (с шифрованием)
IdMessage1.CharSet:='windows-1251'; //Кодировка в теле сообщения IdMessage1.ContentType:='text/plain'; IdMessage1.Body.Add('Текст'); //Текст сообщения IdMessage1.Subject:=ConvertToWIN1251('Тема'); //Тема сообщения IdMessage1.From.Address:='user@mail.ru'; //Адрес отправителя //IdMessage1.From.Name:=ConvertToWIN1251('User'); //Имя отправителя IdMessage1.Recipients.EMailAddresses:='send_user@mail.ru'; //Кому отправить письмо (можно через запятую если несколько e-mail'ов) IdMessage1.IsEncoded:=true; //attach:=TIdAttachment.Create(IdMessage1.MessageParts,'Путь до файла'); //Вложение
try //Соединение с почтовым сервером IdSMTP1.Connect(); IdSMTP1.Send(IdMessage1); showmessage('Сообщение отправлено'); except showmessage('Ошибка при отправке сообщения'); end; //Отсоединяемся от почтового сервера IdSMTP1.Disconnect; end;
end.
Сообщение отредактировал xXxSh@dowxXx - Суббота, 25.01.2014, 01:16
xXxSh@dowxXx, спасибо тебе огромное, сам я ещё бы неделю разбирался, все получилось,подскажите ещё, как мне настроить отправку сообщений, через определённое время, т.е. программа запущена, а сообщения отправляются например через каждые пять минут
подскажите ещё, как мне настроить отправку сообщений, через определённое время, т.е. программа запущена, а сообщения отправляются например через каждые пять минут
тебе необходимо создать повторяющийся цикл, в котором нужно прописать часть кода выполняющую отправку письма, и в конце цикла добавить команду Sleep(300000);
почему именно 300000 ? потому что в Sleep(); одна секунда = (1000), следовательно 1 минута = (60000), ну а 5 минут (300000)
type TForm1 = class(TForm) IdMessage1: TIdMessage; IdSMTP1: TIdSMTP; IdEncoderMIME1: TIdEncoderMIME; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1; p: Integer;
implementation
{$R *.dfm}
//Функция конвертирования в кодировку windows-1251 function ConvertToWIN1251(instr:string):string; begin result:='=?'+'Windows-1251'+'?B?'+form1.IdEncoderMIME1.Encode(instr)+'?='; end;
procedure TForm1.FormCreate(Sender: TObject); var attach: TidAttachment; begin p:= 0; IdSMTP1.AuthenticationType:= atLogin; IdSMTP1.Username:='user@mail.ru'; //Логин IdSMTP1.Password:='password'; //Пароль IdSMTP1.Host:='smtp.mail.ru'; //Хост //Хосты: smtp.inbox.ru; smtp.list.ru; smtp.bk.ru; smtp.yandex.ru и т.д. IdSMTP1.Port:=25; //Порт (25 - по умолчанию) //Порты mail.ru: 587 и 2525 (без шифрования) или 465 (с шифрованием)
IdMessage1.CharSet:='windows-1251'; //Кодировка в теле сообщения IdMessage1.ContentType:='text/plain'; IdMessage1.Body.Add('Текст'); //Текст сообщения IdMessage1.Subject:=ConvertToWIN1251('Тема'); //Тема сообщения IdMessage1.From.Address:='user@mail.ru'; //Адрес отправителя //IdMessage1.From.Name:=ConvertToWIN1251('User'); //Имя отправителя IdMessage1.Recipients.EMailAddresses:='send_user@mail.ru'; //Кому отправить письмо (можно через запятую если несколько e-mail'ов) IdMessage1.IsEncoded:=true; //attach:=TIdAttachment.Create(IdMessage1.MessageParts,'Путь до файла'); //Вложение
while p=0 do begin try //Соединение с почтовым сервером IdSMTP1.Connect(); IdSMTP1.Send(IdMessage1); showmessage('Сообщение отправлено'); except showmessage('Ошибка при отправке сообщения'); end; //Отсоединяемся от почтового сервера IdSMTP1.Disconnect; Sleep(300000); end; end; end.
это все таки слишком топорный код, в идеале нужно еще конечно обрабатывать выход из цикла или его прерывание.
Сообщение отредактировал xXxSh@dowxXx - Суббота, 25.01.2014, 18:08
Нужно спамить в потоках, к тому же рекомендуется реализовать рандомную задержку. При отправке письма его текст должен постоянно модифицироваться, чтобы почтовый сервер не посчитал его за спам: в крайнем случае, добавляйте к тексту письма рандомную строку, например:
Это то, что касается спама. Если же флудите, помните, что 100-200 сообщений, которые Вы отправитена на мыло жертвы с одного единственного idsmtp лишь слегка пощекочут ему нервы. Нужно отправить не менее 10 000 - 30 000 сообщений, чтобы наглухо забить ему мыло.
Сообщение отредактировал Stertor - Суббота, 01.03.2014, 17:46
Дата: Воскресенье, 02.03.2014, 11:56 | Сообщение # 11
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
ЦитатаStertor ()
Нужно отправить не менее 10 000 - 30 000 сообщений, чтобы наглухо забить ему мыло.
это да, но и то, я от 16.000 сообщений от собственного спамера в свое время нормально отчистился, хотя на это ушло несколько дней))))) и по мимо изменений самого текста необходимо и что бы отправитель менялся, не с одного же отправителя слать такую кипу сообщений.
Сообщение отредактировал xXxSh@dowxXx - Воскресенье, 02.03.2014, 11:57