我有这样的代码来发送电子邮件:
// create email body and send it - for a domain price offer
$to = 'user@domain.com';
$email_subject = "$$price offer for $domain";
$email_body = " $name is offering $$price for $domain 'n'n ".
" Message: $message 'n'n ".
" Contact: $email_address ";
$headers = 'MIME-Version: 1.0' . "'r'n";
//$headers .= 'Content-type: text/html; charset=utf-8' . "'r'n";
$headers .= 'From: Domain Parking <domainforsale@domain.com>' . "'r'n";
$headers .= 'Reply-To: ' . $email_address . "'r'n";
mail($to,$email_subject,$email_body,$headers);
注意$email_subject
和$email_body
变量;我使用$$price
来输出类似$12.34
的内容。
这是个好主意吗?有更好的方法来完成同样的事情吗?
$foo = "bar";
echo "$$foo"; //prints $bar
就是这样。不过,使用这种语法会更易读:
echo '$' . $foo;
除此之外,您应该阅读http://php.net/manual/en/function.mail.php页除此之外,它还指定您应该使用'r'n
来分隔标头,而您在一些地方使用'n'n
。
尽管它有效,但建议您执行以下操作之一:
$email_subject = '$' . $price . ' offer for ' . $domain;
$email_subject = sprintf('$%s price offer for %s', $price, $domain);
$email_subject = "'$$price offer for $domain";
顺便说一句,mail()
可能会为您做到这一点,但您应该清理变量,以确保它们不包含换行符。
我更喜欢使用sprintf()
进行格式化,如下所示:
// create email body and send it - for a domain price offer
$to = 'user@domain.com';
$email_subject = sprintf("%s offer for %s", $price, $domain);
$email_body = sprintf("%s is offering %s for $domain 'n'n ", $name, $price)
. sprintf(" Message: %s 'n'n ", $message)
. sprintf(" Contact: %s ", $email_address)
;
$headers = 'MIME-Version: 1.0' . "'r'n";
//$headers .= 'Content-type: text/html; charset=utf-8' . "'r'n";
$headers .= 'From: Domain Parking <domainforsale@domain.com>' . "'r'n";
$headers .= 'Reply-To: ' . $email_address . "'r'n";
mail($to,$email_subject,$email_body,$headers);