如何发送电子邮件
概述
发送邮件是web开发人员的日常任务,symfony 1.2让您比以往任何时候都更容易做到这一点ob娱乐下载斯威夫特梅勒.
Swift Mailer是一个经过深思熟虑的、功能齐全的PHP5对象库,可以覆盖你所有的邮件需求。
谨慎
SwiftMailer现在已经升级到了第4版。X是无法通过svn获得的。检查http://swiftmailer.org有关详细信息,并在下面进行必要的调整(等待文档更新)。欧宝官网下载app
它可以在带标记的SVN存储库中使用,因此您的项目不会因为库更新而中断。这将取决于你是否切换到一个新的版本。
ob娱乐下载Symfony从项目中发送电子邮件的方法非常简单。您可以创建一个将呈现电子邮件内容的部分或组件,并使用Swift以灵活的方式发送它。
安装
如果项目已经使用svn,则可以使用svn:外部
属性:
$ CD /path/to/ob娱乐下载symfony/project $ mkdir -p lib/vendor $ CD lib/vendor $ SVN proit SVN:externals . exe
然后添加如下一行:
斯威夫特http://swiftmailer.svn.sourceforge.net/svnroot/swiftmailer/tags/php5/3.3.3/lib/
并运行:
$ SVN update
如果您的项目没有使用SVN,您仍然可以通过签出标记获得该部件作为subversion工作副本。
$ CD /path/to/ob娱乐下载symfony/project $ mkdir -p lib/vendor $ CD lib/vendor $ SVN checkout http://swiftmailer.svn.sourceforge.net/svnroot/swiftmailer/tags/php5/3.3.3/lib/ swift
只需清除缓存以强制刷新类自动加载分辨率,就完成了安装。
配置
没有特定于邮件的配置。
为了保持项目的灵活性,您应该使用app.yml
配置文件保存硬写的电子邮件地址。通过这种方式,您可以根据所处的环境拥有不同的发送者/接收者地址,当有人需要更改它时,他不必挖掘所有的项目代码。换衣服的地方太明显了。
呈现电子邮件
从symfoob娱乐下载ny 1.1 RC2开始,你可以很容易地从一个动作中获得渲染的部分和组件:
mailBody美元=这个美元->getPartial(“mailBody”,数组(“名字”= >“John Doe”));
或
mailBody美元=这个美元->getComponent(“邮件”,“mailBody”,数组(“名字”= >“John Doe”));
发送HTML电子邮件
然后我们用Swift发送上面渲染的邮件:
试一试{//创建mailer和message对象梅勒美元=新斯威夫特(新Swift_Connection_NativeMail());美元的消息=新Swift_Message(的邮件\ '年代主题,mailBody美元,“text / html”);/ /发送梅勒美元->发送(美元的消息,mailTo美元,mailFrom美元);梅勒美元->断开连接();}抓(异常$ e){梅勒美元->断开连接();//处理错误}
发送包含多个部分的电子邮件
有些电子邮件客户端根本不喜欢HTML,因此提供HTML和纯文本两种格式的邮件通常是个好主意。
试一试{//创建mailer和message对象梅勒美元=新斯威夫特(新Swift_Connection_NativeMail());美元的消息=新Swift_Message(“测试邮件主题”);//渲染消息部分mailContext美元=数组(“名字”= >“John Doe”);美元的消息->附加(新Swift_Message_Part(这个美元->getPartial(“邮件/ mailHtmlBody”,mailContext美元),“text / html”));美元的消息->附加(新Swift_Message_Part(这个美元->getPartial(“邮件/ mailTextBody”,mailContext美元),“文本/普通”));/ /发送梅勒美元->发送(美元的消息,mailTo美元,mailFrom美元);梅勒美元->断开连接();}抓(异常$ e){梅勒美元->断开连接();//处理错误}
使用不同的连接设置
创建Swift对象时,可以使用不同的Swift_Connection对象。
Swift_Connection_NativeMail连接驱动程序使用本机PHP吗
邮件()
函数。Swift_Connection_SMTP通过SMTP服务器发送邮件。构造函数接受三个参数,都是可选的:
公共函数__construct(美元的服务器=“localhost”,美元的港口=零,美元的加密=零)
我们将在几篇文章中看到如何使用它通过安全邮件服务器发送邮件,使用gMail安全SMTP。
Swift_Connection_Sendmail使用sendmail二进制文件发送邮件。您可以指定它到构造函数的路径。
Swift_Connection_Multi是第一个特殊的驱动程序,可以用来组合多个连接驱动程序。它在请求时SMTP服务器不可用的情况下提供冗余。的数组作为构造函数参数
Swift_Connection
对象实例,甚至可以嵌入其他Swift_Connection_Multi
实例(即使这样做的好处可能有点模糊)Swift_Connection_Rotator最后一个,是不是比
Swift_Connection_Multi
通过跟踪宕机服务器,并管理“活跃”服务器的轮换。如何使用它超出了本食谱的范围,您应该参考Swift Mailer文欧宝官网下载app档.
使用谷歌Mail SMTP服务器
为什么要使用gmail帐户发送电子邮件?
- 你不需要设置和维护SMTP服务器
- 你不会被hotmail用户(或类似用户)标记为垃圾邮件
- 你的gmail账户里有一份复印件
发送邮件
,便于调试
局限性是什么?
- 你需要一个gmail账户
- SMTP over SSL的协商时间比普通的SMTP协商时间长
- 您不能从任意电子邮件地址发送电子邮件(但您可以在gmail设置/帐户中添加一个新的发送邮件地址)
下面是如何配置Swift对象:
美元的连接=新Swift_Connection_SMTP(“smtp.gmail.com”,465, Swift_Connection_SMTP::ENC_SSL);美元的连接->setUsername(“romain@gmail.com”);美元的连接->向setPassword(“SuperSecurePassword”);梅勒美元=新斯威夫特(美元的连接);
嵌入的图像
要在邮件中嵌入图像,需要在呈现内容之前从嵌入对象获取依赖于邮件的url。这里有一个例子,你可以这样做。
//创建mailer和message对象梅勒美元=新斯威夫特(新Swift_Connection_NativeMail());美元的消息=新Swift_Message(“测试邮件主题”);//内联图像美元图片=数组();美元图片[sob娱乐下载ymfony的]=新Swift_Message_Image(新Swift_File(sfConfig::得到(“sf_web_dir”).' /遗留/图片/ symfonob娱乐下载y.gif '));美元图片[“迅速”]=新Swift_Message_Image(新Swift_File(sfConfig::得到(“sf_web_dir”).' /遗留/图片/ swift.jpg '));imageReferences美元=数组();foreach(美元图片作为美元的名字= >美元图片){imageReferences美元[美元的名字]=美元的消息->附加(美元图片);}//渲染消息部分mailContext美元=数组(“名字”= >“John Doe”,“图片”= >imageReferences美元);美元的消息->附加(新Swift_Message_Part(这个美元->getPartial(“邮件/ mailHtmlBody”,mailContext美元),“text / html”));美元的消息->附加(新Swift_Message_Part(这个美元->getPartial(“邮件/ mailTextBody”,mailContext美元),“文本/普通”));/ /发送梅勒美元->发送(美元的消息,mailTo美元,mailFrom美元);梅勒美元->断开连接();
现在在你的组件/部分模板中,你可以很容易地显示这些附加的图片,就像这样:
< img src = " < ?PHP echo $images['ob娱乐下载symfony'];?>" alt="ob娱乐下载Symfony Project" /> .
这不是很容易吗?
附件
将文档附加到邮件中就像你期望的那样简单:
美元的消息->附加(新Swift_Message_Attachment(新Swift_File(美元的文件),美元的文件名,mime_type美元));
收件人列表
一封邮件通常需要多个收件人或副本。这是使用Swift_RecipientList
类。
接受美元=新Swift_RecipientList();接受美元->遭受(美元,);接受美元->addCc(cc美元);接受美元->addBcc(bcc美元);
如果你在循环发送电子邮件,不要忘记- >冲洗()
你的$收件人列表,否则你将很难解释为什么有人收到了500份相同的邮件列表。
从任务发送电子邮件
这个过程与从一个动作开始完全相同,只有一点不同:您不能使用sfAction
方法了。
你需要使用get_partial ()
而且get_component ()
函数PartialHelper
而不是sfAction: getPartial ()
而且sfAction: getComponent ()
方法。
提示
要从应用程序中的任何地方加载一个helper,你可以使用以下方法:
sfProjectConfiguration::getActive()->loadHelpers(“部分”,“Url”,“MyHelper”);
获取记录
本作品采用创作共用署名-非商业性-禁止派生作品3.0未移植许可协议授权。