我将如何修改此sendmail.php代码,使其以正确的格式发送

问题描述

我有一个有效的sendmail.PHP文件,但是当用户从网页提交表单时,它将它单行发送给站点所有者。此外,标题显示不正确。

我只想使其成为一种非常简单的格式。

在诸如Outlook之类的邮件客户端中接收到消息时,它将显示发送电子邮件的人的姓名($ userName),然后在第二行显示主题($ userSubject),在第三行显示显示一些邮件正文。

用户单击电子邮件后,它将以段落形式(并非全部一行)显示$ message 用空格分隔并显示名称,然后输入电话号码,并在下一行发送发件人的电子邮件

有关身体外观的示例:


消息:这是电子邮件的正文。可能是一行还是多行,具体取决于用户在表单中写电子邮件的方式。

例如,假设这是两行,他们就这样提交了。

名称:John Doe

电话:555-555-5555

电子邮件[email protected]


这是我需要纠正的sendmail.PHP代码。任何帮助将不胜感激!

    <?PHP

// Define some constants
define( "RECIPIENT_NAME","Testing Website" );
define( "RECIPIENT_EMAIL","captainObvIoU[email protected]" );

// Read the form values
$success = false;
$userName = isset( $_POST['username'] ) ? preg_replace( "/[^\s\S\.\-\_\@a-zA-Z0-9]/","",$_POST['username'] ) : "";
$senderEmail = isset( $_POST['email'] ) ? preg_replace( "/[^\.\-\_\@a-zA-Z0-9]/",$_POST['email'] ) : "";
$senderPhone = isset( $_POST['phone'] ) ? preg_replace( "/[^\.\-\_\@a-zA-Z0-9]/",$_POST['phone'] ) : "";
$userSubject = isset( $_POST['subject'] ) ? preg_replace( "/[^\s\S\.\-\_\@a-zA-Z0-9]/",$_POST['subject'] ) : "";
$message = isset( $_POST['message'] ) ? preg_replace( "/(From:|To:|BCC:|CC:|Subject:|Content-Type:)/",$_POST['message'] ) : "";

// If all values exist,send the email
if ( $userName && $senderEmail && $senderPhone && $userSubject && $message) {
  $recipient = RECIPIENT_NAME . " <" . RECIPIENT_EMAIL . ">";
  $headers = "$userName" . $userSubject . "";
  $msgBody = 
  "" . $message .  
  " Name:". $userName .  
  " Email: ". $senderEmail . 
  " Phone: ". $senderPhone . "";
  $success = mail( $recipient,$headers,$msgBody );

  //Set Location After Successsfull Submission
  header('Location: contact.html?message=Successful');
}

else{
    //Set Location After Unsuccesssfull Submission
    header('Location: contact.html?message=Failed');    
}

?>

解决方法

在纯文本中,段落由两个换行符分隔。因此,您应该在邮件中用两个换行符替换单个换行符。

然后,您还需要在要放在邮件正文末尾的所有格式化行之间放置换行符。

  $message = str_replace("\n","\n\n",$message);
  $msgBody = $message .  "\n\n" .
  " Name:". $userName .  "\n" .
  " Email: ". $senderEmail .  "\n" .
  " Phone: ". $senderPhone . "";