简体   繁体   English

使用PHP发送带有附件的邮件

[英]Send mail with an attachment in PHP

i would like to send a mail with an attachment with the php mail function. 我想用php邮件功能发送带有附件的邮件。 I can receive a mail. 我可以收到邮件。 Unfortunately the image is broken. 不幸的是,图像坏了。 The image is in the same directory as the php script. 该图像与php脚本位于同一目录中。

My source code for the script: 我的脚本源代码:

$name = "Name goes here";
$email = "recipient@gmail.com";
$to = "$name <$email>";
$from = "Sender";
$subject = "Here is your attachment";
$fileatt = "test.jpg";
$fileatttype = "image/jpeg";
$fileattname = "test.jpg";
$headers = "From: $from";

// File
$file = fopen($fileatt, 'rb');
$data = fread($file, filesize($fileatt));
fclose($file);

// This attaches the file
$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
$headers .= "\nMIME-Version: 1.0\n" .
"Content-Type: multipart/mixed;\n" .
" boundary=\"{$mime_boundary}\"";
$message = "This is a multi-part message in MIME format.\n\n" .
"-{$mime_boundary}\n" .
"Content-Type: text/plain; charset=\"iso-8859-1\n" .
"Content-Transfer-Encoding: 7bit\n\n" .
$message .= "\n\n";

$data = chunk_split(base64_encode($data));
$message .= "--{$mime_boundary}\n" .
"Content-Type: {$fileatttype};\n" .
" name=\"{$fileattname}\"\n" .
"Content-Disposition: attachment;\n" .
" filename=\"{$fileattname}\"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$data . "\n\n" .
"-{$mime_boundary}-\n";

// Send the email
if(mail($to, $subject, $message, $headers)) {

    echo "The email was sent.";

}
else {

    echo "There was an error sending the mail.";

}

Followed this tutorial: http://www.texelate.co.uk/blog/send-email-attachment-with-php/ 遵循了本教程: http : //www.texelate.co.uk/blog/send-email-attachment-with-php/

 $fileatt = "your folder name/test.jpg";

<?php

       $files = array(
                    "yourfoldername/yourfilename.png",
                    "yourfoldername/yourfilenamepng"
                  );
                  //1431347258selfie_1431347013130.png

    // email fields: to, from, subject, and so on
    $to         =   "example@gmail.com";
    $from       =   "support@mail.com"; 
    $subject    =   "My subject"; 
    $message    =   "My message";
    $headers    =   "From: $from";

    // boundary 
    $semi_rand      = md5(time()); 
    $mime_boundary  = "==Multipart_Boundary_x{$semi_rand}x"; 

    // headers for attachment 
    $headers        .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\""; 

    // multipart boundary 
    $message        = "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type: text/plain; charset=\"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n"; 
    $message .= "--{$mime_boundary}\n";

    // preparing attachments
    for( $x=0; $x<count($files); $x++ )
    {
        $file = fopen($files[$x],"rb");
        $data = fread($file,filesize($files[$x]));
        fclose($file);
        $data = chunk_split(base64_encode($data));
        $message .= "Content-Type: {\"application/octet-stream\"};\n" . " name=\"$files[$x]\"\n" . 
        "Content-Disposition: attachment;\n" . " filename=\"$files[$x]\"\n" . 
        "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n";
        $message .= "--{$mime_boundary}\n";
    }

    // send mail
    if( mail($to, $subject, $message, $headers) ) 
    {
        $somthing = "Mail successfully Send.";
    }
    else
    {
        $somthing = "Mail sending fail.";
    }
    echo $somthing;

?> ?>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM