質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.93%

PDFファイルを添付したメールを送信したい

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 2,266

Kuriaki

score 65

タイトル通りです。
昔csvを添付したメール送信をやった経験があって、今回pdfの添付もしようと思っていますが、添付がうまく行かないです。

エラーも出て来てないため、どこがダメなのかがわかりません。
添付できるようにするにはどう修正すればいいでしょうか?
回答よろしくお願いいたします。

<?php
session_start();
$name= $_POST['name'];
$fname= $_POST['fname'];
$gender=$_POST['gender'];
$name2 =$_POST['name2'];
$fname2=$_POST['fname2'];
$time= $_POST['time'];
$address= $_POST['address'];
$tel= $_POST['tel'];
$email=$_POST['email'];
$class=$_POST['class'];
$free=$_POST['free'];



?>




 <!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>xxxxxxxx</title>
  <link rel="stylesheet" href="common/css/reset.css">
  <link rel="stylesheet" href="common/css/complete.css">



</head>
<body>

<div id="complete">
<h1>xxxxxxxxx</h1>
<p style="line-height: 1.5;">xxxxxxxxx!<br />
xx。<br />
xxx<br />
TEL:xxx-xxxx-xxxx</p>
</div>
</body>
</html>

<?php
if(isset($_POST["submit"], $_SESSION["ticket"]) && $_SESSION["ticket"] == $_POST["ticket"]){
    unset($_SESSION["ticket"]);
    }
else{
    exit();
}

$ShiftJIS=array($name,$fname,$gender,$name2,$fname2,$address,$tel,$time,$class,$free,$email,date("Y年/m月/d日 H時i分s秒"));
mb_convert_variables('Shift_JIS', 'UTF-8', $ShiftJIS);

mb_language("Japanese");
mb_internal_encoding("UTF-8");

$filepath = "xxxxxxxxxxxx/school.pdf";


$headers = "Content-Type: multipart/mixed;boundary=\"" . $boundary . "\"\n";


$message = "--" . $boundary . "\n";



$message .= "https://www.yahoo.co.jp/school.pdf\n";
$message .= "--" . $boundary . "\n";

$message .= "Content-Type: application/pdf\n";
$message .= "Content-Disposition: attachment; filename=\"school.pdf\n";
$message .= "Content-Transfer-Encoding: base64\n";
$message .= "\n";
$message .= chunk_split(base64_encode(file_get_contents('school.pdf')))."\n";

$message .= "--" . $bound4ary . "--";



 $to = "$email";
 $subject = "xxxxxxxxxxxxxxx";
 $message ="「xxxxxxxxxxxxxx」xxxxxxxxx。\n
名前:$name"."様\nふりがな:$fname"."様\n性別:$gender\n名前(保護者):$name2"."様\nふりがな:$fname2"."様\n住所:$address\n連絡先:$tel\nメール:$email\n学年:$class\n時間:$time\n時間変更可否:$free\n
それではx月x日(x)当日お待ちしております。\n
 ─────-- -  -            -  - --─────\n
 ┏┌┌┌┌  xxxxxx \n
 ┏┏┌┌┌   xxxxxxxxxx\n
 ┏┏┏┌┌     xxxxxxxxx1\n
─────-- -  -            -  - --───── \n";

 $headers = 'From: xxxxxxxxx.jp'."\r\n";
 $headers .= 'bcc: xxxxxxxxx.jp'."\r\n";



$send_mail = mb_send_mail($to, $subject, $message, $headers);

?>
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

-1

$ShiftJIS=array($name,$fname,$gender,$name2,$fname2,$address,$tel,$time,$class,$free,$email,date("Y年/m月/d日 H時i分s秒"));
mb_convert_variables('Shift_JIS', 'UTF-8', $ShiftJIS);

mb_language("Japanese");
mb_internal_encoding("UTF-8");


$filepath = "https://www.sakura.ne.jp/dd/pdf.pdf";
$boundary = "__BOUNDARY__";

$additional_headers = "Content-Type: multipart/mixed;boundary=\"" . $boundary . "\"\n";
$additional_headers .= 'From: xxx@xx.co.jp'."\r\n";
$additional_headers .='bcc: xx@xx.co.jp'."\r\n";

$message = "--" . $boundary . "\n";
$message .= "Content-Type: text/plain; charset=\"ISO-2022-JP\"\n\n";
$message .="この度は「xxx」へのお申し込みありがとうございます。\n以下の内容でお申し込み承りました。\n
名前:$name"."様\nふりがな:$fname"."様\n性別:$gender\n名前(保護者):$name2"."様\nふりがな:$fname2"."様\n住所:$address\n連絡先:$tel\nメール:$email\n学年:$class\n時間:$time\n時間変更可否:$free\n
それではお待ちしております。\n
 ─────-- -  -            -  - --─────\n
 ┏┌┌┌┌  xxxx \n
 ┏┏┌┌┌   xxxxxx\n
 ┏┏┏┌┌     TEL: 03-0333-0333\n
─────-- -  -            -  - --───── \n";

$message .= "--" . $boundary . "\n";

$message .= "Content-Type: application/pdf\n";
$message .= "Content-Disposition: attachment; filename=pdf.pdf\n";
$message .= "Content-Transfer-Encoding: base64\n";
$message .= "\n";
$message .= chunk_split(base64_encode(file_get_contents('pdf.pdf')))."\n";

$message .= "--" . $bound4ary . "--";



$to = "$email";
$subject = "お申し込み";
$send_mail = mb_send_mail($to, $subject, $message, $additional_headers);

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/04/20 18:00

    そうですか、わかりました。
    手動以外にほかの方法はないでしょうか?
    数が多い場合、手動では追いつかないのではと思います。

    キャンセル

  • 2017/04/20 18:11

    手動での発送をサポートするツールを作成するとかですかね。
    投稿された内容をDBに保存しておき、アドレスと送信内容を表示して、送信ボタンを押せば、送信されるとかでよいかと。
    おかしな投稿はスキップすれば、それなりの効果が上がると思います。

    ただ、メールを使用したツールは、考慮点が多いので、ちゃんとした設計のできる人に相談した方がいいですよ。
    SPAMの踏み台にされると、ドメインがブラックリストに登録されて、他のユーザに迷惑をかけたり、影響範囲が非常に広いです。。。

    キャンセル

  • 2017/04/21 09:35

    わかりました。
    ありがとうございます。
    いろいろと勉強になりました。
    慎重に考えておきます。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.93%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る