0

テキストファイルが添付された電子メールを送信するために、ここで何が間違っているのかを整理できないようです。メールが届きません。エラーも表示されません。これはすべて初めてで、何時間もサンプルとチュートリアルを見てきましたが、欠けているものは目立ちません。これについて助けてくれてありがとう。

//core/email_cfg.php

function mail_attachment($git_messages, $file) 
{
    $filename = basename($file);
    //define the receiver of the email
    $to = 'whoever@domain.com';

    //define the subject of the email
    $subject = 'Change to Config File '.$filename;

    //message
    $username = isset($_SESSION["username"]) ? $_SESSION["username"] : 'Unknown User';
    $message = 'Notification: The config file named '.$filename. ' was changed by USER='.$username.', GIT Results: '. $git_messages;

    //from:
    $from = "SomeUserEmail@domain.com"; 

    //how do we fit this in?
    //\r\nReply-To: no_reply@domain.com\r\n

    // $file should include path and filename
    $file_size = filesize($file);
    $content = chunk_split(base64_encode(file_get_contents($file))); 
    $uid = md5(uniqid(time()));
    $from = str_replace(array("\r", "\n"), '', $from); // to prevent email injection
    $header = "From: ".$from."\r\n"
          ."MIME-Version: 1.0\r\n"
          ."Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n"
          ."This is a multi-part message in MIME format.\r\n" 
          ."--".$uid."\r\n"
          ."Content-type:text/plain; charset=iso-8859-1\r\n"
          ."Content-Transfer-Encoding: 7bit\r\n\r\n"
          .$message."\r\n\r\n"
          ."--".$uid."\r\n"
          ."Content-Type: text/html; charset=iso-8859-1\r\n"
          ."Content-Transfer-Encoding: 7bit\r\n\r\n"
          .$message."\r\n\r\n"
          ."--".$uid."\r\n"               
          ."Content-Type: text/plain; name=\"".$filename."\"\r\n"
          ."Content-Transfer-Encoding: base64\r\n"
          ."Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n"
          .$content."\r\n\r\n"
          ."--".$uid."--"; 
    return mail($to, $subject, "", $header);
}
4

1 に答える 1

0

個人的には、添付ファイルを送信しようとしている場合は、PHP で直接行うのはかなり難しいため、ライブラリの使用を検討することをお勧めします。

たとえば、私はPHPMailerを使用します。

次の方法で簡単に添付ファイルを送信できます。

$mail = new PHPMailer();

$mail->IsSMTP();  // telling the class to use SMTP
$mail->Host     = "smtp.example.com"; // SMTP server

$mail->From     = "from@example.com";
$mail->AddAddress("myfriend@example.net");

$mail->Subject  = "First PHPMailer Message";
$mail->Body     = "Hi! \n\n This is my first e-mail sent through PHPMailer.";
$mail->WordWrap = 50;

$mail->AddAttachment("fileNameToAttach");

if(!$mail->Send()) {
  echo 'Message was not sent.';
  echo 'Mailer error: ' . $mail->ErrorInfo;
} else {
  echo 'Message has been sent.';
}
?>
于 2013-02-04T10:21:17.930 に答える