web-dev-qa-db-ja.com

PHP経由でHTMLをメールで送信しますか?

PHPを使用して画像付きのHTML形式のメールを送信するにはどうすればよいですか?いくつかの設定と、電子メールを介してアドレスに送信されるHTML出力を含むページが必要です。私は何をすべきか?主な問題は、ファイルを添付することです。どうすればできますか?

57
Abadis

サーバー上に画像を残し、PHP + CSSを送信するのは非常に簡単です...

$to = '[email protected]';

$subject = 'Website Change Reqest';

$headers = "From: " . strip_tags($_POST['req-email']) . "\r\n";
$headers .= "Reply-To: ". strip_tags($_POST['req-email']) . "\r\n";
$headers .= "CC: [email protected]\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=UTF-8\r\n";

$message = '<p><strong>This is strong text</strong> while this is not.</p>';


mail($to, $subject, $message, $headers);

メーラーと受信者に、電子メールに(できれば)整形されたHTMLが含まれており、解釈する必要があることを伝えるのはこの行です。

$headers .= "Content-Type: text/html; charset=UTF-8\r\n";

ここに私が情報を得たリンクがあります。( link ...

ただし、セキュリティが必要になります...

118
Chris

画像の絶対パスを使用してhtmlをコーディングする必要があります。絶対パスとは、サーバーに画像をアップロードし、画像のsrc属性にこの<img src="http://yourdomain.com/images/example.jpg">のような直接パスを指定する必要があることを意味します。

参照用のPHPコードを以下に示します:- http://www.php.net/manual/en/function.mail.php

<?php
// multiple recipients
$to  = '[email protected]' . ', '; // note the comma
$to .= '[email protected]';

// subject
$subject = 'Birthday Reminders for August';

// message
$message = '
  <p>Here are the birthdays upcoming in August!</p>
';

// To send HTML mail, the Content-type header must be set
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";

// Additional headers
$headers .= 'To: Mary <[email protected]>, Kelly <[email protected]>' . "\r\n";
$headers .= 'From: Birthday Reminder <[email protected]>' . "\r\n";


// Mail it
mail($to, $subject, $message, $headers);
?>
17
Subhajit

私はこのコードを持っているので、自分のサイトで完璧に動作します

  public function forgotpassword($pass,$name,$to)
    {
        $body ="<table  width=100% border=0><tr><td>";
        $body .= "<img width=200 src='";
        $body .= $this->imageUrl();
        $body .="'></img></td><td style=position:absolute;left:350;top:60;><h2><font color = #346699>PMS Pvt Ltd.</font><h2></td></tr>";
        $body .='<tr><td colspan=2><br/><br/><br/><strong>Dear '.$name.',</strong></td></tr>';
        $body .= '<tr><td colspan=2><br/><font size=3>As per Your request we send Your Password.</font><br/><br/>Password is : <b>'.$pass.'</b></td></tr>';
        $body .= '<tr><td colspan=2><br/>If you have any questions, please feel free to contact us at:<br/><a href="mailto:[email protected]" target="_blank">[email protected]</a></td></tr>';
        $body .= '<tr><td colspan=2><br/><br/>Best regards,<br>The PMS Team.</td></tr></table>';
        $subject = "Forgot Password";
        $this->sendmail($body,$to,$subject);
    }

メール機能

   function sendmail($body,$to,$subject)
        {
            //require_once 'init.php';


            $from='[email protected]';      
            $headersfrom='';
            $headersfrom .= 'MIME-Version: 1.0' . "\r\n";
            $headersfrom .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
            $headersfrom .= 'From: '.$from.' '. "\r\n";
            mail($to,$subject,$body,$headersfrom);
        }

画像URL機能は、1つの機能のみで変更した画像を変更したい場合に使用しますパスワードを忘れたなどの多くのメール機能がありますそこにユーザーを作成します私は直接画像URL機能を使用しています.

function imageUrl()
    {
        return "http://".$_SERVER['SERVER_NAME'].substr($_SERVER['SCRIPT_NAME'], 0, strrpos($_SERVER['SCRIPT_NAME'], "/")+1)."images/capacity.jpg";
    }
9
Jalpesh Patel

Htmlメールの送信は、phpを使用した通常のメールの送信と大差ありません。追加する必要があるのは、php mail()関数のヘッダーパラメーターに沿ったコンテンツタイプです。以下に例を示します。

<?php
    $to = "[email protected]";
    $subject = "HTML email";
    $message = "
    <html>
    <head>
    <title>HTML email</title>
    </head>
    <body>
    <p>A table as email</p>
    <table>
    <tr>
    <th>Firstname</th>
    <th>Lastname</th>
    </tr>
    <tr>
    <td>Fname</td>
    <td>Sname</td>
    </tr>
    </table>
    </body>
    </html>
    ";
    // Always set content-type when sending HTML email
    $headers = "MIME-Version: 1.0" . "\r\n";
    $headers .= "Content-type:text/html;charset=UTF-8" . "\r\b";
    $headers .= 'From: name' . "\r\n";
    mail($to,$subject,$message,$headers);
?>

W3schoolsによる詳細な説明については、 here も確認できます。

5
Joseph

HTMLコンテンツを含むメールをPHP経由で簡単に送信できます。次のスクリプトを使用します。

<?php
$to = '[email protected]';
$subject = "Send HTML Email Using PHP";

$htmlContent = '
<html>
<body>
    <h1>Send HTML Email Using PHP</h1>
    <p>This is a HTMl email using PHP by CodexWorld</p>
</body>
</html>';

// Set content-type header for sending HTML email
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";

// Additional headers
$headers .= 'From: CodexWorld<[email protected]>' . "\r\n";
$headers .= 'Cc: [email protected]' . "\r\n";
$headers .= 'Bcc: [email protected]' . "\r\n";

// Send email
if(mail($to,$subject,$htmlContent,$headers)):
    $successMsg = 'Email has sent successfully.';
else:
    $errorMsg = 'Email sending fail.';
endif;
?>

ソースコードとライブデモはこちらからご覧いただけます- PHPを使用して美しいHTMLメールを送信

3
JoyGuru

最も簡単な方法は、おそらくZend FrameworkまたはCakePHPやSymphonyなどの他のフレームワークを使用することです。

標準のmail関数でも実行できますが、写真の添付方法についてもう少し知識が必要です。

または、イメージを添付するのではなく、サーバーでホストするだけです。 HTMLメールの送信については、mail関数のドキュメントに記載されています。

2
Martijn

PHPMailerを使用し、

HTMLメールを送信するには、$ mail-> isHTML()のみを設定する必要があり、HTMLタグで本文を設定できます

これはよく書かれたチュートリアルです:

rohitashv.wordpress.com/2013/01/19/how-to-send-mail-using-php/

1

秘Theは、htmlボディパーツを作成するときに、Image mimeパーツのコンテンツIDを知ることです。要約すると、imgタグの作成になります

https://github.com/horde/horde/blob/master/kronolith/lib/Kronolith.php

実際の例については、関数buildMimeMessageをご覧ください。

1
Ralf Lang