Avatar billede michaeltryl Seniormester
27. februar 2007 - 19:00 Der er 14 kommentarer og
1 løsning

vedhæft fil via php mail

Jeg har en database som indeholder et felt hvor der uploades nogen pdf filer til (de uploades ikke til serveren men til tabellen)

nu ønsker jeg at vedhæfte en af de filer til en mail som skal sendes til X antal personer.

at sende en mail og udtrække alm. tekst fra en tabel er ikke noget problem, men hvordan trækker jeg filen ud og vedhæfter den til en mail? håber en som kan hjælpe
Avatar billede jakobdo Ekspert
27. februar 2007 - 19:36 #1
Du skal kigge på phpmailer, den kan sende emails med vedhæftning.
Hvordan er filen gemt i din tabel, som blob?
Avatar billede michaeltryl Seniormester
27. februar 2007 - 19:39 #2
felttypen er longblob jeg prøver at søge efter phpmailer og ser om jeg finder ud af noget. skriver her hvis det driller
Avatar billede michaeltryl Seniormester
27. februar 2007 - 19:56 #3
jeg har lige lavet dette ud fra det jeg fandt på php mailer. kan du fortælle om jeg er galt på den

<?
require("class.phpmailer.php");
include"../connect.php";

$mail = new PHPMailer();

$mail->From    = "list@mydomain.com";
$mail->FromName = "List manager";

$query  = "SELECT imgdata FROM pdf WHERE id=$id";
$result = @MYSQL_QUERY($query);

while ($row = mysql_fetch_array ($result))
{
//her skal jeg hente alle email adresser som der skal sendes til

    // Plain text body (for mail clients that cannot read HTML)
    $text_body .= "Der er tilføjet et program se vedhæftet fil.\n\n";

    $mail->Body    = $body;
    $mail->AltBody = $text_body;
    $mail->AddAddress($row["email"]);
    $mail->AddStringAttachment($row["imgdata"], "YourPhoto.jpg");
?>
Avatar billede jakobdo Ekspert
27. februar 2007 - 20:03 #4
Det ser faktisk rigtigt ud! :o)
Avatar billede michaeltryl Seniormester
27. februar 2007 - 20:51 #5
okay så vil jeg da lige teste det.
Avatar billede michaeltryl Seniormester
27. februar 2007 - 22:15 #6
nu henter den fint alle adresse ud der skal sendes til, men der kommer ingen mails frem.
jeg har prøvet med echo $ema["email"]; for at tjekke om de bliver hentet ud.

Som jeg har forstået det sørger class.phpmailer.php for at sende mailen eller har jeg misforstået noget og skal selv lave en mail(), men hvordan skal den så se ud?

require("class.phpmailer.php");

$mail = new PHPMailer();

$mail->From    = "list@mydomain.com";
$mail->FromName = "List manager";

$query  = "SELECT imgdata FROM pdf WHERE title='$id'";
$result = @MYSQL_QUERY($query);


while ($row = mysql_fetch_array ($result))
{
//her skal jeg hente alle email adresser som der skal sendes til

    // Plain text body (for mail clients that cannot read HTML)
    $text_body .= "Der er tilføjet et program se vedhæftet fil.\n\n";

$emquery  = "SELECT email FROM brugere WHERE tilmeldt ='$id' AND godkend = 1";
$emresult = @MYSQL_QUERY($emquery);
while ($ema = mysql_fetch_array ($emresult))
{
    $mail->Body    = $body;
    $mail->AltBody = $text_body;
    $mail->AddAddress($ema["email"]);
    $mail->AddStringAttachment($row["imgdata"], "YourPhoto.jpg");

}
}
Avatar billede jakobdo Ekspert
27. februar 2007 - 22:26 #7
Du mangler $mail->send(); gør du ikke?
Avatar billede michaeltryl Seniormester
27. februar 2007 - 23:11 #8
nu sender den mails med vedhæftede filer. Der er dog et lille problem. Lige nu skal den sende ud til 3 brugere. De mails som kommer indejolder en, to eller tre vedhæftede filer og samme antal email adresser i til feltet, sådan man kan se de email adresse der også er er sendt til.
og der bliver sendt 6 mails ud

jeg har prøvet at placere $mail->send(); forskellige steder uden held.

$mail = new PHPMailer();

$mail->From    = "Stævne";
$mail->FromName = "Stævne";

