PHP 使用PHP发送电子邮件
PHP必须正确配置在 php.ini 文件,该文件包含您的系统发送电子邮件的细节。打开位于 /etc/ 目录中的php.ini文件,并找到名为 [mail function] 的部分。
Windows用户应确保提供两个指令。第一个被称为SMTP,用于定义你的电子邮件服务器地址。第二个被称为sendmail_from,用于定义你自己的电子邮件地址。
Windows的配置应该类似于这样−
[mail function]
; For Win32 only.
SMTP = smtp.secureserver.net
; For win32 only
sendmail_from = webmaster@tutorialspoint.com
Linux用户只需要告诉PHP他们的sendmail应用程序的位置。路径和任何所需的开关应该在sendmail_path指令中指定。
Linux的配置应该看起来像这样-
[mail function]
; For Win32 only.
SMTP =
; For win32 only
sendmail_from =
; For Unix only
sendmail_path = /usr/sbin/sendmail -t -i
现在你已经准备好了−
发送纯文本邮件
PHP使用 mail() 函数发送电子邮件。此函数需要三个必需参数,分别是指定收件人的电子邮件地址、消息的主题和实际消息,此外还有其他两个可选参数。
mail( to, subject, message, headers, parameters );
这是每个参数的描述。
序号 | 参数及描述 |
---|---|
1 | to 必需。指定邮件的接收者/接收者 |
2 | subject 必需。指定邮件的主题。此参数不能包含换行符 |
3 | message 必需。定义要发送的消息。每行应用 LF (\n) 分割。行不应超过70个字符 |
4 | headers 可选。指定附加头信息,如 From、Cc 和 Bcc。附加头信息应使用 CRLF (\r\n) 分隔 |
5 | parameters 可选。指定发送邮件程序的其他参数 |
只要调用mail函数,PHP就会尝试发送电子邮件,如果成功则返回true,如果失败则返回false。
可以将多个收件人作为mail()函数的第一个参数指定为逗号分隔的列表。
发送HTML电子邮件
当你使用PHP发送文本消息时,所有的内容都将被视为普通文本。即使你在文本消息中包含HTML标签,它们也将显示为普通文本,而不会按照HTML语法进行格式化。但是PHP提供了发送实际HTML消息的选项。
在发送电子邮件消息时,你可以指定Mime版本、内容类型和字符集来发送HTML电子邮件。
示例
下面的示例将发送一个HTML电子邮件消息到xyz@somedomain.com,并将其抄送到afgh@somedomain.com。你可以编写这个程序,使它从用户那里接收所有内容,然后发送电子邮件。
<html>
<head>
<title>Sending HTML email using PHP</title>
</head>
<body>
<?php
to = "xyz@somedomain.com";subject = "This is subject";
message = "<b>This is HTML message.</b>";message .= "<h1>This is headline.</h1>";
header = "From:abc@somedomain.com \r\n";header .= "Cc:afgh@somedomain.com \r\n";
header .= "MIME-Version: 1.0\r\n";header .= "Content-type: text/html\r\n";
retval = mail (to,subject,message,header);
if(retval == true ) {
echo "Message sent successfully...";
}else {
echo "Message could not be sent...";
}
?>
</body>
</html>
发送带附件的邮件
要发送一个混合内容的电子邮件,需要设置 内容类型 头部为 multipart/mixed 。然后可以在 边界 内指定文本和附件部分。
一个边界以两个连字符开头,后面跟着一个不能出现在电子邮件的正文部分的唯一数字。PHP函数 md5() 用于创建一个32位的十六进制唯一数字。表示电子邮件最后部分的最终边界也必须以两个连字符结尾。
<?php
// request variables // important
from =_REQUEST["from"];
emaila =_REQUEST["emaila"];
filea =_REQUEST["filea"];
if (filea) {
function mail_attachment (from , to,subject, message,attachment){
fileatt =attachment; // Path to the file
fileatt_type = "application/octet-stream"; // File Typestart = strrpos(attachment, '/') == -1 ? strrpos(attachment, '//') : strrpos(attachment, '/')+1;fileatt_name = substr(attachment,start,
strlen(attachment)); // Filename that will be used for the file as the attachmentemail_from = from; // Who the email is fromsubject = "New Attachment Message";
email_subject =subject; // The Subject of the email
email_txt =message; // Message that the email has in it
email_to =to; // Who the email is to
headers = "From: ".email_from;
file = fopen(fileatt,'rb');
data = fread(file,filesize(fileatt)); fclose(file);
msg_txt="\n\n You have recieved a new attachment message fromfrom";
semi_rand = md5(time());mime_boundary = "==Multipart_Boundary_x{semi_rand}x";headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . "
boundary=\"{mime_boundary}\"";email_txt .= msg_txt;email_message .= "This is a multi-part message in MIME format.\n\n" .
"--{mime_boundary}\n" . "Content-Type:text/html; charset = \"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" .email_txt . "\n\n";
data = chunk_split(base64_encode(data));
email_message .= "--{mime_boundary}\n" . "Content-Type: {fileatt_type};\n" .
" name = \"{fileatt_name}\"\n" . //"Content-Disposition: attachment;\n" .
//" filename = \"{fileatt_name}\"\n" . "Content-Transfer-Encoding: base64\n\n" .data . "\n\n" . "--{mime_boundary}--\n";ok = mail(email_to,email_subject, email_message,headers);
if(ok) {
echo "File Sent Successfully.";
unlink(attachment); // delete a file after attachment sent.
}else {
die("Sorry but the email could not be sent. Please go back and try again!");
}
}
move_uploaded_file(_FILES["filea"]["tmp_name"],
'temp/'.basename(_FILES['filea']['name']));
mail_attachment("from", "youremailaddress@gmail.com", "subject", "message", ("temp/"._FILES["filea"]["name"]));
}
?>
<html>
<head>
<script language = "javascript" type = "text/javascript">
function CheckData45() {
with(document.filepost) {
if(filea.value ! = "") {
document.getElementById('one').innerText =
"Attaching File ... Please Wait";
}
}
}
</script>
</head>
<body>
<table width = "100%" height = "100%" border = "0"
cellpadding = "0" cellspacing = "0">
<tr>
<td align = "center">
<form name = "filepost" method = "post"
action = "file.php" enctype = "multipart/form-data" id = "file">
<table width = "300" border = "0" cellspacing = "0"
cellpadding = "0">
<tr valign = "bottom">
<td height = "20">Your Name:</td>
</tr>
<tr>
<td><input name = "from" type = "text"
id = "from" size = "30"></td>
</tr>
<tr valign = "bottom">
<td height = "20">Your Email Address:</td>
</tr>
<tr>
<td class = "frmtxt2"><input name = "emaila"
type = "text" id = "emaila" size = "30"></td>
</tr>
<tr>
<td height = "20" valign = "bottom">Attach File:</td>
</tr>
<tr valign = "bottom">
<td valign = "bottom"><input name = "filea"
type = "file" id = "filea" size = "16"></td>
</tr>
<tr>
<td height = "40" valign = "middle"><input
name = "Reset2" type = "reset" id = "Reset2" value = "Reset">
<input name = "Submit2" type = "submit"
value = "Submit" onClick = "return CheckData45()"></td>
</tr>
</table>
</form>
<center>
<table width = "400">
<tr>
<td id = "one">
</td>
</tr>
</table>
</center>
</td>
</tr>
</table>
</body>
</html>