如何使用PHP在PHP中发送HTML电子邮件

use*_*144 3 html php email smtp

我已经能够在PHP中使用SMTP发送电子邮件,但是当我尝试将内容类型更改为HTML时,电子邮件无法发送.这是我正在尝试使用的代码:

    require_once "Mail.php";

    $from = "FPM <forms@fpmofames.com>";
    $from_name = "FPM";

    $host = "localhost";
    $username = "username";
    $password = "password";

    $subject = "Subject";
    $message = "Message";

    $to = "<example@example.com>";
    $headers = array ('From' => $from,
        'To' => $to,
        'Subject' => $subject,
        'MIME-Version' => '1.0',
        'Content-Type' => "text/html; charset=ISO-8859-1"
    );

    $smtp = Mail::factory('smtp',
        array ('host' => $host,
            'auth' => true,
            'username' => $username,
            'password' => $password));

    $mail = $smtp->send($to, $headers, $message);
Run Code Online (Sandbox Code Playgroud)

如果我从标题中取出'Content-Type'参数,它就会发送消息.我不知道为什么添加会导致问题.

小智 5

我做了一些研究,然后我制作了自己的代码,使用SMTP身份验证发送带有HTML格式的邮件.看这里:

<?php 
require_once "Mail.php";
$url = $_GET['baseUrl']; // source url
$success = false;
$senderName = isset( $_GET['txtname'] ) ? preg_replace( "/[^\.\-\' a-zA-Z0-9]/", "", $_GET['txtname'] ) : "";
$senderEmail = isset( $_GET['txtemail'] ) ? preg_replace( "/[^\.\-\_\@a-zA-Z0-9]/", "", $_GET['txtemail'] ) : "";
$msg = isset( $_GET['txtDesc'] ) ? preg_replace( "/(From:|To:|BCC:|CC:|Subject:|Content-Type:)/", "", $_GET['txtDesc'] ) : "";
$body = '<table width="400" border="0">
  <tr>
    <th scope="col">Name:</th>
    <th scope="col">'.$senderName.'</th>
  </tr>
  <tr>
    <th scope="col">Company:</th>
    <td scope="col">'.$_GET['txtCompany'].'</td>
  </tr>
  <tr>
    <th scope="row">Phone:</th>
    <td>'.$_GET['txtphone'].'</td>
  </tr>
  <tr>
    <th scope="row">E-mail:</th>
    <td>'.$senderEmail.'</td>
  </tr>
  <tr>
    <th scope="row">URL:</th>
    <td>'.$url.'</td>
  </tr>
  <tr>
    <th scope="row">Massage:</th>
    <td>'.$msg.'</td>
  </tr>
</table>';

 $from = $senderName."<".$senderEmail.">";
 $to = "Contact ManagerHR<info@aequitas-infotech.com>";
 $subject = "Hi!";
 $host = "XXX.host.com";
 $username = "username@host.com";
 $password = "*****";
 /* MIME-Version should be "1.0rn" and Content-Type should be "text/html; charset=ISO-8859-1rn" to send an HTML Email */
$headers = array ('MIME-Version' => '1.0rn',
        'Content-Type' => "text/html; charset=ISO-8859-1rn",
        'From' => $from,
        'To' => $to,
        'Subject' => $subject
     );
$smtp = Mail::factory('smtp',
   array ('host' => $host,
     'auth' => true,
     'username' => $username,
     'password' => $password));
$mail = $smtp->send($to, $headers, $body);
 if (PEAR::isError($mail)) {
   echo("<p>" . $mail->getMessage() . "</p>");
  } else {
      header('Location: '.$url); // redirect to url where from inquiry made
   //echo("<p>Message successfully sent!</p>");
  }
 ?>
Run Code Online (Sandbox Code Playgroud)