Значи това е скрипт за пращане на много съобщения до потребители но проблема е че изпраща само текст а аз искам примерно да сложа линк или картинка в хтмл формат , както някои сайтове ако се регистрирате ви пращат хтмл страница. Надявам се да сте ме разбрали. Най долу на скрипта е пращането но го давам целия че не знам от къде идва проблема.
Код:
<?php
ob_start();
set_time_limit(0);
/*
* @@Author: DarkKiss <darkkiss [at] dreaming-bg [dot] com>
* This script offers no support.
*/
class massMail
{
// =========================================
// Метода, по който ще извличаме e-mail адресите.
// =========================================
// 1 => От текстов файл.
// 2 => От MySQL.
// =========================================
private $source = 2;
private $sourceFile = 'emails.txt'; // Файла, от който ще черим информацията. Задължителен е само ако $source = 1.
// =========================================
// Настройки за достъп до MySQL.
// =========================================
// Задължителни са само ако $source = 2.
// =========================================
private
$mysql_server = 'localhost', // Сървъра, на който се намира MySQL сървъра ни.
$mysql_username = 'хххххххххх', // Потребителското име, което ще използваме за MySQL.
$mysql_password = 'ххххххххх', // Паролата. която ще използваме за MySQL.
$mysql_database = 'хххххххххххххх', // Името на база данните.
$mysql_table = 'username', // Името на таблицата.
$mysql_field = 'email'; // Името на полето, където се съдържат e-mail адресите.
// Създаваме масив съдържащ E-Mail адресите, които не искаме да получават съобщения.
// Можете да допълвате списъка, като използвате посочените e-mail адреси за образец.
private $skip = array
(
'nospam@yourdomain.com'
);
private
$sleepMail = 1, // Какъв ще е интервала между отделните съобщения (в секунди)? Ще го използваме, за да избегнем претоварване на сървъра.
$sleepCycle = 10, // Какъв ще е интервала между отделните цикли (в секунди)? Ще го използваме, за да избегнем претоварване на сървъра.
$mailPerCycle = 20; // Колко съобщения искаме да се изпращат в един цикъл?
private
$mailSubject = 'Mass Email', // Темата на съобщението, което ще получават потребителите.
$mailSender = 'do-not-reply@yourwebsite.com'; // От кой e-mail адрес ще бъде изпратено съобщението?
// =========================================
// КРАЙ НА КОНФИГУРАЦИЯТА
// =========================================
// Препоръчвам да не се редактира нищо по-долу, освен ако не знаете точно какво правите ;-)
// =========================================
private $emails = array(), $message;
private function sleepBuffer($secs)
{
echo '<br />';
ob_flush();
flush();
sleep($secs);
}
public function __construct($message)
{
$this -> message = $message;
switch($this -> source)
{
case 1;
if(empty($this -> sourceFile))
{
echo 'Моля задайте параметър за \$sourceFile.';
exit;
}
if(!file_exists($this -> sourceFile))
{
printf('Не мога да открия файл <strong>%s</strong>.', $this -> sourceFile);
exit;
}
if(!is_readable($this -> sourceFile))
{
printf('Нямам достатъчно права, за да прочета файл <strong>%s</strong>', $this -> sourceFile);
exit;
}
$this -> readFileContent();
break;
case 2;
if(empty($this -> mysql_server) || empty($this -> mysql_username) || empty($this -> mysql_password) || empty($this -> mysql_database) || empty($this -> mysql_table) || empty($this -> mysql_field))
{
echo 'Едно или повече задължителни полета за връзката с MySQL сървъра не са попълнени.';
exit;
}
$connect = mysql_connect($this -> mysql_server, $this -> mysql_username, $this -> mysql_password) or die (mysql_error());
$query = sprintf('SELECT DISTINCT %s FROM `%s`.`%s`', $this -> mysql_field, $this -> mysql_database, $this -> mysql_table);
$exec = mysql_query($query) or die (mysql_error());
$count = mysql_num_rows($exec);
if($count == 0)
{
echo 'Няма открит нито един валиден E-Mail адрес.';
exit;
}
while($row = mysql_fetch_assoc($exec))
{
$email = trim(rtrim($email));
if($this -> validateEmail($row[$this -> mysql_field]) === true)
$emails[] = $row[$this -> mysql_field];
}
$this -> emails = $emails;
break;
}
printf('Открити са <strong>%s</strong> валидни E-Mail адреса.', number_format(count($this -> emails)));
$this -> sendMail();
}
private function validateEmail($email)
{
if((preg_match('/^[a-z0-9-_\.]+@{1}+[a-z0-9-]+\.[a-z]{2,4}$/i', $email) || preg_match('/^[a-z0-9-_\.]+@{1}+[a-z0-9]+\.[a-z0-9-_]+\.[a-z]{2,4}$/i', $email)) && !in_array($email, $this -> skip))
return true;
else
return false;
}
private function readFileContent()
{
$fopen = fopen($this -> sourceFile, 'r');
$fread = fread($fopen, filesize($this -> sourceFile));
$explode = explode("\n", $fread);
$count = 0;
$emails = array();
foreach($explode as $email)
{
$email = trim(rtrim($email));
if($this -> validateEmail($email) === true && !in_array($email, $emails))
{
$emails[] = $email;
$count++;
}
}
if($count == 0)
{
echo 'Няма открит нито един валиден E-Mail адрес.';
exit;
}
$this -> emails = $emails;
}
private function sendMail()
{
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";
$headers .= 'From: ' . $this -> mailSender . "\r\n";
$i = 0;
$n = 1;
echo '<br /><br />';
foreach($this -> emails as $emails)
{
if($i == $this -> mailPerCycle)
{
$this -> sleepBuffer($this -> sleepCycle);
$i = 0;
}
$status = (@mail(strtolower($emails), $this -> mailSubject, $this -> message, $headers) === true) ? '<span style="color:green; font-weight:bold">OK!</span>' : '<span style="color:red; font-weight: bold">Failed</span>';
printf('<span style="font-size: 16pt">%s.</span> %s %s<br />', $n, strtolower($emails), $status);
$this -> sleepBuffer($this -> sleepMail);
$i++; $n++;
}
}
}
if(isset($_POST['message']))
{
$message = '<style type="text/css">
body
{
color: 999;
}
.table
{
width: 100%;
border: 1px;
border-style: solid;
border-color: #99c;
font-size: 11pt;
}
.head
{
background-color: #99c;
color: #FFF;
font-weight: bold;
text-align: center;
}
a
{
color: 10c;
font-weight: bold;
text-decoration: none;
}
a:hover
{
color: red;
font-weight: bold;
text-decoration: none;
}
hr
{
color: #99c;
background-color: #10c;
height: 1px;
}
</style>
<table class="table" align="center">
<tr><td class="head">Dreaming</td></tr>
<tr><td><hr width="100%" /></td></tr>
<tr>
<td>
Здравейте,<br />
Това съобщение е автоматично генерирано от системата и се изпраща масово до всеки потребител.
<br />Моля не отговаряйте на него, то се изпраща единствено с информационна цел.
</td>
</tr>
<tr><td><hr width="100%" /></td></tr>
<tr>
<td>
' . nl2br($_POST['message']) . '
</td>
</tr>
</table>';
$mail = new massMail($message);
}
else
echo '
<form action="" method="POST">
<textarea name="message" style="width: 100%; height: 400px"></textarea><br />
<input type="submit" value="Изпрати съобщението" />
</form>';
?>