コマンドめも PHP mb_send_mail()関数

PHPでメール送信するコマンドmb_send_mail()関数をめも。

mb_send_mail()
<?php
    mb_language("Japanese");
    mb_internal_encoding("UTF-8");
mb_send_mail( string $to, // 送信先アドレス string $subject, // タイトル string $message, // 本文 string $headers, // 送信元アドレス string $pform //Return-Path ); ?>

HTMLのサンプルコードを解説した以下のサイトが具体的で分かりやすく、mb_language() を日本語に mb_internal_encoding() をUTF-8に設定して、 $headers と $pform に送信元アドレスとReturn-Pathをそれぞれ指定するとフォームからメール送信できました。

誰でも実装できる!PHPでメール送信を行う方法【初心者向け】現役エンジニアが解説

mailform.html
<html>
<head>
<meta charset="utf-8" />
<script type="text/javascript" charset="UTF-8"></script>
</head>
<body>
    <form action="./confirm.php" method="post">
        <p>受信者</p><input type="text" name="to">
        <p>タイトル</p><input type="text" name="title">
        <p>本文</p><textarea name="content" cols="50" rows="5"></textarea>
        <p><input type="submit" name="send" value="送信"></p>
    </form>
</body>
</html>
confirm.php
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
    <?php
      mb_language("Japanese");
      mb_internal_encoding("UTF-8");
      $to = $_POST['to'];
      $title = $_POST['title'];
      $content = $_POST['content'];
      $headers = 'From: testuser@smtp.example.com';
      if(mb_send_mail($to, $title, $content, $headers, '-f' . 'testuser@smtp.example.com')){
          echo "メールを送信しました";
      } else {
          echo "メールの送信に失敗しました";
      };
    ?>
</body>
</html>

それでも届かないときはメールだけに滅入ることもありますが、そんなときは postfix main.cf, php.ini の次のSMTP設定(意味深)を確認すると良いかもしれません。

/etc/postfix/main.cf
mail_owner = postfix setgid_group = postdrop myhostname = localhost.localdomain # お使いのsmtpサーバー compatibility_level = 2
php.ini
from="testuser@smtp.example.com" SMTP=smtp.example.com smtp_port=465

参考URL: PHPのmail関数で送信できないときに確認したいPostfixの設定

PHPのmb_send_mailでメールが届かない原因と特定のメールアドレスだけ届かない原因

同じカテゴリーの記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です