بک اپ از دیتابیس و ارسال به ایمیل
کد PHP:
<?php
include_once("jdf.php");
function backup_db($host, $user, $pass, $name, $tables = '*') {
date_default_timezone_set('Asia/Tehran');
$return = '';
mysql_connect($host,$user,$pass) or die('Connection error');
mysql_select_db($name) or die('Database error');
mysql_query('SET NAMES \'utf8\'');
mysql_set_charset('utf8');
if($tables == '*') {
$tables = array();
$result = mysql_query('SHOW TABLES');
while($row = mysql_fetch_row($result)) {
$tables[] = $row[0];
}
mysql_free_result($result);
}
else {
$tables = is_array($tables) ? $tables : explode(',', $tables);
}
foreach($tables as $table) {
$result = mysql_query('SELECT * FROM `'.$table.'`');
$num_fields = mysql_num_fields($result);
$return .= 'DROP TABLE IF EXISTS `'.$table.'`;'.PHP_EOL.PHP_EOL;
$row = mysql_fetch_row(mysql_query('SHOW CREATE TABLE `'.$table.'`'));
$return .= $row[1].';'.PHP_EOL.PHP_EOL;
for ($i = 0; $i < $num_fields; $i++) {
while($row = mysql_fetch_row($result)) {
$return.= 'INSERT INTO `'.$table.'` VALUES(';
for($j = 0; $j < $num_fields; $j++) {
$row[$j] = addslashes($row[$j]);
$row[$j] = str_replace('\n', '\\n', $row[$j]);
if (isset($row[$j])) {
$return .= '\''.$row[$j].'\'';
}
else {
$return .= '\'\'';
}
if ($j < ($num_fields - 1)) {
$return .= ',';
}
}
$return .= ');'.PHP_EOL;
}
}
$return .= PHP_EOL.PHP_EOL.PHP_EOL;
}
$ruhy=jdate('Y-m-d-H-i')."db.sql";
file_put_contents($ruhy,$return);
}
backup_db('localhost', 'p', 'U', 'p');
function mail_attachment($filename, $path, $mailto, $from_mail, $from_name, $subject, $message) {
$file = $path.$filename;
$file_size = filesize($file);
$handle = fopen($file, "r");
$content = fread($handle, $file_size);
fclose($handle);
$content = chunk_split(base64_encode($content));
$uid = md5(uniqid(time()));
$name = basename($file);
$header = "From: ".$from_name." <".$from_mail.">\r\n";
$header .= "Reply-To: ".$from_mail."\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
$header .= "This is a multi-part message in MIME format.\r\n";
$header .= "--".$uid."\r\n";
$header .= "Content-type:text/plain; charset=iso-8859-1\r\n";
$header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$header .= $message."\r\n\r\n";
$header .= "--".$uid."\r\n";
$header .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n"; // use different content types here
$header .= "Content-Transfer-Encoding: base64\r\n";
$header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
$header .= $content."\r\n\r\n";
$header .= "--".$uid."--";
if (mail($mailto, $subject, "", $header)) {
echo "mail send ... OK"; // or use booleans here
} else {
echo "mail send ... ERROR!";
}
}
$ruhy=jdate('Y-m-d-H-i')."db.sql";
$my_file = $ruhy;
$my_path = '/home/pavizpri/domains/paviz-print.com/public_html/';
$my_name = "مهدي پاويز";
$my_mail = "civilparto@yahoo.com";
$my_subject = "بک اپ ديتابيس";
$my_message = "بک اپ با موفقيت ارسال گرديد";
$to_email="civilparto@gmail.com , paviz_print@yahoo.com";
mail_attachment($my_file, $my_path, $to_email, $my_mail, $my_name, $my_subject, $my_message);
unlink($ruhy);
سلام دوستان مشکل این کد چیه که ارسال نمیکنه ایمیل رو و ارور میده
پاسخ : بک اپ از دیتابیس و ارسال به ایمیل
کد خطایی که دریافت میکنید چیست؟
بدون دیدن کد خطا و ندانستن مشکل قطعا کسی توانایی حل کردنش را هم نخواهد داشت
پاسخ : بک اپ از دیتابیس و ارسال به ایمیل
Warning: mail(): Multiple or malformed newlines found in additional_header in /home/pavizpri/domains/paviz-print.com/public_html/b.php on line 86
mail send ... ERROR!
این ارور رو میده
پاسخ : بک اپ از دیتابیس و ارسال به ایمیل
اگر کدهای ارسال ایمیل رو خودتون تغییر نداده باشید، احتمالا به علت اینکه از متنهای فارسی برای عنوان ایمیل و اسم فرستنده استفاده کردید این مشکل پیش اومده
ارسال کدهای یونیکد در ایمیل باید با حالت خاصی کدگذاری بشه که ظاهرا درکد بالا این موارد پیشبینی نشده و فرض کرده که همهی متنها انگلیسی هست
میتونید تمام متنها رو انگلیسی کنید و دوباره تست کنید
اگر مشکل حل شد و خواستید که حتما فارسی باشه، یک کد دیگه یا یک کتابخانهی دیگه برای ارسال ایمیل پیدا کنید