在提交表单时,它会发送一封几乎没有组织的电子邮件,例如:
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;
}
答案 0 :(得分:2)
CSS支持在不同的电子邮件客户端中确实有所不同您的代码正在<style>
标记的head
标记中加载CSS。这仅在某些电子邮件客户端中受支持,因此有些客户端根本不会加载任何CSS。
我发现包含CSS的最广泛支持的方法是在每个单独的HTML元素上使用style
属性(是的,这是一件痛苦的事)。此外,并非所有css规则都受支持。电子邮件客户端支持可以找到的内容here.
此外,请确保使用正确的电子邮件标头发送带有PHP邮件功能的HTML电子邮件。请参阅example #4。
答案 1 :(得分:0)