0

1.ここでは、php mail()関数を使用して、jpg画像ファイルをメールの添付ファイルとして送信しようとしています。

2.メールの添付ファイルがWord文書(.docを添付ファイルとして)で正常に送信されていますが、.jpgを添付ファイルとして送信しようとするとエラーが発生します。使用したコード:

<?php
/*If there is no error, send the email*/
if(isset($_POST['submit-button-name'])) {       
  $uname=$_POST['uname'];                           
  $to = $_POST['mailid'];
  $mobileno=$_POST['mobile'];
  $location=$_POST['location'];
  $from = "Urname <urname@domainname.com>";
  $subject = $_POST['uname']." testing";
  $separator = md5(time());
  /* carriage return type (we use a PHP end of line constant)*/
    $eol = PHP_EOL;
  /*attachment name*/
    $filename = "image.jpg";
    $attachment = chunk_split(base64_encode(file_get_contents('image.jpg')));
  /*main header*/
    $headers  = "From: ".$from.$eol;
    $headers .= "MIME-Version: 1.0".$eol; 
    $headers .= "Content-Type: multipart/mixed; boundary=\"".$separator."\"";
  /*no more headers after this, we start the body!*/
    $body = "--".$separator.$eol;
    $body .= "Content-Transfer-Encoding: 7bit".$eol.$eol;
    $body .= "Check out the attachment.".$eol;
 /*message*/
    $body .= "--".$separator.$eol;
    $body .= "Content-Type: text/html; charset=\"iso-8859-1\"".$eol;
    $body .= "Content-Transfer-Encoding: 8bit".$eol.$eol;
    $body .= $message.$eol;
 /*attachment*/
    $body .= "--".$separator.$eol;
$body .= "Content-Type: image/jpg; name=\"".$filename."\"".$eol; 
$body .= "Content-Transfer-Encoding: base64".$eol;
$body .= "Content-Disposition: attachment; file=\"".$filename."\"".$eol.$eol;
$body .= $attachment.$eol;
$body .= "--".$separator."--";
 /*send message*/
if (mail($to, $subject, $body, $headers)) {
    $mail_sent=true;
    echo "<font color='white'>Mail sent</font>";
    $frm="urname@domainname.com";
    $subj="Acknowledgement mail for Brochure form";
    $msg = $_POST['username'] . ",\n\nThank you for your recent enquiry.";
    $body = "Name: ".$_POST['uname'] ."\n\nEmail: ".$_POST['mailid'] ."\n\nMobile: 
        ".$_POST['mobile'] ."\n\nLocation: ".$_POST['location'];
    $headers = 'From: '.'careers@domainname.com';
    mail($frm,$subj,$body,$headers);
} else {
    $mail_sent=false;
}
if($mail_sent == true)
{
/*to clear the post values*/
  $uname="";
  $to="";
  $mobileno="";
  $location="";
}
else{
  echo "Error,Mail not sent";
}
    }
    ?>

3.エラーは次のように発生します:

警告:file_get_contents(image.jpg)[function.file-get-contents]:
ストリームを開くことができませんでした:48行目のfooter.phpにそのようなファイルまたはディレクトリはありません

4.以前は本文の内容(「添付ファイルをチェックしてください」)と0k(画像が開かれていない)のimage.jpgとして添付ファイルを持っているメールを受信して​​いました。

5.助けてください。事前に感謝します。緊急です。

4

3 に答える 3

0

コンテンツタイプはjpgではなくjpegだと思いました。

Content-Type: image/jpeg;

添付ファイルを追加するセクション。

また、行:

$body .= "Content-Disposition: attachment; file=\"".$filename."\"".$eol.$eol;

$body .= "--".$separator."--";

おそらく次のようになります。

$body .= "Content-Disposition: attachment;".$eol.$eol;

$body .= "--".$separator."--".$eol;

于 2012-07-07T06:31:34.350 に答える
0

絶対パスをfile_get_contents('absolute path');に指定することで問題を解決できます。$_SERVER['DOCUMENT_ROOT']。'filename';を使用しました。そしてそれはうまくいきました。また、image/jpgをimage/jpegに変更しました。ありがとうございます。

于 2012-07-10T06:43:26.527 に答える
0

コードのこの行に画像の完全な絶対パスを指定することで、問題を解決しました。

$attachment = chunk_split(base64_encode(file_get_contents('http://wordpress1/wp-content/themes/MyTheme/VyTCDC-brochure.jpg')));

だから、あなたはあなたのフルパスで行くことができます。今、それは魅力のように機能しています。

于 2012-08-02T05:26:36.477 に答える