$query  = "SELECT imgdata FROM pdf WHERE title='$id'";
$result = @MYSQL_QUERY($query);


while ($row = mysql_fetch_array ($result))
{
//her skal jeg hente alle email adresser som der skal sendes til

    // Plain text body (for mail clients that cannot read HTML)
    $text_body .= "Der er tilføjet et program se vedhæftet fil.\n\n";
}

$emquery  = "SELECT email FROM brugere WHERE tilmeldt ='$id' AND godkend = 1";
$emresult = @MYSQL_QUERY($emquery);
while ($ema = mysql_fetch_array ($emresult))
{
    $mail->Body    = $body;
    $mail->AltBody = $text_body;
    $mail->AddAddress($ema["email"]);
    $mail->AddStringAttachment($row["imgdata"], "program.pdf");
   
}
$mail->send();
Avatar billede jakobdo Ekspert
28. februar 2007 - 08:13 #9
Det kommer lidt an på hvordan du vil have det hele til at virke.
Hvis der skal sendes en email til hver bruger, så skal du sætte $mail->send(); inde i din while()
Og så tilføj dette efter:

$mail->ClearAddresses();
$mail->ClearAttachments();
Avatar billede michaeltryl Seniormester
28. februar 2007 - 16:02 #10
jeg ønsker at sende 1 mail med 1 vedhæftet fil til hver bruger

lige nu ser send scriptet sådan ud, men virker ikke rigtigt


require("class.phpmailer.php");

$mail = new PHPMailer();

$mail->From    = "Stævne";
$mail->FromName = "Stævne";

$query  = "SELECT imgdata FROM pdf WHERE title='$id'";
$result = @MYSQL_QUERY($query);


while ($row = mysql_fetch_array ($result))
{

    // Plain text body (for mail clients that cannot read HTML)
    $text_body .= "Der er tilføjet et program se vedhæftet fil.\n\n";
}

$emquery  = "SELECT email FROM brugere WHERE tilmeldt ='$id' AND godkend = 1";
$emresult = @MYSQL_QUERY($emquery);
while ($ema = mysql_fetch_array ($emresult))
{
    $mail->Body    = $body;
    $mail->AltBody = $text_body;
    $mail->AddAddress($ema["email"]);
    $mail->AddStringAttachment($row["imgdata"], "program.pdf");

$mail->send();
 
}
$mail->ClearAddresses();
$mail->ClearAttachments();

  header("Location: liste.php");
Avatar billede michaeltryl Seniormester
28. februar 2007 - 16:12 #11
glemte at skrive at
$text_body .= "Der er tilføjet et program se vedhæftet fil.\n\n";
ikke bliver tilføjet som tekst i nogen af de mails jeg har prøvet at sende.

over scripet som sender mailen bliver pdf filen uploadet til databsen, kan det have noget at sige at det sker på samme side, men det burde det vel ikke.
Avatar billede jakobdo Ekspert
28. februar 2007 - 16:18 #12
Din kode er helt rodet! :o)

Prøv at test følgende kode:

require("class.phpmailer.php");

$mail = new PHPMailer();

$mail->From    = "Stævne";
$mail->FromName = "Stævne";

$query  = mysql_query("SELECT imgdata FROM pdf WHERE title='".$id."'");
if(mysql_num_rows($query)==1)
{
    $row = mysql_fetch_array ($query);
    {
        // Plain text body (for mail clients that cannot read HTML)
    $text_body .= "Der er tilføjet et program se vedhæftet fil.\n\n";
   
    $mail->Body    = $body;
    $mail->AltBody = $text_body;
    $mail->AddStringAttachment($row["imgdata"], "program.pdf");
    }
}

$query = mysql_query("SELECT email FROM brugere WHERE tilmeldt ='".$id."' AND godkend = 1");
while($row = mysql_fetch_array($query))
{
    $mail->AddAddress($row["email"]);
    $mail->send();
    $mail->ClearAddresses();
}

header("Location: liste.php");
exit();
Avatar billede michaeltryl Seniormester
28. februar 2007 - 20:34 #13
Jeg har forsøgt mange forskellige løsninger så det er ikke sært at koden er rodet :-). Det virker virker nu. Mange tak for hjælpen. bare kom med et svar
Avatar billede jakobdo Ekspert
28. februar 2007 - 20:40 #14
Svar! :o)
Avatar billede jakobdo Ekspert
28. februar 2007 - 21:02 #15
Takker for point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester