May-MIME实例

May-MIME——一个MIME邮件的生成与发送

例子

<?PHP

包括“邮件,PHP”
包括
“邮件/ MIME。PHP”

美元文本=“电子邮件的文本版本”
$HTML= <正文> HTML版本的电子邮件
$文件='/home /李察/示例.php
$CRLF=“\n”
$HDRS=数组(数组)
              
“从”= >“You@ YouDuMay.com”
              
“主体”= >“测试MIME消息”
              


$MIME=新的邮件模拟(数组)“EOL”= >$CRLF);

$MIME>沉降体美元文本
$MIME>赛特尔姆斯$HTML
$MIME>附表$文件“文本/平原”

$体=$MIME>得到();
$HDRS=$MIME>报头$HDRS

邮资=邮件::工厂“邮件”
邮资>发送邮政局长@本地主机$HDRS$体

>
编码邮件(P)R埃维斯) 邮件模拟编码(NeXt)
最后更新:星期六,2019年2月16日下载文档
你觉得这页上的东西不对吗?拜托提交错误报告.
查看此页:
  • 英语

用户注释:

注:MAGESH@ ARMAVEN
你好,

在这两种情况下,与附件,邮件发送与发送日期和时间细节。在我们的测试邮件中接收到Outlook。不是发送“日期和时间”,而是在邮件标题中显示“发送:没有”。

请帮我解决这个问题。

当做,
马格什
注:FrDRKK@ KRAFFFTIE SE
SMTP和UTF-8

这是SMTP的添加。

即使使用标题为UTF-8,也有使用UTF-8的问题。

改变/ /包含/PEAR/mail /MIME的PHP

“HTMLCARSET”=“UTF-8”,
“TrutsHARSET”= >“UTF-8”,
'Tuth-CuCuSe'=> UTF-8

我可以添加这些

$MIMePARAM[ [ TrimeActudio编码] ]=“8bit”;
$MIMePARAM[[ TeXOTHARSET] ] =“UTF-8”;
$MIMEPARAM[ [ HTMLL CARSET ] ] =“UTF-8”;
$MIMEPARAM[ [头尾字符集] ] =“UTF-8”;

见下面的例子。



//需要梨邮件包
要求一次(“邮件.php”);
要求一次(“邮件/ MIME。PHP”);

$text =“test”;
$HTMLI消息=<!DOCTYPE HTML公共“-//W3C//DTD HTML 4.01过渡//EN”“http://www. W3.or/tr/HTML4/松散.dt>”>

<头>
< meta http Adv= =“内容类型”内容=“text /html;字符集=UTF-8”>
<…>标题>
< /头>
<体>


<正文>


标题[ [从] ] =“…”
美元标题[ [ to ] ] =“…”
美元标题[ [主题] ] =“…”
$标题[[内容类型] ] =‘文本/HTML;字符集=UTF-8’;
$标题[[内容转移编码] ]=“8bit”;


$MIME=新Mayl MIME;
$MIME-> TestXTBOORD($text);
$MIME-> SETTMLBORD($HTMLI消息);
$MIMePARAMS = ARRAY();


//它拒绝更改为UTF-8,即使标头设置为此,在添加了以下行后,它工作了。

$MIMePARAM[ [ TrimeActudio编码] ]=“8bit”;
$MIMePARAM[[ TeXOTHARSET] ] =“UTF-8”;
$MIMEPARAM[ [ HTMLL CARSET ] ] =“UTF-8”;
$MIMEPARAM[ [头尾字符集] ] =“UTF-8”;

$MIMePARAM[[调试] ] =“true”;

$BOOR= $MIME-> GET($MIMEPARAMS);
$报头=$MIME->报头($报头);
$pGeQueEng==“现在邮件”。


//SMTP服务器名称、端口、用户/密码
$SMTPFIMP[ [主机] ] =“…”;
$sMTpFiel[ [端口] ]=“26”;
$sMTpFiel[ [ Auth] ]=TRUE;
$sMTpFiel[ [用户名] ] =“…”;
$sMTpFiel[ [密码] ]=“…”;
$sMTpFiel[ [调试] ] =“true”;


//使用Mail::工厂方法创建邮件对象
$mail = &邮件::工厂(“SMTP”,$SMTPFIN);

$mail ->发送($to,$头,$体);
注:Digi6@ Gmail网站
新梨用户在这里,我想简单地提一下。

梨安装MIME-mail

没有安装所有需要的东西。我也必须奔跑

梨安装邮件

否则,PieldIr>/Mel.PHP就不存在了,PieldIr>/mail/Mail也不存在。

这显然会导致我的命令失败。


我还想提一下,$MIME-> Head()的方式有点错误,它完全地改变了我的“从”变量。你知道,我喜欢把公司名称和电子邮件地址一起,所以我的字符串看起来像这样:

从“=”>“公司名称”<用户@域.com >

Healths-()函数将运行,然后如果从数组中输出“Of”值,我将得到:

“公司”名称[\n] <用户>域名>

(或者沿着这条线的东西)

首先,我不知道它是如何做的引文或为什么它会移动一个,让另一个逃脱,因为它应该是。

当这种情况发生时,电子邮件不会被传递。它永远消失了。

在我调用Head()之后,必须执行这行来修复它所中断的内容:

$HDRS [从' ]=$from;

据我所知,当电子邮件地址之前的名称中有一个空格时,需要引号。那么为什么会这样呢?
注:查理·布朗
失败了。改变这一行:
$HDRs=$MIME-> TXEDEADER($HDRS);
到:
$HDRS=$MIME->报头($HDRS);

前者返回一个字符串,这会导致sEnter()在期望数组时失败。
注:JEPE@ CK.DK
如果您更改为SMTP(和POSSsEnmail),邮件方法请记住
$HDRs=$MIME-> TXHEDADER($HDRS);将破解代码。

使用

$HDRS=$MIME->报头($HDRS);而不是

我花了一段时间才明白:
注:Paul@ SP-TECH.CO.U.
当使用“邮件”作为发送方法(如本例中)时,邮件的第二个参数::FaseYY()成为PHP邮件()的第五个参数。

$Mail=邮件::工厂(‘邮件’,’-F’@ YouNealWeb.com’);

这将设置电子邮件信封返回路径You@ YouDuMay.com,所以反弹电子邮件去某处有用。

如果没有设置,返回路径可能类似于“无人”服务器名称。
注:保罗
要正确地设置信封回复标题(以使弹出邮件到达您期望的位置),对示例进行这些更改:

<?PHP
包括(“邮件,PHP”
包括(
“邮件/ MIME。PHP”
包括(
“邮件/邮件,PHP”//添加增强的发送函数

美元文本=“电子邮件的文本版本”
$HTML= <正文> HTML版本的电子邮件
$文件='/home /李察/示例.php
$CRLF=“\n”
$HDRS=数组(数组)
              
“从”= >“You@ YouDuMay.com”
              
“主体”= >“测试MIME消息”
              


$MIME=新的邮件模拟$CRLF

$MIME>沉降体美元文本
$MIME>赛特尔姆斯$HTML
$MIME>附表$文件“文本/平原”

/不要尝试以相反的顺序调用这些行。
$体=$MIME>得到();
$HDRS=$MIME>报头$HDRS

邮资=邮件::工厂“邮件”'-You@ YouDounay.com//为PHP邮件()函数添加第五参数
邮资>发送邮政局长@本地主机$HDRS$体
>


我们包括“邮件/邮件.php”,其中包含了发送函数的更新版本(Mail.php中的一个是不推荐的)。这允许PHP邮件()函数的第五个参数作为邮件的一个参数::
注意事项:E5KIM0@ HoMAmail
我有个问题…在我的Windows O.S中,这个脚本运行得非常完美。当我尝试将它部署到CITOS服务器时,当我尝试$MIME=NeXMay-MIME($CRLF)时,脚本失败了,并且我不知道如何使它有效。我已经安装了PEAR包,仍然不起作用!有什么想法吗?感谢
注意事项:E5KIM0@ HoMAmail
你好。这是我的问题…每当我尝试在CENTOS中使用这个测试时,当他尝试“$MIME=NealMayl MIME($CRLF)”时,它就不好用了。在WunOS Runnig-XAMPP中,它确实起作用,但我不明白为什么他在CCENOS上失败了??!有人能帮我吗?
注意事项:USER @ ExpLo.com
此示例要求安装PaulePaymail邮件,并正确设置PHP CixDePyPATH。
注:罗伯特.约翰逊@ ICAP.com
看下面的NWDEV的评论,“\r\n”永远不会扩展到CR-LF,它应该是双引号:“\r\n”。
注:MK@ DigialePro
当把一个文件附加到一封电子邮件时,我遇到了问题:
<代码>
$MIME=新Mayl MIME(“\n”);
$MIME-> TestXTBOORD($TXTBORD);
$MIME -> SETTMLBORD($HTMLBOOST);

If(ISHARCHORD($附件)){
Frach(附件$$附件){
$MIME-> AdDATaTeCH(附件$[文件],附件$[ CordunType ],$附件(“名称”),$附件(“ISfile”),$附件(“编码”);
}
}

$MeavyBoo= $MIME-> GET($BuiBugdPARAMS);
$MealHealths= $MIME->头($mail头);

$Mail=邮件::工厂($->后端,$$->后端PARAMARS);

$mail ->发送($->累加,$mail头,$Mail体);
< /代码>

在这个用例中,邮件被发送,但是几乎所有的网页邮件和电子邮件程序都没有显示附件。我分析了发送电子邮件的源代码,我发现对于不同的电子邮件部分使用了相同的边界(这里是“Y.D188467 FAFAF9F24DF2E485 A2D76019”):
<代码>
到[电子邮件地址]
主题:[主题]
MIME版本:1
来自[另一个电子邮件地址]
内容类型:多部/混合型;
边界=“=18D8467 FAFAF9F24DF2E45 85 A2D76019”
日期:星期四,2009年9月17日17:37∶41 + 0200(CEST)

--Y18D8467 FAFAF9F24DF2E45 85 A2D76019
内容类型:多部分/可选;
边界=“=18D8467 FAFAF9F24DF2E45 85 A2D76019”

--= 18D8467 FAFAF9F24DF2E45 85 A2D76019
内容传送编码:BASE64
内容类型:文本/平面;字符集=“UTF-8”

内容
--= 18D8467 FAFAF9F24DF2E45 85 A2D76019
内容传送编码:BASE64
内容类型:文本/HTML;字符集=“UTF-8”

内容
--= 18D8467 FAFAF9F24DF2E45 85 A2D76019

--= 18D8467 FAFAF9F24DF2E45 85 A2D76019
内容传送编码:BASE64
内容类型:应用/PDF;
Name=“文件.pdf”;
内容处置:依恋;
文件名=“文件.pdf”;

内容
--Y18D8467 FAFAF9F24DF2E45 85 A2D76019
< /代码>

所以,我写了一个简单的(不是最佳的)解决方案(只测试了一个附件,需要进一步的测试,或者更好:May-MIME应该纠正,如果这是一个bug):
<代码>
$MeavyBoo= $MIME-> GET($BuiBugdPARAMS);
$MealHealths= $MIME->头($mail头);

//解决方案,因为如果附件存在,那么几个电子邮件部分使用相同的边界
如果(sieof($->附件)>0){
PREGGRADION(“/边界=\”(.[^ \)] *“/E”,$邮件头[ [内容类型] ],$边界);
$边界= $边界〔1〕;
$BangDyyNe==$BundReNeNew;
$mail头[[内容类型] ] = PrimgRead('/Orth=)(.[^)],'/','Beale= ''。$BangDyNeX.“$mail头[ [内容类型] ];
$MyBooS= PrimgRead(“/^ \ --”)。边界。”“S”,“”。$BunDyyNeX,$MyMebe);
$MyBooS= PrimgRead(“/”)。边界。”$/s“,$BangDyNeX.”-“$mail体”;
$MyBooS= PrimgRead(“/”)。边界。”——(\s*)——“。边界。”“S”,“边界”。——1美元——“$BunDyyNeX,$MyMebe);
}

/或解决方法,因为“\r”会中断电子邮件(可能是PEAR的问题::May-MIME和后缀)
PROACH($mail头作为$key=$$报头){
$MealHealths[$Ke] = StruxRead(\\r\n),“\n”,$报头;
}

$Mail=邮件::工厂($->后端,$$->后端PARAMARS);
< /代码>

这改变了TopPress电子邮件部分的边界。
注:NWdev
当设置$CRLF参数时,不要将值设置为:

<代码>
定义(‘CRLF’,‘r\n’);

$MIME=新May-MIME(CRLF);

< /代码>

在我的例子中,通过CRLF常量(相对于一个变量或实际的\r\n)文本导致了一个电子邮件,它看起来有正确的\r\n终止线,但是内容通过纯文本(它是多部分HTML和文本电子邮件)。

所以,如果你定义CRLF常量并节省大量的头部撞击,就用这个。

<代码>
定义(‘CRLF’,‘r\n’);

$CRLF=CRLF;
$MIME=新Mayl MIME($CRLF);

< /代码>

或者,当然只是直接传递价值…

<代码>
$MIME=新Mayl MIME(’\r\n’);
< /代码>
注:维塞曼
“好友”…SeNED()方法属于邮件包,而不是May-MIME包。如果查看邮件的文档,您会发现sEnter()在错误的情况下返回PARILAREURE实例。因此,正确的错误检查是这样的:
$RES=$mail ->发送(…);
如果(PEAR:ISError($RES)){
/误差
}否则{
成功
}

= HTP://Piel.P.P.NET/Maunal/En/PcAgE.Mel.Mel.sEn.PHP
注:BudydDigabySuffaleA.com
我注意到,不知道在哪里可以找到简单的错误处理。
如果我错了,请纠正我,但我认为这是可行的:
如果($MayObjult:>发送($接收者,$报头,$消息))
{
它起作用了
}
其他的
{
它不起作用
}
注:咨询@ AyLeLe.com
认为“N”是足够的,但事实并非如此,这是一个常见的错误!这是因为SMTP标准指定所有的行必须由“\r\n”终止,而不仅仅是“\n”或仅仅是“\r”。如果只使用“\n”,一些SMTP守护进程将出现问题。

这就是为什么类的默认行为是使用“\r\n”并且它不应该被重写的原因。
注:Deger
我无法使用任何SMTP方法示例,我花了一段时间来学习如何使用这个包。我希望这个消息使这个PEAR软件包最终用户手册更加成熟,使它可以直接从分支机构就餐。

SMTP示例:
请注意:
AuthoSSL是一个依赖包。你可以得到这样的:梨安装- AlordPs Mayl MIME-1.4.0.TGZ

<?PHP
$ You-HTMLMIL消息
=“<!DOCTYPE HTML公共“-//W3C//DTD HTML 4.01过渡//EN”“http://www. W3.or/tr/HTML4/松散.dt>”>

<头>
< meta http Adv= =“内容类型”内容=“text /html;字符集=UTF-8”>
你好世界!<标题>
< /头>
<体>
<你好世界!


<正文>

//需要梨邮件包
要求一次“邮件.php”
要求一次
“邮件/ MIME .php”
美元接受者='DEGER \ DEGER @
/ /附加标题
美元首部[“从”='DEGER \ DEGER @
美元首部[“to”='DEGER \ DEGER @
美元首部[“主体”=“即食梨”
$CRLF=“\n”
$MIME=新的邮件模拟$CRLF

$MIME>赛特尔姆斯$ You-HTMLMIL消息
$消息=$MIME>得到();
美元首部=$MIME>报头美元首部
$PARAMS[“主持人”=邮件。
$PARAMS[“奥特”=真的/Note:没有分隔符*

//NOTE:对于Digest-D5也没有分隔符*。
如果你想用朴素的,
你必须使用这样的分隔符:“平原”
$PARAMS[“奥特”=文摘-MD5
$PARAMS[“用户名”=“你的用户名”
$PARAMS[“密码”=“您的密码”
$PARAMS[“本地主机”=“这个。可以。是你的IP。”
/调试,让我们看看目前发生了什么。
$PARAMS[“调试”=“真”
//使用Mail::工厂方法创建邮件对象
邮资邮件=邮件::工厂“SMTP”$PARAMS
邮资邮件>发送美元接受者美元首部$消息
>
注:JB@ FuxQuestest.com
关于$MIME->报头($HDRS);

我没有看到它被记录,但是如果你想改写页眉,还有第二个参数必须通过。例如,您的脚本发送一封电子邮件。然后,你想发送另一封电子邮件给其他有不同主题的人。默认情况下,MIME将使用以前发送的头文件。如果你想覆盖它们,你需要这样做:
$MIME->报头($HDRS,TRUE);
注:JoH@
“n”和“n”有区别。使用单引号,PHP将其解释为文字字符串。双引号用于解释字符串。

因此,通过'n '完全吐出\n。

通过“\n”吐出创建新行所需的实际回车返回/换行代码。

如果你想要一个单行分隔符(就像一个BR/>),只需传递一个“\n”。如果你想在事物之间建立一个空白行空间(即

),通过“\\n\n”。
等等,三,四,五,无论哪条线。

使用实例:
$消息=“你好”;
$消息=“\n\n”。“世界!”

要求一次(“邮件。PHP”);
要求一次(“邮件/ MIME。PHP”);

$CRLF=“\n”;/ /请注意双引号。
$HDRS =数组
从“=”>“某人不回答”示例.COM>
“主题”=“某个主题。”


$MIME=新Mayl MIME($CRLF);
$MIME-> TestXTBOORD($消息);

$主体= $MIME-> GET();
$HDRS=$MIME->报头($HDRS);

$mail=邮件::工厂(邮件);
$mail ->发送(“FooBar @示例.com”,$HDRS,$体);

这会给你发送一个看起来像这样的电子邮件:

你好

世界!
注:没有人
回复:来自罗尔夫的评论

注意“\n”与“\n”不同。
注:ROFF.FoFunNS@ GMX.NET
传递MelayMIME构造函数中CRLF参数的“\n”对我无效,并产生无效邮件。

省略参数(因此使用默认值)效果良好!