PHP Web表单;样式化外发电子邮件的外观

时间:2013-02-22 16:52:08

标签: php css webforms

在提交表单时,它会发送一封几乎没有组织的电子邮件,例如:

Name:
JohnDoe
email:
johndoe@gmail.com
message:
blah, blah, blah

我希望标签左对齐,值右对齐以及向电子邮件添加背景图片。我知道我需要使用桌子;但我在PHP中并不精通。看看代码,我相信这条带与外观有关。我从html-form-guide.com获得了表格。非常感谢任何帮助,谢谢。

function FormSubmissionToMail()
{
    $ret_str='';
    foreach($_POST as $key=>$value)
    {
        if(!$this->IsInternalVariable($key))
        {
            $value = htmlentities($value,ENT_QUOTES,"UTF-8");
            $value = nl2br($value);
            $key = ucfirst($key);
            $ret_str .= "<div class='label'>$key :</div><div class='value'>$value </div>\n";
        }
    }
    foreach($this->fileupload_fields as $upload_field)
    {
        $field_name = $upload_field["name"];
        if(!$this->IsFileUploaded($field_name))
        {
            continue;
        }        

        $filename = basename($_FILES[$field_name]['name']);

        $ret_str .= "<div class='label'>File upload '$field_name' :</div><div class='value'>$filename </div>\n";
    }
    return $ret_str;
}

function GetMailStyle()
{
    $retstr = "\n<style>".
    "body,.label, { font-family:Arial,Verdana; } ".
    ".label {font-weight:bold; margin-top:5px; font-size:1em; color:#000;} ".
    ".value {margin-bottom:15px;font-size:0.8em;padding-left:5px; font-family:Helvetica;} ".
    "</style>\n";

    return $retstr;
}
function GetHTMLHeaderPart()
{
     $retstr = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">'."\n".
               '<html><head><title></title>'.
               '<meta http-equiv=Content-Type content="text/html; charset=utf-8">';
     $retstr .= $this->GetMailStyle();
     $retstr .= '</head><body>';
     return $retstr;
}
function GetHTMLFooterPart()
{
    $retstr ='</body></html>';
    return $retstr ;
}
function ComposeFormtoEmail()
{
    $header = $this->GetHTMLHeaderPart();
    $formsubmission = $this->FormSubmissionToMail();
    $footer = $this->GetHTMLFooterPart();
    $message = $header."Submission from 'contact us' form:<p>$formsubmission</p><hr/>".$footer;

    return $message;
}

2 个答案:

答案 0 :(得分:2)

CSS支持在不同的电子邮件客户端中确实有所不同您的代码正在<style>标记的head标记中加载CSS。这仅在某些电子邮件客户端中受支持,因此有些客户端根本不会加载任何CSS。

我发现包含CSS的最广泛支持的方法是在每个单独的HTML元素上使用style属性(是的,这是一件痛苦的事)。此外,并非所有css规则都受支持。电子邮件客户端支持可以找到的内容here.

的便捷指南

此外,请确保使用正确的电子邮件标头发送带有PHP邮件功能的HTML电子邮件。请参阅example #4

答案 1 :(得分:0)

如果您只需要发送电子邮件,最好将html.inc导入并导入 与

require(html.inc) 

将变量放入文件中,然后发送电子邮件phpmailer

将此用于html.inc