web-dev-qa-db-ja.com

PDFを使用してメールに添付する方法PHPメール機能

PHPメール機能を使用してメールを送信していますが、指定されたPDFファイルを添付ファイルとしてメールに追加したいのですが、どうすればよいですか?それ?

これが私の現在のコードです:

$to = "[email protected]";
$subject = "My message subject";
$message = "Hello,\n\nThis is sending a text only email, but I would like to add a PDF attachment if possible.";
$from = "Jane Doe <[email protected]>";

$headers = "From:" . $from; 
mail($to,$subject,$message,$headers);

echo "Mail Sent!";
13
JROB

PHP PHPMailer などのメールライブラリを使用することを検討してください。これにより、メールの送信手順が大幅に簡素化され、改善されます。

PHPMailerの使用例を以下に示します。とても簡単です!

<?php

require_once('../class.phpmailer.php');

$mail             = new PHPMailer(); // defaults to using php "mail()"

$body             = file_get_contents('contents.html');
$body             = eregi_replace("[\]",'',$body);

$mail->AddReplyTo("[email protected]","First Last");

$mail->SetFrom('[email protected]', 'First Last');

$mail->AddReplyTo("[email protected]","First Last");

$address = "[email protected]";
$mail->AddAddress($address, "John Doe");

$mail->Subject    = "PHPMailer Test Subject via mail(), basic";

$mail->AltBody    = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test

$mail->MsgHTML($body);

$mail->AddAttachment("images/phpmailer.gif");      // attachment
$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment

if(!$mail->Send()) {
  echo "Mailer Error: " . $mail->ErrorInfo;
} else {
  echo "Message sent!";
}

?>

PHPMailerの代替は http://swiftmailer.org/ です。

19
josmith

簡単な答え:それをしないでください。手でMIMEメールを作成するのは骨の折れる仕事であり、失敗するのは非常に簡単です。

代わりに、 PHPMailer または Swiftmailer を使用してください。それらを使って添付ファイルを作成することはほとんど取るに足らないことです。 mail()が吐き出すと見なす単純なtrue/false。

2
Marc B

非推奨のエラーを排除するには、

交換する

$body             = eregi_replace("[\]",'',$body);

$body             = preg_replace('/\.([^\.]*$)/i','',$body);
1
sspence65