imap_mail_compose
(PHP 4, PHP 5, PHP 7, PHP 8)
imap_mail_compose — Create a MIME message based on given envelope and body sections
说明
Create a MIME message based on the given envelope
and bodies sections.
参数
envelope-
An associative array of header fields. Valid keys are:
"remail","return_path","date","from","reply_to","in_reply_to","subject","to","cc","bcc"and"message_id", which set the respective message headers to the given string. To set additional headers, the key"custom_headers"is supported, which expects an array of those headers, e.g.["User-Agent: My Mail Client"]. bodies-
An indexed array of bodies. The first body is the main body of the message; only if it has a type of
TYPEMULTIPART, further bodies are processed; these bodies constitute the bodies of the parts.Body Array Structure Key Type Description typeint The MIME type. One of TYPETEXT(default),TYPEMULTIPART,TYPEMESSAGE,TYPEAPPLICATION,TYPEAUDIO,TYPEIMAGE,TYPEMODELorTYPEOTHER.encodingint The Content-Transfer-Encoding. One ofENC7BIT(default),ENC8BIT,ENCBINARY,ENCBASE64,ENCQUOTEDPRINTABLEorENCOTHER.charsetstring The charset parameter of the MIME type. type.parametersarray An associative array of Content-Typeparameter names and their values.subtypestring The MIME subtype, e.g. 'jpeg'forTYPEIMAGE.idstring The Content-ID.descriptionstring The Content-Description.disposition.typestring The Content-Disposition, e.g.'attachment'.dispositionarray An associative array of Content-Dispositionparameter names and values.contents.datastring The payload. linesint The size of the payload in lines. bytesint The size of the payload in bytes. md5string The MD5 checksum of the payload.
示例
示例 #1 imap_mail_compose() example
<?php
$envelope["from"]= "joe@example.com";
$envelope["to"] = "foo@example.com";
$envelope["cc"] = "bar@example.com";
$part1["type"] = TYPEMULTIPART;
$part1["subtype"] = "mixed";
$filename = "/tmp/imap.c.gz";
$fp = fopen($filename, "r");
$contents = fread($fp, filesize($filename));
fclose($fp);
$part2["type"] = TYPEAPPLICATION;
$part2["encoding"] = ENCBINARY;
$part2["subtype"] = "octet-stream";
$part2["description"] = basename($filename);
$part2["contents.data"] = $contents;
$part3["type"] = TYPETEXT;
$part3["subtype"] = "plain";
$part3["description"] = "description3";
$part3["contents.data"] = "contents.data3\n\n\n\t";
$body[1] = $part1;
$body[2] = $part2;
$body[3] = $part3;
echo nl2br(imap_mail_compose($envelope, $body));
?>用户贡献的备注 5 notes
The custom_headers envelope documentation is misleading. Its not actually an "associative array", its a regular array of headers.
This is wrong:
<?php
$envelope = [
//...
"custom_headers" => [
"X-SES-CONFIGURATION-SET" => "example",
"X-SES-MESSAGE-TAGS" => "emailType=example"
]
];
?>
This is right:
<?php
$envelope = [
//...
"custom_headers" => [
"X-SES-CONFIGURATION-SET: example",
"X-SES-MESSAGE-TAGS: emailType=example"
]
];
?>The documentation above does not mention that you can use the index ["charset"] to set the character set of the messsage part.
Example:
$part1["type"]= "TEXT";
$part1["subtype"]="PLAIN";
$part1["charset"] = "koi8-r";
to send a message in Russian-koi8.
Scott =)If you wish to send the output of this function, simply use it for the headers argument of imap_mail() or mail(). Keep in mind that those functions set the To: and Subject: headers, so including them in the envelope will create double entries.It is a good idea to set the date header:
$envelope['date']=date('r');For some email clients its necessary first to start with the body text and end with the attachment(s). Otherwise all the parts end up in attachments, also the body text (took a while to find this).
So example #1 (above) should be switched over, like:
$body[1] = $part1;
$body[2] = $part3;
$body[3] = $part2;备份地址:http://www.lvesu.com/blog/php/function.imap-mail-compose.php