phpmailer posta gönderme

5 Cevap php

I am using phpmailer class to send email and i am attaching a file to the mail. The email is sent successfully but the attachment which is an sql file is empty which should not be the case. I have tried with an image file, but it seems that every file that i attach is empty. Can anyone help me solve this problem please?

$mail = new PHPMailer();
    $body = "Reminder";
    $mail->IsSMTP();  
    $mail->Host       = "mail.yourdomain.com";  
    $mail->SMTPDebug = 1;  

    $mail->SMTPAuth = true;  
    $mail->SMTPSecure = "ssl";  
    $mail->Host = "smtp.gmail.com";  
    $mail->Port = 465;  
    $mail->Username = "abc@gmail.com";  
    $mail->Password = "abc";              
   $mail->SetFrom('abc@gmail.com',
  'blbla');
   $mail->AddReplyTo("name@yourdomain.com","First Last");
   $mail->Subject = "Your order has been successfully placed"
   $mail->MsgHTML($body);
   $mail->AddAddress("xyz@live.com","xyz");
   $mail->AddAttachment("D:\b2\shop3.sql","shop3.sql");

GÜNCELLEME: Ben eklemeden önce dosya boyutunu görüntülemek için denedim ve aslında dosya boyutunu görüntüler. Herkes bana lütfen yardımcı olabilir misiniz?

5 Cevap

denedin mi:

D: \ \ b2 \ \ shop3.sql

beri windows?

LE: \ \ - üzgünüm

Bunu takmak için denemeden önce dosyanın varlığını test deneyebilirsiniz. Ayrıca, bir \ PHP bir dize içinde hareket nasıl oluyor bilinmeyen, bu yüzden C standartlarına yoluyla kaçmak için en iyi uygulama:

$attach_filename = "D:\\b2\\shop3.sql";
if (is_file($attach_filename)) {
    $mail->AddAttachment($attach_filename,"shop3.sql");
} else {
    print "error: attachment $attach_filename doesn't exist";
}

Daha fazla test için Birkaç öneri:

1 - Deneyin ve komut yürütülen olarak aynı dizinde bulunan basit bir * txt dosyası eklemek.. Bu şeylerin Ek tarafında test edecek ve komut herhangi bir dosya ekleme sevme, ya da sadece *. Sql biri değil ya olup olmadığını ispat edebilir.

2 -.. Eğer 1. işleri OK, sonra tekrar test * sql bir an bulunduğu aynı klasöre * txt dosyası taşıyın. Bu daha sonra komut kullandığınız filepath üzerinden bir dosyaya erişmek mümkün olup olmadığını kanıtlamak gerekir.

3 -. Komut dosyası tarafından oluşturulan web tarayıcı çıktı, içine ya da e-posta iletisinin gövdesine ya, * sql dosyasının içeriğini yankılanan deneyin. Bu da komut söz konusu dosyayı okumak mümkün olup olmadığını kanıtlamak gerekir.

Ben bu önerileri tabanı kapalı waaaay olabilir, ama bu bir denemek ve gidermek için olsaydı ben başlamak istiyorum nerede onlar olacaktır.

This may help you instead. What I've done is first zipped the .sql file to make sure all the content is included and to make the email smaller (useful if you have a database of 10MB or more) I use a .sh script to do this which i named "sqlbackup.sh":

yan not:. benim sql dosyası webserver klasör "db_backup / SQLdata" altında depolanır ve bu klasörde sadece sql dosyası bulunur.. Onlar zaten var yoksa iki klasör oluşturun.

#!/bin/sh
cd /home/<username>/db_backup/sqldata/
tar -zcvf sqldata.tar *.sql
cd /home/<username>/db_backup/
perl emailsql.pl

sonraki i "mail.php 'yi" adını verdiği e-posta için bu sıkıştırılmış dosyayı gönderir bir php mail dosyası oluşturulur

yan not: ben bir no-reply@domain.co.za adresi kullanılmış gelen ve onun kendime olacak kadar hitap cevap. buna göre düzenleyin.

<?php
$to = '<enter email to send to>';
$subject = 'SQL Backup' . date('r', time());
$random_hash = md5(date('r', time()));
$headers = "From: <from address>\r\nReply-To: <reply to address>";
$headers .= "\r\nContent-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\"";
$attachment= chunk_split(base64_encode(file_get_contents('sqldata/sqldata.tar')));
ob_start();
?>

--PHP-alt-<?php echo $random_hash; ?>--

--PHP-mixed-<?php echo $random_hash; ?> 
Content-Type: application/x-tar; name="sqldata.tar" 
Content-Transfer-Encoding: base64 
Content-Disposition: attachment 

<?php echo $attachment; ?>
--PHP-mixed-<?php echo $random_hash; ?>-- 

<?php
$message = ob_get_clean();
$mail_sent = @mail( $to, $subject, $message, $headers );
?>

Sonra ben yaptım tüm birinci, dosyanın boyutuna bağlı olarak, daha sonra zip oluşturmak için 'sqlbackup.sh' dosyasını çalıştırın 'mail.php' yi 'dosyasını çalıştırmak için bir cron işi oluşturmak için bir cron işi oluşturmak oldu. Ben zip yapılandırma sonra benim mail.php 'yi dosyayı bir saat çalıştırın.

siz) e-posta, ziyarette THIS LINK mesaj eklemek ve (ob_start 'sonra alana göre kod eklemek istiyorum; > '

Umarım bu yardımcı olur.

Ben yerine swiftmailer.org denemenizi öneririz